连接Crossbar一般情况下用FindInterface接口就是可以的,现在如果有多个Crossbar基本信息是相同的,通过FindInterface自动创建的就可能会有点问题,这时通过名字、或DevPath匹配来创建Crossbar。
更改Crossbar内部连接可能使用下列方法(转)
IAMCrossbar *pXBar1;
hr = pCossbar->QueryInterface(IID_IAMCrossbar, (void**)&pXBar1);
// 连接Crossbar
if( S_OK == hr )
{
long OutputPinCount;
long InputPinCount;
long PinIndexRelated;
long PhysicalType;
long inPort = ni;
long outPort = no;
pXBar1->get_PinCounts(&OutputPinCount,&InputPinCount);
for(int i =0;i<InputPinCount;i++)
{
pXBar1->get_CrossbarPinInfo(TRUE,i,&PinIndexRelated,&PhysicalType);
if(PhysConn_Video_Composite==PhysicalType)
{
inPort = i;
break;
}
}
for(int i =0;i<OutputPinCount;i++)
{
pXBar1->get_CrossbarPinInfo(FALSE,i,&PinIndexRelated,&PhysicalType);
if(PhysConn_Video_VideoDecoder==PhysicalType)
{
outPort = i;
break;
}
}
if(S_OK==pXBar1->CanRoute(outPort,inPort))
{
pXBar1->Route(outPort,inPort);
}
pXBar1->Release();
}
}