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

IAMStats

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDbc9bcf80-dcd2-11d2-abf6-00a0c905f375継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IAMStats インターフェイスは、Filter Graph Manager からパフォーマンスデータを取得します。

解説(Remarks)

各統計は、名前とインデックスによって定義されます。名前からインデックスを取得するには、GetIndex メソッドを使用します。値は常に double 型です。次の統計があらかじめ定義されています。

名前 説明
RenderFile IGraphBuilder::RenderFile の各呼び出しに要した時間を測定します。
ConnectDirectInternal 2 つのフィルターを接続するのに要した時間を測定します。
Build Mapper Cache 登録済みフィルターに関する情報をキャッシュするのに要した時間を測定します(Filter Mapper オブジェクトが使用します)。
Process Category CategoryName 特定のカテゴリに属するフィルターに関する情報をキャッシュするのに要した時間を測定します。CategoryName はフィルターカテゴリのフレンドリ名です。(Filter Categories を参照してください。)

これらの統計はいずれも、値がミリ秒単位の時間を表します。

メソッド 6

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT Reset()

Reset メソッドは、すべての統計をゼロにリセットします。

戻り値

成功した場合は S_OK を、それ以外の場合は HRESULT エラーコードを返します。

vtbl 8 HRESULT get_Count(INT* plCount)

get_Count メソッドは、統計の数を取得します。

plCountINT*out統計の数を受け取ります。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が NULL ポインターです。
vtbl 9 HRESULT GetValueByIndex(INT lIndex, LPWSTR* szName, INT* lCount, DOUBLE* dLast, DOUBLE* dAverage, DOUBLE* dStdDev, DOUBLE* dMin, DOUBLE* dMax)

GetValueByIndex メソッドは、インデックスによって統計を取得します。

lIndexINTin統計の 0 から始まるインデックスです。
szNameLPWSTR*out統計の名前を受け取る変数へのポインターです。
lCountINT*out記録された値の数を受け取る変数へのポインターです。
dLastDOUBLE*out記録された最新の値を受け取る変数へのポインターです。
dAverageDOUBLE*out平均値を受け取る変数へのポインターです。
dStdDevDOUBLE*out値の標準偏差を受け取る変数へのポインターです。個数が 2 未満の場合、標準偏差は 0 になります。
dMinDOUBLE*out記録された最小値を受け取る変数へのポインターです。
dMaxDOUBLE*out記録された最大値を受け取る変数へのポインターです。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
インデックスが範囲外です。
E_OUTOFMEMORY
メモリが不足しています。
E_POINTER
引数が NULL ポインターです。

解説(Remarks)

呼び出し元は、szName で返される文字列を SysFreeString 関数を呼び出して解放する必要があります。

統計の数を取得するには、IAMStats::GetIndex を呼び出します。

vtbl 10 HRESULT GetValueByName(LPWSTR szName, INT* lIndex, INT* lCount, DOUBLE* dLast, DOUBLE* dAverage, DOUBLE* dStdDev, DOUBLE* dMin, DOUBLE* dMax)

GetValueByName メソッドは、名前によって統計を取得します。

szNameLPWSTRin統計の名前を指定します。
lIndexINT*outこの統計のインデックスを受け取る変数へのポインターです。
lCountINT*out記録された値の数を受け取る変数へのポインターです。
dLastDOUBLE*out記録された最新の値を受け取る変数へのポインターです。
dAverageDOUBLE*out平均値を受け取る変数へのポインターです。
dStdDevDOUBLE*out値の標準偏差を受け取る変数へのポインターです。個数が 2 未満の場合、標準偏差は 0 になります。
dMinDOUBLE*out記録された最小値を受け取る変数へのポインターです。
dMaxDOUBLE*out記録された最大値を受け取る変数へのポインターです。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
この名前に一致するものがありません。
E_POINTER
引数が NULL ポインターです。
vtbl 11 HRESULT GetIndex(LPWSTR szName, INT lCreate, INT* plIndex)

GetIndex メソッドは、名前付き統計のインデックスを取得するか、新しい統計を作成します。

szNameLPWSTRin統計の名前を指定します。
lCreateINTin統計がまだ定義されていない場合に、その統計を作成するかどうかを指定します。値が TRUE の場合、その名前を持つ既存のエントリが見つからないと、メソッドは統計用の新しいインデックスを作成します。値が FALSE の場合、統計がまだ存在しないと、メソッドは失敗します。
plIndexINT*outインデックスを受け取ります。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
この名前に一致するものがありません。
E_POINTER
引数が NULL ポインターです。
vtbl 12 HRESULT AddValue(INT lIndex, DOUBLE dValue)

AddValue メソッドは、新しい値を記録します。

lIndexINTin統計のインデックスを指定します。
dValueDOUBLEin記録する値を指定します。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
インデックスが範囲外です。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

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

出力引数:
#define global IID_IAMStats "{BC9BCF80-DCD2-11D2-ABF6-00A0C905F375}"
#usecom global IAMStats IID_IAMStats "{}"
#comfunc global IAMStats_Reset            7
#comfunc global IAMStats_get_Count        8 var
#comfunc global IAMStats_GetValueByIndex  9 int,var,var,var,var,var,var,var
#comfunc global IAMStats_GetValueByName   10 wstr,var,var,var,var,var,var,var
#comfunc global IAMStats_GetIndex         11 wstr,int,var
#comfunc global IAMStats_AddValue         12 int,double
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。