IMediaParamInfo
COM公式ドキュメント
IMediaParamInfo インターフェースは、オブジェクトがサポートするパラメーターに関する情報を取得します。オブジェクトがサポートするパラメーターの集合は、アプリケーションの存続期間中に変化しません。パラメーター値を設定するには、IMediaParams インターフェースを使用します。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetParamCount メソッドは、オブジェクトがサポートするパラメーターの数を取得します。
| pdwParams | DWORD* | out | パラメーターの数を受け取る変数へのポインター。 |
戻り値
GetParamInfo メソッドは、指定されたパラメーターに関する情報を取得します。
| dwParamIndex | DWORD | in | パラメーターの 0 から始まるインデックス。 |
| pInfo | MP_PARAMINFO* | out | パラメーター情報が格納される MP_PARAMINFO 構造体へのポインター。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| インデックスが範囲外です。 | |
| NULL ポインター引数。 | |
| 成功。 |
解説(Remarks)
オブジェクトがサポートするパラメーターの数を取得するには、GetParamCount メソッドを呼び出します。
GetParamText メソッドは、パラメーターを説明する一連のテキスト文字列を取得します。
| dwParamIndex | DWORD | in | パラメーターの 0 から始まるインデックス。 |
| ppwchText | WORD** | out | 一連の Unicode™ 文字列へのポインターを受け取る変数のアドレス。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| インデックスが範囲外です。 | |
| NULL ポインター引数。 | |
| 成功。 |
解説(Remarks)
メソッドが成功すると、*ppwchText は次の形式の文字列を指します。
Name\0Unit\0Enum1\0Enum2\0...EnumN\0\0
各項目の意味は次のとおりです。
- Name はパラメーターの名前です。
- Unit は単位の名前です(例: ミリ秒)。
- Enum1 から
- EnumN は、パラメーターの列挙値に対する説明的な名前です。(型が MPT_ENUM のパラメーターにのみ適用されます。)
オブジェクトは CoTaskMemAlloc 関数を使用して文字列用のメモリを割り当てます。このメソッドを呼び出した後は、CoTaskMemFree を呼び出してバッファーを解放してください。
GetNumTimeFormats メソッドは、オブジェクトがサポートする時間フォーマットの数を取得します。
| pdwNumTimeFormats | DWORD* | out | サポートされる時間フォーマットの数を受け取る変数へのポインター。 |
戻り値
GetSupportedTimeFormat メソッドは、サポートされている時間フォーマットを取得します。
| dwFormatIndex | DWORD | in | 取得する時間フォーマットのインデックス。 |
| pguidTimeFormat | GUID* | out | 時間フォーマットの GUID を受け取る変数へのポインター。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| インデックスが範囲外です。 | |
| NULL ポインター引数。 | |
| 成功。 |
解説(Remarks)
オブジェクトがサポートする時間フォーマットの数を取得するには、GetNumTimeFormats メソッドを呼び出します。
GetCurrentTimeFormat メソッドは、現在の時間フォーマットを取得します。
| pguidTimeFormat | GUID* | out | 時間フォーマットの GUID を受け取る変数へのポインター。 |
| pTimeData | DWORD* | out | 新しいフォーマットの測定単位を指定する MP_TIMEDATA 値を受け取る変数へのポインター。 |
戻り値
解説(Remarks)
pTimeData パラメーターで返される値の意味は、時間フォーマットの GUID によって異なります。詳細については、IMediaParams::SetTimeFormat を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMediaParamInfo "{6D6CBB60-A223-44AA-842F-A2F06750BE6D}" #usecom global IMediaParamInfo IID_IMediaParamInfo "{}" #comfunc global IMediaParamInfo_GetParamCount 3 var #comfunc global IMediaParamInfo_GetParamInfo 4 int,var #comfunc global IMediaParamInfo_GetParamText 5 int,var #comfunc global IMediaParamInfo_GetNumTimeFormats 6 var #comfunc global IMediaParamInfo_GetSupportedTimeFormat 7 int,var #comfunc global IMediaParamInfo_GetCurrentTimeFormat 8 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IMediaParamInfo "{6D6CBB60-A223-44AA-842F-A2F06750BE6D}" #usecom global IMediaParamInfo IID_IMediaParamInfo "{}" #comfunc global IMediaParamInfo_GetParamCount 3 sptr #comfunc global IMediaParamInfo_GetParamInfo 4 int,sptr #comfunc global IMediaParamInfo_GetParamText 5 int,sptr #comfunc global IMediaParamInfo_GetNumTimeFormats 6 sptr #comfunc global IMediaParamInfo_GetSupportedTimeFormat 7 int,sptr #comfunc global IMediaParamInfo_GetCurrentTimeFormat 8 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。