ホーム › Media.DeviceManager › IWMDMMetaData
IWMDMMetaData
COMメソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT AddItem(WMDM_TAG_DATATYPE Type, LPWSTR pwszTagName, BYTE* pValue, DWORD iLength)
| Type | WMDM_TAG_DATATYPE | in | 追加するメタデータ項目のデータ型を示すWMDM_TAG_DATATYPE列挙値。 |
| pwszTagName | LPWSTR | in | メタデータタグの名前を表すワイド文字列。 |
| pValue | BYTE* | inoptional | メタデータ値を保持するバイトバッファーへのポインター。 |
| iLength | DWORD | in | 値バッファーの長さをバイト単位で指定するDWORD値。 |
vtbl 4 HRESULT QueryByName(LPWSTR pwszTagName, WMDM_TAG_DATATYPE* pType, BYTE** pValue, DWORD* pcbLength)
| pwszTagName | LPWSTR | in | 問い合わせるメタデータタグの名前を表すワイド文字列。 |
| pType | WMDM_TAG_DATATYPE* | out | 取得した項目のデータ型を受け取るWMDM_TAG_DATATYPEへの出力ポインター。 |
| pValue | BYTE** | out | 取得した値バッファーを受け取る出力ポインター。呼び出し側でCoTaskMemFreeにて解放する。 |
| pcbLength | DWORD* | out | 取得した値の長さをバイト単位で受け取るDWORDへの出力ポインター。 |
vtbl 5 HRESULT QueryByIndex(DWORD iIndex, WORD** ppwszName, WMDM_TAG_DATATYPE* pType, BYTE** ppValue, DWORD* pcbLength)
| iIndex | DWORD | in | 取得する項目の0始まりのインデックスを示すDWORD値。 |
| ppwszName | WORD** | out | 取得した項目名を表すワイド文字列を受け取る出力ポインター。 |
| pType | WMDM_TAG_DATATYPE* | out | 取得した項目のデータ型を受け取るWMDM_TAG_DATATYPEへの出力ポインター。 |
| ppValue | BYTE** | out | 取得した値バッファーを受け取る出力ポインター。 |
| pcbLength | DWORD* | out | 取得した値の長さをバイト単位で受け取るDWORDへの出力ポインター。 |
| iCount | DWORD* | out | 保持するメタデータ項目の総数を受け取るDWORDへの出力ポインター。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IWMDMMetaData "{EC3B0663-0951-460A-9A80-0DCEED3C043C}" #usecom global IWMDMMetaData IID_IWMDMMetaData "{}" #comfunc global IWMDMMetaData_AddItem 3 int,wstr,var,int #comfunc global IWMDMMetaData_QueryByName 4 wstr,var,var,var #comfunc global IWMDMMetaData_QueryByIndex 5 int,var,var,var,var #comfunc global IWMDMMetaData_GetItemCount 6 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMDMMetaData "{EC3B0663-0951-460A-9A80-0DCEED3C043C}" #usecom global IWMDMMetaData IID_IWMDMMetaData "{}" #comfunc global IWMDMMetaData_AddItem 3 int,wstr,sptr,int #comfunc global IWMDMMetaData_QueryByName 4 wstr,sptr,sptr,sptr #comfunc global IWMDMMetaData_QueryByIndex 5 int,sptr,sptr,sptr,sptr #comfunc global IWMDMMetaData_GetItemCount 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。