IWMHeaderInfo2
COM公式ドキュメント
IWMHeaderInfo2 インターフェイスは、ファイル内のコンテンツを作成するために使用されたコーデックに関する情報を公開します。IWMHeaderInfo2 インターフェイスは、メタデータエディターオブジェクト、ライターオブジェクト、リーダーオブジェクト、および同期リーダーオブジェクトによって実装されます。
解説(Remarks)
メタデータ編集のためのライターの使用については、To Edit Metadata with the Writer を参照してください。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetCodecInfoCount メソッドは、情報が利用可能なコーデックの数を取得します。
| pcCodecInfos | DWORD* | out | 情報が利用可能なコーデックの数へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドと GetCodecInfo を使用して、コーデック情報を列挙します。
GetCodecInfo メソッドは、ファイルのコンテンツを作成するために使用されるコーデックに関する情報を取得します。
| wIndex | DWORD | in | 0 から始まるコーデックのインデックスを格納する DWORD。 |
| pcchName | WORD* | inout | 入力時は、pwszName の長さ(ワイド文字単位)へのポインター。出力時は、pwszName で使用される文字数へのポインター。これには終端の null 文字が含まれます。 |
| pwszName | LPWSTR | out | コーデックの名前がコピーされる、ワイド文字の null で終わる文字列バッファーへのポインター。 |
| pcchDescription | WORD* | inout | 入力時は、pwszDescription の長さ(ワイド文字単位)へのポインター。出力時は、pwszDescription で使用される文字数へのポインター。これには終端の null 文字が含まれます。 |
| pwszDescription | LPWSTR | out | コーデックの説明がコピーされる、ワイド文字の null で終わる文字列バッファーへのポインター。 |
| pCodecType | WMT_CODEC_INFO_TYPE* | out | WMT_CODEC_INFO_TYPE 列挙型のメンバーの 1 つへのポインター。 |
| pcbCodecInfo | WORD* | inout | 入力時は、pbCodecInfo の長さ(バイト単位)へのポインター。出力時は、pbCodecInfo で使用されるバイト数へのポインター。 |
| pbCodecInfo | BYTE* | out | バイト配列へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
解説(Remarks)
GetCodecInfo は 2 回呼び出す必要があります。最初の呼び出しでは、pwszName、pwszDescription、および pbCodecInfo に NULL を渡します。戻り時に、pcchName と pcchDescription が指す値には文字数が設定されます。これらには、名前文字列を pcchName に、説明文字列を pcchDescription に保持するために必要な、終端の null 文字が含まれます。pcbCodecInfo が指す値には、コーデック情報を保持するために必要なバッファーサイズが設定されます。これらのサイズを使用して、各値を受け取るために必要な量のメモリを割り当てることができます。2 回目の呼び出しでは、pwszName、pwszDescription、および pbCodecInfo としてバッファーへのポインターを渡します。
このメソッドと GetCodecInfoCount メソッドを使用して、コーデック情報を列挙します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMHeaderInfo2 "{15CF9781-454E-482E-B393-85FAE487A810}" #usecom global IWMHeaderInfo2 IID_IWMHeaderInfo2 "{}" #comfunc global IWMHeaderInfo2_GetCodecInfoCount 15 var #comfunc global IWMHeaderInfo2_GetCodecInfo 16 int,var,var,var,var,var,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMHeaderInfo2 "{15CF9781-454E-482E-B393-85FAE487A810}" #usecom global IWMHeaderInfo2 IID_IWMHeaderInfo2 "{}" #comfunc global IWMHeaderInfo2_GetCodecInfoCount 15 sptr #comfunc global IWMHeaderInfo2_GetCodecInfo 16 int,sptr,sptr,sptr,sptr,sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。