PFND3DDDI_CHECKCOUNTER回呼函式 (d3dumddi.h)

Direct3D 運行時間 會呼叫PFND3DDDI_CHECKCOUNTER,以擷取描述計數器的資訊。 必須由 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

[in]顯示裝置的句柄 (圖形內容) 。

unnamedParam2

[in] Counter 是類型 為 D3DDDIQUERYTYPE 的值,可識別擷取資訊的計數器標識碼。

unnamedParam3

[out] pType 是可接收 D3DDDI_COUNTER_TYPE 列舉值的變數指標,可識別計數器所輸出的數據類型。

unnamedParam4

pActiveCounters [out] pActiveCounters 是變數的指標,可接收同時使用中計數器的數目,這些計數器會配置給 Counter 參數所識別的計數器標識符。

unnamedParam5

[out, 選擇性] pszName 是選擇性指標,驅動程式會將 NULL 終止的字串傳回給 ,其中包含計數器標識碼的名稱。

可以是 NULL,在此情況下,應用程式不需要名稱。

pNameLength

[in, out, optional]可接收 pszName 參數指定之 NULL 終止字串大小之變數的選擇性指標,以位元組為單位。

以下是 pNameLengthpszName 參數值的限制:

  • pNameLength 可以是 NULL,在此情況下,應用程式不需要名稱或名稱長度。
  • 如果 pszName 為 NULL 且 pNameLength 不是 NULL,則會忽略 pNameLength 的輸入值,而且必須透過 pNameLength 參數傳回包含終止 NULL 字元的字元串長度 (包括終止 NULL 字元) 。
  • 如果 pszNamepNameLength 都不是 NULL,驅動程式必須檢查 pNameLength 的輸入值,以確保配置緩衝區中有足夠的空間,然後 pszName 字串的長度 (包括終止 NULL 字元) 透過 pNameLength 參數傳遞。

unnamedParam7

[out, 選擇性] pszUnits 是選擇性指標,驅動程式會傳回 NULL 終止的字串,其中包含計數器標識元測量單位的名稱。

可以是 NULL,在此情況下,應用程式不需要單位資訊。 如需詳細資訊,請參閱 pUnitsLength 參數的說明。

pUnitsLength

[in, out, optional] pUnitsLength 是變數的選擇性指標,可接收 pszUnits 參數所指定之 NULL 終止字串的大小,以位元組為單位。

以下是 pUnitsLengthpszUnits 參數值的限制:

  • pUnitsLength 可以是 NULL,在此情況下,應用程式不需要單位名稱或單位名稱長度。
  • 如果 pszUnits 為 NULL 且 pUnitsLength 不是 NULL,則會忽略 pUnitsLength 的輸入值,而且必須透過 pUnitsLength 參數傳回包含終止 NULL 字元 (的字符串長度) 。
  • 如果 pszUnitspUnitsLength 都不是 NULL,則驅動程式必須檢查 pUnitsLength 的輸入值,以確保配置緩衝區中有足夠的空間,然後 pszUnits 字符串的長度 (包括終止 NULL 字元) 透過 pUnitsLength 參數傳遞。

unnamedParam9

[out, 選擇性] pszDescription 是驅動程式傳回 NULL 終止字串的選擇性指標,其中包含計數器標識碼所測量內容的描述。

可以是 NULL,在此情況下,應用程式不需要描述資訊。 如需詳細資訊,請參閱 pDescriptionLength 參數的說明。

pDescriptionLength

[in, out, optional] pDescriptionLength 是變數的選擇性指標,可接收 pszDescription 參數所指定之 NULL 終止字串的大小,以位元組為單位。

以下是 pDescriptionLengthpszDescription 参數值的限制:

  • pDescriptionLength 可以是 NULL,在此情況下,應用程式不需要單位名稱或單位名稱長度。
  • 如果 pszDescription 為 NULL 且 pDescriptionLength 不是 NULL, 則會忽略 pDescriptionLength 的輸入值,而且字元串長度 (包括終止 NULL 字元) 必須透過 pDescriptionLength 參數傳回。
  • 如果 pszDescriptionpDescriptionLength 都不是 NULL,驅動程式必須檢查 pDescriptionLength 的輸入值,以確保配置緩衝區有足夠的空間,然後 pszDescription 字符串的長度 (包括終止 NULL 字元) 透過 pDescriptionLength 參數傳遞。

傳回值

如果此例程成功,則會傳回S_OK。 否則,它會傳回 HRESULT 錯誤碼,包括下列專案:

傳回碼 描述
E_INVALIDARG 要求超出範圍的裝置相依計數器,或字串長度不足以讓緩衝區包含整個字串。 雖然此函式中使用的所有字串都是以 Unicode 為基礎,但它們一律位於英文地區設定中,而且不會當地語系化為其他地區設定。

備註

此函式的行為應該類似於支援 Microsoft Direct3D 10 和更新版本的 CheckCounter 函式。

計數器通常由擷取框架並播放多次的工具使用。 記錄精確計時信息的傳遞與其他階段不同。 在稍後的階段中,每次都會使用不同的計數器集合。 優先順序應該是取得計數器結果的精確相互關聯,以繪製呼叫,而且播放期間所產生的額外負荷可能會犧牲。 驅動程式必須插入排清呼叫或等候閑置呼叫,以確保相互關聯正確。

一般而言,應用程式只能同時監視少數可能的原生計數器,這可能會在數百個數目中。 此外,驅動程式必須指出從D3DDDIQUERYTYPE列舉監視每個支援的計數器標識碼所使用的作用中計數器數目 , ( 已知計數器標識碼和裝置特定的計數器標識碼) 。 例如,驅動程式可以指出監視 FillRateUtilized 變數需要 4 個同時作用中計數器的 3 個, (pActiveCounters 參數所指出) 。 因此,只要計數器標識碼需要一或多個作用中計數器,應用程式也可以監視另一個計數器標識符。

如果計數器標識碼一律可以監視 (,而且不會干擾監視任何其他計數器標識碼) ,計數器標識碼所需的同時作用中計數器數目可以是零。

規格需求

需求
最低支援的用戶端 Windows 8.1
最低支援的伺服器 Windows Server 2012 R2
目標平台 桌面
標頭 d3dumddi.h (包含 D3d10umddi.h)

另請參閱

CheckCounter

D3DDDIQUERYTYPE