ホーム › Media.DirectShow › IBDA_Topology
IBDA_Topology
COMメソッド 11
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| pulcNodeTypes | DWORD* | inout | 実際に返されたノード種別数を受け取るDWORDへのポインタ。 |
| ulcNodeTypesMax | DWORD | in | rgulNodeTypes配列に格納可能な最大要素数を指定する。 |
| rgulNodeTypes | DWORD* | inout | フィルタがサポートするノード種別を受け取るDWORD配列へのポインタ。 |
vtbl 4 HRESULT GetNodeDescriptors(DWORD* ulcNodeDescriptors, DWORD ulcNodeDescriptorsMax, BDANODE_DESCRIPTOR* rgNodeDescriptors)
| ulcNodeDescriptors | DWORD* | inout | 実際に返されたノード記述子数を受け取るDWORDへのポインタ。 |
| ulcNodeDescriptorsMax | DWORD | in | rgNodeDescriptors配列に格納可能な最大要素数を指定する。 |
| rgNodeDescriptors | BDANODE_DESCRIPTOR* | inout | 各ノードの記述子を受け取るBDANODE_DESCRIPTOR配列へのポインタ。 |
vtbl 5 HRESULT GetNodeInterfaces(DWORD ulNodeType, DWORD* pulcInterfaces, DWORD ulcInterfacesMax, GUID* rgguidInterfaces)
| ulNodeType | DWORD | in | インターフェースを問い合わせるノード種別を指定する。 |
| pulcInterfaces | DWORD* | inout | 実際に返されたインターフェース数を受け取るDWORDへのポインタ。 |
| ulcInterfacesMax | DWORD | in | rgguidInterfaces配列に格納可能な最大要素数を指定する。 |
| rgguidInterfaces | GUID* | inout | ノードがサポートするインターフェースのGUID配列を受け取るポインタ。 |
| pulcPinTypes | DWORD* | inout | 実際に返されたピン種別数を受け取るDWORDへのポインタ。 |
| ulcPinTypesMax | DWORD | in | rgulPinTypes配列に格納可能な最大要素数を指定する。 |
| rgulPinTypes | DWORD* | inout | サポートされるピン種別を受け取るDWORD配列へのポインタ。 |
vtbl 7 HRESULT GetTemplateConnections(DWORD* pulcConnections, DWORD ulcConnectionsMax, BDA_TEMPLATE_CONNECTION* rgConnections)
| pulcConnections | DWORD* | inout | 実際に返された接続定義数を受け取るDWORDへのポインタ。 |
| ulcConnectionsMax | DWORD | in | rgConnections配列に格納可能な最大要素数を指定する。 |
| rgConnections | BDA_TEMPLATE_CONNECTION* | inout | ノード間の接続テンプレートを受け取るBDA_TEMPLATE_CONNECTION配列へのポインタ。 |
| ulPinType | DWORD | in | 作成するピンの種別を指定する。 |
| pulPinId | DWORD* | inout | 作成されたピンの識別子を受け取るDWORDへのポインタ。 |
| ulPinId | DWORD | in | 削除するピンの識別子を指定する。 |
vtbl 10 HRESULT SetMediaType(DWORD ulPinId, AM_MEDIA_TYPE* pMediaType)
| ulPinId | DWORD | in | メディア型を設定する対象ピンの識別子を指定する。 |
| pMediaType | AM_MEDIA_TYPE* | in | 設定するメディア型を示すAM_MEDIA_TYPE構造体へのポインタ。 |
vtbl 11 HRESULT SetMedium(DWORD ulPinId, REGPINMEDIUM* pMedium)
| ulPinId | DWORD | in | メディウムを設定する対象ピンの識別子を指定する。 |
| pMedium | REGPINMEDIUM* | in | 設定するピンメディウムを示すREGPINMEDIUM構造体へのポインタ。 |
| ulInputPinId | DWORD | in | トポロジ接続元となる入力ピンの識別子を指定する。 |
| ulOutputPinId | DWORD | in | トポロジ接続先となる出力ピンの識別子を指定する。 |
vtbl 13 HRESULT GetControlNode(DWORD ulInputPinId, DWORD ulOutputPinId, DWORD ulNodeType, IUnknown** ppControlNode)
| ulInputPinId | DWORD | in | 対象とする入力ピンの識別子を指定する。 |
| ulOutputPinId | DWORD | in | 対象とする出力ピンの識別子を指定する。 |
| ulNodeType | DWORD | in | 制御ノードを取得するノード種別を指定する。 |
| ppControlNode | IUnknown** | 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 指定が可能。#define global IID_IBDA_Topology "{79B56888-7FEA-4690-B45D-38FD3C7849BE}" #usecom global IBDA_Topology IID_IBDA_Topology "{}" #comfunc global IBDA_Topology_GetNodeTypes 3 sptr,int,sptr #comfunc global IBDA_Topology_GetNodeDescriptors 4 sptr,int,sptr #comfunc global IBDA_Topology_GetNodeInterfaces 5 int,sptr,int,sptr #comfunc global IBDA_Topology_GetPinTypes 6 sptr,int,sptr #comfunc global IBDA_Topology_GetTemplateConnections 7 sptr,int,sptr #comfunc global IBDA_Topology_CreatePin 8 int,sptr #comfunc global IBDA_Topology_DeletePin 9 int #comfunc global IBDA_Topology_SetMediaType 10 int,sptr #comfunc global IBDA_Topology_SetMedium 11 int,sptr #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が無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。