Win32 API 日本語リファレンス
ホームMedia.DirectShow › IBDA_Topology

IBDA_Topology

COM
IID79b56888-7fea-4690-b45d-38fd3c7849be継承元IUnknown自前メソッド開始 vtbl3

メソッド 11

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetNodeTypes(DWORD* pulcNodeTypes, DWORD ulcNodeTypesMax, DWORD* rgulNodeTypes)
pulcNodeTypesDWORD*inout実際に返されたノード種別数を受け取るDWORDへのポインタ。
ulcNodeTypesMaxDWORDinrgulNodeTypes配列に格納可能な最大要素数を指定する。
rgulNodeTypesDWORD*inoutフィルタがサポートするノード種別を受け取るDWORD配列へのポインタ。
vtbl 4 HRESULT GetNodeDescriptors(DWORD* ulcNodeDescriptors, DWORD ulcNodeDescriptorsMax, BDANODE_DESCRIPTOR* rgNodeDescriptors)
ulcNodeDescriptorsDWORD*inout実際に返されたノード記述子数を受け取るDWORDへのポインタ。
ulcNodeDescriptorsMaxDWORDinrgNodeDescriptors配列に格納可能な最大要素数を指定する。
rgNodeDescriptorsBDANODE_DESCRIPTOR*inout各ノードの記述子を受け取るBDANODE_DESCRIPTOR配列へのポインタ。
vtbl 5 HRESULT GetNodeInterfaces(DWORD ulNodeType, DWORD* pulcInterfaces, DWORD ulcInterfacesMax, GUID* rgguidInterfaces)
ulNodeTypeDWORDinインターフェースを問い合わせるノード種別を指定する。
pulcInterfacesDWORD*inout実際に返されたインターフェース数を受け取るDWORDへのポインタ。
ulcInterfacesMaxDWORDinrgguidInterfaces配列に格納可能な最大要素数を指定する。
rgguidInterfacesGUID*inoutノードがサポートするインターフェースのGUID配列を受け取るポインタ。
vtbl 6 HRESULT GetPinTypes(DWORD* pulcPinTypes, DWORD ulcPinTypesMax, DWORD* rgulPinTypes)
pulcPinTypesDWORD*inout実際に返されたピン種別数を受け取るDWORDへのポインタ。
ulcPinTypesMaxDWORDinrgulPinTypes配列に格納可能な最大要素数を指定する。
rgulPinTypesDWORD*inoutサポートされるピン種別を受け取るDWORD配列へのポインタ。
vtbl 7 HRESULT GetTemplateConnections(DWORD* pulcConnections, DWORD ulcConnectionsMax, BDA_TEMPLATE_CONNECTION* rgConnections)
pulcConnectionsDWORD*inout実際に返された接続定義数を受け取るDWORDへのポインタ。
ulcConnectionsMaxDWORDinrgConnections配列に格納可能な最大要素数を指定する。
rgConnectionsBDA_TEMPLATE_CONNECTION*inoutノード間の接続テンプレートを受け取るBDA_TEMPLATE_CONNECTION配列へのポインタ。
vtbl 8 HRESULT CreatePin(DWORD ulPinType, DWORD* pulPinId)
ulPinTypeDWORDin作成するピンの種別を指定する。
pulPinIdDWORD*inout作成されたピンの識別子を受け取るDWORDへのポインタ。
vtbl 9 HRESULT DeletePin(DWORD ulPinId)
ulPinIdDWORDin削除するピンの識別子を指定する。
vtbl 10 HRESULT SetMediaType(DWORD ulPinId, AM_MEDIA_TYPE* pMediaType)
ulPinIdDWORDinメディア型を設定する対象ピンの識別子を指定する。
pMediaTypeAM_MEDIA_TYPE*in設定するメディア型を示すAM_MEDIA_TYPE構造体へのポインタ。
vtbl 11 HRESULT SetMedium(DWORD ulPinId, REGPINMEDIUM* pMedium)
ulPinIdDWORDinメディウムを設定する対象ピンの識別子を指定する。
pMediumREGPINMEDIUM*in設定するピンメディウムを示すREGPINMEDIUM構造体へのポインタ。
vtbl 12 HRESULT CreateTopology(DWORD ulInputPinId, DWORD ulOutputPinId)
ulInputPinIdDWORDinトポロジ接続元となる入力ピンの識別子を指定する。
ulOutputPinIdDWORDinトポロジ接続先となる出力ピンの識別子を指定する。
vtbl 13 HRESULT GetControlNode(DWORD ulInputPinId, DWORD ulOutputPinId, DWORD ulNodeType, IUnknown** ppControlNode)
ulInputPinIdDWORDin対象とする入力ピンの識別子を指定する。
ulOutputPinIdDWORDin対象とする出力ピンの識別子を指定する。
ulNodeTypeDWORDin制御ノードを取得するノード種別を指定する。
ppControlNodeIUnknown**inout指定ノードの制御インターフェース(IUnknown)を受け取る出力ポインタ。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IBDA_Topology "{79B56888-7FEA-4690-B45D-38FD3C7849BE}"
#usecom global IBDA_Topology IID_IBDA_Topology "{}"
#comfunc global IBDA_Topology_GetNodeTypes            3 var,int,var
#comfunc global IBDA_Topology_GetNodeDescriptors      4 var,int,var
#comfunc global IBDA_Topology_GetNodeInterfaces       5 int,var,int,var
#comfunc global IBDA_Topology_GetPinTypes             6 var,int,var
#comfunc global IBDA_Topology_GetTemplateConnections  7 var,int,var
#comfunc global IBDA_Topology_CreatePin               8 int,var
#comfunc global IBDA_Topology_DeletePin               9 int
#comfunc global IBDA_Topology_SetMediaType            10 int,var
#comfunc global IBDA_Topology_SetMedium               11 int,var
#comfunc global IBDA_Topology_CreateTopology          12 int,int
#comfunc global IBDA_Topology_GetControlNode          13 int,int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。