64,666
社区成员
发帖
与我相关
我的任务
分享
hr = pKsTopologyInfo->CreateNodeInstance(i, __uuidof(IExtensionUnit), (void **)&pExtensionUnit);[
HRESULT FindExtensionNode(IKsTopologyInfo *pKsTopologyInfo, GUID guid, DWORD *node)
{
HRESULT hr = E_FAIL;
DWORD dwNumNodes = 0;
GUID guidNodeType;
IKsControl *pKsControl = NULL;
ULONG ulBytesReturned = 0;
KSP_NODE ExtensionProp;
if(!pKsTopologyInfo || !node)
return E_POINTER;
// Retrieve the number of nodes in the filter
hr = pKsTopologyInfo->get_NumNodes(&dwNumNodes);
if(!SUCCEEDED(hr))
return hr;
if(dwNumNodes == 0)
return E_FAIL;
// Find the extension unit node that corresponds to the given GUID
for(unsigned int i = 0; i < dwNumNodes; i++)
{
hr = E_FAIL;
pKsTopologyInfo->get_NodeType(i, &guidNodeType);
if(IsEqualGUID(guidNodeType, KSNODETYPE_DEV_SPECIFIC))
{
printf("found one xu node\n");
IExtensionUnit* pExtensionUnit = NULL;
hr = pKsTopologyInfo->CreateNodeInstance(i, __uuidof(IExtensionUnit), (void **)&pExtensionUnit);
if(SUCCEEDED(hr))
{
ExtensionProp.Property.Set = guid;
ExtensionProp.Property.Id = 0;
ExtensionProp.Property.Flags = KSPROPERTY_TYPE_SETSUPPORT | KSPROPERTY_TYPE_TOPOLOGY;
ExtensionProp.NodeId = i;
ExtensionProp.Reserved = 0;
*node = i;
return hr;
/*
hr = pKsControl->KsProperty((PKSPROPERTY)&ExtensionProp, sizeof(ExtensionProp), NULL, 0, &ulBytesReturned);
if(SUCCEEDED(hr))
{
*node = i;
break;
}
*/
}
else
{
printf("CreateNodeInstance failed - 0x%x\n", hr);
}
}
}
return hr;
}