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

IWMDMMetaData

COM
IIDec3b0663-0951-460a-9a80-0dceed3c043c継承元IUnknown自前メソッド開始 vtbl3

メソッド 4

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

vtbl 3 HRESULT AddItem(WMDM_TAG_DATATYPE Type, LPWSTR pwszTagName, BYTE* pValue, DWORD iLength)
TypeWMDM_TAG_DATATYPEin追加するメタデータ項目のデータ型を示すWMDM_TAG_DATATYPE列挙値。
pwszTagNameLPWSTRinメタデータタグの名前を表すワイド文字列。
pValueBYTE*inoptionalメタデータ値を保持するバイトバッファーへのポインター。
iLengthDWORDin値バッファーの長さをバイト単位で指定するDWORD値。
vtbl 4 HRESULT QueryByName(LPWSTR pwszTagName, WMDM_TAG_DATATYPE* pType, BYTE** pValue, DWORD* pcbLength)
pwszTagNameLPWSTRin問い合わせるメタデータタグの名前を表すワイド文字列。
pTypeWMDM_TAG_DATATYPE*out取得した項目のデータ型を受け取るWMDM_TAG_DATATYPEへの出力ポインター。
pValueBYTE**out取得した値バッファーを受け取る出力ポインター。呼び出し側でCoTaskMemFreeにて解放する。
pcbLengthDWORD*out取得した値の長さをバイト単位で受け取るDWORDへの出力ポインター。
vtbl 5 HRESULT QueryByIndex(DWORD iIndex, WORD** ppwszName, WMDM_TAG_DATATYPE* pType, BYTE** ppValue, DWORD* pcbLength)
iIndexDWORDin取得する項目の0始まりのインデックスを示すDWORD値。
ppwszNameWORD**out取得した項目名を表すワイド文字列を受け取る出力ポインター。
pTypeWMDM_TAG_DATATYPE*out取得した項目のデータ型を受け取るWMDM_TAG_DATATYPEへの出力ポインター。
ppValueBYTE**out取得した値バッファーを受け取る出力ポインター。
pcbLengthDWORD*out取得した値の長さをバイト単位で受け取るDWORDへの出力ポインター。
vtbl 6 HRESULT GetItemCount(DWORD* iCount)
iCountDWORD*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 方式にも切替可。