共用方式為


PFND3DDDI_QUERYRESOURCERESIDENCY回呼函式 (d3dumddi.h)

QueryResourceResidency 函式會決定指定資源清單的落地。

語法

PFND3DDDI_QUERYRESOURCERESIDENCY Pfnd3dddiQueryresourceresidency;

HRESULT Pfnd3dddiQueryresourceresidency(
  HANDLE hDevice,
  const D3DDDIARG_QUERYRESOURCERESIDENCY *unnamedParam2
)
{...}

參數

hDevice

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

unnamedParam2

pData [in]

D3DDDIARG_QUERYRESOURCERESIDENCY 結構的指標,描述要驗證落地的資源清單。

傳回值

QueryResourceResidency 會傳回下列其中一個值:

傳回碼 描述
S_OK 所有資源都位於 GPU 可存取的記憶體中。
S_RESIDENT_IN_SHARED_MEMORY 沒有組成資源的配置位於磁碟上。 不過,至少有一個配置不在 GPU 可存取的記憶體中。
S_NOT_RESIDENT 包含資源的至少一個配置位於磁碟上。
E_INVALIDARG 已驗證參數,並判斷為不正確。
E_OUTOFMEMORY QueryResourceResidency 無法配置完成所需的記憶體。

言論

Microsoft Direct3D 運行時間會呼叫使用者模式顯示驅動程式的 QueryResourceResidency 函式,讓應用程式判斷如果系統必須讓資源可供 GPU 存取,作系統是否會在繪製時間產生重大停滯。 從 QueryResourceResidency 傳回的資訊 是資源的落地近似值,因為資源可能會在應用程式使用資源之前降級。

使用者模式顯示驅動程式的 QueryResourceResidency 函式必須 呼叫 pfnQueryResidencyCb 函式。 pfnQueryResidencyCb 函式會傳回 pResidencyStatus 所指定之陣組元素中資源落地狀態D3DDDICB_QUERYRESIDENCY 結構的成員。 如果 pfnQueryResidencyCb 傳回任何查詢的D3DDDI_RESIDENCYSTATUS_NOTRESIDENT,QueryResourceResidency 必須傳回S_NOT_RESIDENT。 如果 pfnQueryResidencyCb 傳回任何查詢的D3DDDI_RESIDENCYSTATUS_RESIDENTINSHAREDMEMORY,而且不會傳回任何查詢的D3DDDI_RESIDENCYSTATUS_NOTRESIDENT,QueryResourceResidency 必須傳回S_RESIDENT_IN_SHARED_MEMORY。 只有在所有查詢的所有呼叫都傳回 pfnQueryResidencyCb 時,QueryResourceResidency 才會傳回 D3DDDI_RESIDENCYSTATUS_RESIDENTINGPUMEMORY S_OK。

針對運行時間透過呼叫查詢的每個資源,QueryResourceResidency,使用者模式顯示驅動程式必須決定要 透過呼叫 pfnQueryResidencyCb來查詢資源所屬的資源配置。 對於擁有單一配置的資源,判斷很簡單,驅動程式會查詢該配置。 不過,如果資源擁有多個配置,則判斷比較困難。 驅動程式必須判斷應用程式可能用於轉譯的配置,而驅動程式必須只查詢這些配置。 例如,如果資源擁有用於轉譯的配置,以及處理鎖定作業的臨時配置,驅動程式應該只查詢第一個配置的落地,因為應用程式很可能不會使用第二個配置進行轉譯。

注意 因為運行時間不支持系統記憶體資源的落地查詢,所以運行時間一律會失敗來自應用程式對系統記憶體資源落地狀態的要求,而且永遠不會呼叫使用者模式顯示驅動程式的 QueryResourceResidency 函式給這些系統記憶體資源。
 

要求

要求 價值
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows作系統中使用。
目標平臺 桌面
標頭 d3dumddi.h (包括 D3dumddi.h)

另請參閱

D3DDDIARG_QUERYRESOURCERESIDENCY

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICEFUNCS

pfnQueryResidencyCb