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

IWMHeaderInfo

COM
IID96406bda-2b2b-11d3-b36b-00c04f6108ff継承元IUnknown自前メソッド開始 vtbl3

メソッド 12

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

vtbl 3 HRESULT GetAttributeCount(WORD wStreamNum, WORD* pcAttributes)
wStreamNumWORDin属性数を数える対象ストリーム番号。0でファイル全体。
pcAttributesWORD*out属性の総数を受け取る出力先。WORDポインタ。
vtbl 4 HRESULT GetAttributeByIndex(WORD wIndex, WORD* pwStreamNum, LPWSTR pwszName, WORD* pcchNameLen, WMT_ATTR_DATATYPE* pType, BYTE* pValue, WORD* pcbLength)
wIndexWORDin取得対象属性の0起点インデックス。
pwStreamNumWORD*inout属性が属するストリーム番号を受け取る出力先。
pwszNameLPWSTRout属性名を受け取る文字列バッファ。NULLで長さ問い合わせ。
pcchNameLenWORD*inout入力で名前バッファ確保文字数、出力で必要文字数を示すポインタ。
pTypeWMT_ATTR_DATATYPE*out属性値の型WMT_ATTR_DATATYPEを受け取る出力先。
pValueBYTE*out属性値を受け取るバイトバッファ。NULLでサイズ問い合わせ。
pcbLengthWORD*inout入力で確保バイト数、出力で実バイト数を示すWORDポインタ。
vtbl 5 HRESULT GetAttributeByName(WORD* pwStreamNum, LPWSTR pszName, WMT_ATTR_DATATYPE* pType, BYTE* pValue, WORD* pcbLength)
pwStreamNumWORD*inout属性を検索するストリーム番号の入出力先。0でファイル全体。
pszNameLPWSTRin取得対象の属性名を指す広域文字列。
pTypeWMT_ATTR_DATATYPE*out属性値の型WMT_ATTR_DATATYPEを受け取る出力先。
pValueBYTE*out属性値を受け取るバイトバッファ。NULLでサイズ問い合わせ。
pcbLengthWORD*inout入力で確保バイト数、出力で実バイト数を示すWORDポインタ。
vtbl 6 HRESULT SetAttribute(WORD wStreamNum, LPWSTR pszName, WMT_ATTR_DATATYPE Type, BYTE* pValue, WORD cbLength)
wStreamNumWORDin属性を設定する対象ストリーム番号。0でファイル全体。
pszNameLPWSTRin設定する属性名を指す広域文字列。
TypeWMT_ATTR_DATATYPEin属性値の型を示すWMT_ATTR_DATATYPE列挙値。
pValueBYTE*in設定する属性値が格納されたバイトバッファへのポインタ。
cbLengthWORDin属性値のバイト長を指定する。
vtbl 7 HRESULT GetMarkerCount(WORD* pcMarkers)
pcMarkersWORD*outファイル内のマーカー総数を受け取る出力先。WORDポインタ。
vtbl 8 HRESULT GetMarker(WORD wIndex, LPWSTR pwszMarkerName, WORD* pcchMarkerNameLen, ULONGLONG* pcnsMarkerTime)
wIndexWORDin取得対象マーカーの0起点インデックス。
pwszMarkerNameLPWSTRoutマーカー名を受け取る文字列バッファ。NULLで長さ問い合わせ。
pcchMarkerNameLenWORD*inout入力で確保文字数、出力で必要文字数を示すWORDポインタ。
pcnsMarkerTimeULONGLONG*outマーカー時刻を100ナノ秒単位で受け取る出力先。
vtbl 9 HRESULT AddMarker(LPWSTR pwszMarkerName, ULONGLONG cnsMarkerTime)
pwszMarkerNameLPWSTRin追加するマーカーの名前を指す広域文字列。
cnsMarkerTimeULONGLONGinマーカーを置く時刻を100ナノ秒単位で指定する。
vtbl 10 HRESULT RemoveMarker(WORD wIndex)
wIndexWORDin削除対象マーカーの0起点インデックス。
vtbl 11 HRESULT GetScriptCount(WORD* pcScripts)
pcScriptsWORD*outファイル内のスクリプトコマンド総数を受け取る出力先。WORDポインタ。
vtbl 12 HRESULT GetScript(WORD wIndex, LPWSTR pwszType, WORD* pcchTypeLen, LPWSTR pwszCommand, WORD* pcchCommandLen, ULONGLONG* pcnsScriptTime)
wIndexWORDin取得対象スクリプトの0起点インデックス。
pwszTypeLPWSTRoutスクリプトの種別文字列を受け取るバッファ。NULLで長さ問い合わせ。
pcchTypeLenWORD*inout入力で種別バッファ確保文字数、出力で必要文字数を示すポインタ。
pwszCommandLPWSTRoutスクリプトのコマンド文字列を受け取るバッファ。NULLで長さ問い合わせ。
pcchCommandLenWORD*inout入力でコマンドバッファ確保文字数、出力で必要文字数を示すポインタ。
pcnsScriptTimeULONGLONG*outスクリプト実行時刻を100ナノ秒単位で受け取る出力先。
vtbl 13 HRESULT AddScript(LPWSTR pwszType, LPWSTR pwszCommand, ULONGLONG cnsScriptTime)
pwszTypeLPWSTRin追加するスクリプトの種別を指す広域文字列。
pwszCommandLPWSTRin追加するスクリプトのコマンド本体を指す広域文字列。
cnsScriptTimeULONGLONGinスクリプトを実行する時刻を100ナノ秒単位で指定する。
vtbl 14 HRESULT RemoveScript(WORD wIndex)
wIndexWORDin削除対象スクリプトの0起点インデックス。

HSP用 COM定義

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

出力引数:
#define global IID_IWMHeaderInfo "{96406BDA-2B2B-11D3-B36B-00C04F6108FF}"
#usecom global IWMHeaderInfo IID_IWMHeaderInfo "{}"
#comfunc global IWMHeaderInfo_GetAttributeCount    3 int,var
#comfunc global IWMHeaderInfo_GetAttributeByIndex  4 int,var,var,var,var,var,var
#comfunc global IWMHeaderInfo_GetAttributeByName   5 var,wstr,var,var,var
#comfunc global IWMHeaderInfo_SetAttribute         6 int,wstr,int,var,int
#comfunc global IWMHeaderInfo_GetMarkerCount       7 var
#comfunc global IWMHeaderInfo_GetMarker            8 int,var,var,var
#comfunc global IWMHeaderInfo_AddMarker            9 wstr,int64
#comfunc global IWMHeaderInfo_RemoveMarker         10 int
#comfunc global IWMHeaderInfo_GetScriptCount       11 var
#comfunc global IWMHeaderInfo_GetScript            12 int,var,var,var,var,var
#comfunc global IWMHeaderInfo_AddScript            13 wstr,wstr,int64
#comfunc global IWMHeaderInfo_RemoveScript         14 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。