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 終止字串大小之變數的選擇性指標,以位元組為單位。
以下是 pNameLength 和 pszName 參數值的限制:
- pNameLength 可以是 NULL,在此情況下,應用程式不需要名稱或名稱長度。
- 如果 pszName 為 NULL 且 pNameLength 不是 NULL,則會忽略 pNameLength 的輸入值,而且必須透過 pNameLength 參數傳回包含終止 NULL 字元的字元串長度 (包括終止 NULL 字元) 。
- 如果 pszName 和 pNameLength 都不是 NULL,驅動程式必須檢查 pNameLength 的輸入值,以確保配置緩衝區中有足夠的空間,然後 pszName 字串的長度 (包括終止 NULL 字元) 透過 pNameLength 參數傳遞。
unnamedParam7
[out, 選擇性] pszUnits 是選擇性指標,驅動程式會傳回 NULL 終止的字串,其中包含計數器標識元測量單位的名稱。
可以是 NULL,在此情況下,應用程式不需要單位資訊。 如需詳細資訊,請參閱 pUnitsLength 參數的說明。
pUnitsLength
[in, out, optional] pUnitsLength 是變數的選擇性指標,可接收 pszUnits 參數所指定之 NULL 終止字串的大小,以位元組為單位。
以下是 pUnitsLength 和 pszUnits 參數值的限制:
- pUnitsLength 可以是 NULL,在此情況下,應用程式不需要單位名稱或單位名稱長度。
- 如果 pszUnits 為 NULL 且 pUnitsLength 不是 NULL,則會忽略 pUnitsLength 的輸入值,而且必須透過 pUnitsLength 參數傳回包含終止 NULL 字元 (的字符串長度) 。
- 如果 pszUnits 和 pUnitsLength 都不是 NULL,則驅動程式必須檢查 pUnitsLength 的輸入值,以確保配置緩衝區中有足夠的空間,然後 pszUnits 字符串的長度 (包括終止 NULL 字元) 透過 pUnitsLength 參數傳遞。
unnamedParam9
[out, 選擇性] pszDescription 是驅動程式傳回 NULL 終止字串的選擇性指標,其中包含計數器標識碼所測量內容的描述。
可以是 NULL,在此情況下,應用程式不需要描述資訊。 如需詳細資訊,請參閱 pDescriptionLength 參數的說明。
pDescriptionLength
[in, out, optional] pDescriptionLength 是變數的選擇性指標,可接收 pszDescription 參數所指定之 NULL 終止字串的大小,以位元組為單位。
以下是 pDescriptionLength 和 pszDescription 参數值的限制:
- pDescriptionLength 可以是 NULL,在此情況下,應用程式不需要單位名稱或單位名稱長度。
- 如果 pszDescription 為 NULL 且 pDescriptionLength 不是 NULL, 則會忽略 pDescriptionLength 的輸入值,而且字元串長度 (包括終止 NULL 字元) 必須透過 pDescriptionLength 參數傳回。
- 如果 pszDescription 和 pDescriptionLength 都不是 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) |