PFND3DDDI_CHECKCOUNTER コールバック関数 (d3dumddi.h)

PFND3DDDI_CHECKCOUNTER は、カウンターを記述する情報を取得するために Direct3D ランタイムによって呼び出されます。 Windows ディスプレイ ドライバー モデル (WDDM) 1.3 以降のユーザー モード ディスプレイ ドライバーによって実装されている必要があります。

構文

PFND3DDDI_CHECKCOUNTER Pfnd3dddiCheckcounter;

HRESULT Pfnd3dddiCheckcounter(
  HANDLE hDevice,
  D3DDDIQUERYTYPE unnamedParam2,
  D3DDDI_COUNTER_TYPE *unnamedParam3,
  UINT *unnamedParam4,
  LPSTR unnamedParam5,
  UINT *pNameLength,
  LPSTR unnamedParam7,
  UINT *pUnitsLength,
  LPSTR unnamedParam9,
  UINT *pDescriptionLength
)
{...}

パラメーター

hDevice

[入力]ディスプレイ デバイスへのハンドル (グラフィックス コンテキスト)。

unnamedParam2

[入力] Counter は、情報が取得されるカウンター識別子を識別する D3DDDIQUERYTYPE 型の値です。

unnamedParam3

[out] pType は、カウンターが出力するデータ型を識別する D3DDDI_COUNTER_TYPE 列挙値を受け取る変数へのポインターです。

unnamedParam4

pActiveCounters [out] pActiveCounters は、 Counter パラメーターが識別するカウンター識別子の作成に割り当てられる同時にアクティブなカウンターの数を受け取る変数へのポインターです。

unnamedParam5

[出力、省略可能] pszName は、ドライバーがカウンター識別子の名前を含む NULL で終わる文字列を返す省略可能なポインターです。

NULL を指定できます。この場合、アプリは名前を必要としません。

pNameLength

[入力、出力、省略可能] pszName パラメーターが指定する NULL で終わる文字列のサイズ (バイト単位) を受け取る変数への省略可能なポインター。

pNameLength パラメーターと pszName パラメーターの値に関する制限事項を次に示します。

  • pNameLength には NULL を指定できます。この場合、アプリは名前または名前の長さを必要としません。
  • pszName が NULL で、pNameLength が NULL でない場合、pNameLength の入力値は無視され、文字列の長さ (終端の NULL 文字を含む) は pNameLength パラメーターを介して返される必要があります。
  • pszNamepNameLength の両方が NULL でない場合、ドライバーは pNameLength の入力値をチェックして、割り当てられたバッファーに十分な空き容量があることを確認し、pszName 文字列の長さ (終端の NULL 文字を含む) が pNameLength パラメーターを介して渡される必要があります。

unnamedParam7

[出力、省略可能] pszUnits は、カウンター識別子が測定する単位の名前を含む NULL で終わる文字列をドライバーが返す省略可能なポインターです。

NULL を指定できます。この場合、アプリは単位情報を必要としません。 詳細については、 pUnitsLength パラメーターの説明を参照してください。

pUnitsLength

[入力、出力、省略可能] pUnitsLength は、 pszUnits パラメーターが指定する NULL で終わる文字列のサイズ (バイト単位) を受け取る変数への省略可能なポインターです。

pUnitsLength パラメーターと pszUnits パラメーターの値に関する制限事項を次に示します。

  • pUnitsLength には NULL を指定できます。この場合、アプリはユニット名またはユニット名の長さを必要としません。
  • pszUnits が NULL で、pUnitsLength が NULL でない場合、pUnitsLength の入力値は無視され、pUnitsLength パラメーターを使用して文字列の長さ (終端の NULL 文字を含む) を返す必要があります。
  • pszUnitspUnitsLength の両方が NULL でない場合、ドライバーは pUnitsLength の入力値をチェックして、割り当てられたバッファーに十分なスペースがあることを確認し、pszUnits 文字列の長さ (終端の NULL 文字を含む) が pUnitsLength パラメーターを介して渡される必要があります。

unnamedParam9

[出力、省略可能] pszDescription は、カウンター識別子が測定する内容の説明を含む NULL で終わる文字列をドライバーが返す省略可能なポインターです。

NULL を指定できます。この場合、アプリは説明情報を必要としません。 詳細については、 pDescriptionLength パラメーターの説明を参照してください。

pDescriptionLength

[入力、出力、省略可能] pDescriptionLength は、 pszDescription パラメーターが指定する NULL で終わる文字列のサイズ (バイト単位) を受け取る変数への省略可能なポインターです。

pDescriptionLength パラメーターと pszDescription パラメーターの値に関する制限事項を次に示します。

  • pDescriptionLength には NULL を指定できます。この場合、アプリはユニット名またはユニット名の長さを必要としません。
  • pszDescription が NULL で、pDescriptionLength が NULL でない場合、pDescriptionLength の入力値は無視され、pDescriptionLength パラメーターを使用して文字列の長さ (終端の NULL 文字を含む) を返す必要があります。
  • pszDescriptionpDescriptionLength の両方が NULL でない場合、ドライバーは pDescriptionLength の入力値をチェックして、割り当てられたバッファーに十分なスペースがあることを確認し、pszDescription 文字列の長さ (終端の NULL 文字を含む) が pDescriptionLength パラメーターを介して渡される必要があります。

戻り値

このルーチンが成功すると、S_OKが返されます。 それ以外の場合は、次のような HRESULT エラー コードが返されます。

リターン コード 説明
E_INVALIDARG 範囲外のデバイス依存カウンターが要求された場合、または文字列の長さがバッファーに文字列全体を格納するのに十分な大きさではありません。 この関数で使用されるすべての文字列は Unicode に基づいていますが、常に英語のロケールであり、他のロケールにローカライズされません。

注釈

この関数は、Microsoft Direct3D 10 以降をサポートする CheckCounter 関数と同様に動作する必要があります。

カウンターは通常、フレームをキャプチャして複数回再生するツールで使用されます。 正確なタイミング情報を記録するパスは、他のパスとは別です。 後のパスでは、毎回異なるカウンター セットが使用されます。 優先順位は、呼び出しを描画するためにカウンター結果の正確な相関関係を取得する必要があり、再生中に発生するオーバーヘッドを犠牲にすることができます。 ドライバーは、正確な相関関係を確保するために、フラッシュ呼び出しまたはアイドル待機呼び出しを挿入する必要があります。

通常、アプリは少数のネイティブ カウンターのみを同時に監視できます。数は数百単位である可能性があります。 さらに、ドライバーは、サポートされている各カウンター ID を D3DDDIQUERYTYPE 列挙 (既知のカウンター ID とデバイス固有のカウンター ID の両方) から監視することによって使用されるアクティブなカウンターの数を示す必要があります。 たとえば、ドライバーは、 FillRateUtilized 変数を監視するには、最大 4 つの同時アクティブ カウンターのうち 3 つ ( pActiveCounters パラメーターで示されます) が必要であることを示すことができます。 そのため、アプリは、そのカウンター ID に必要なアクティブなカウンターが 1 つ以下である限り、別のカウンター ID を監視することもできます。

カウンター ID を常に監視できる場合 (また、他のカウンター ID の監視に干渉しない場合)、カウンター ID に必要な同時アクティブ カウンターの数は 0 にすることができます。

要件

要件
サポートされている最小のクライアント Windows 8.1
サポートされている最小のサーバー Windows Server 2012 R2
対象プラットフォーム デスクトップ
Header d3dumddi.h (D3d10umddi.h を含む)

こちらもご覧ください

CheckCounter

D3DDDIQUERYTYPE