PFND3DDDI_QUERYRESIDENCYCB回呼函式 (d3dumddi.h)

pfnQueryResidencyCb 函式會查詢資源或配置清單的落地狀態。

語法

PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;

HRESULT Pfnd3dddiQueryresidencycb(
  HANDLE hDevice,
  const D3DDDICB_QUERYRESIDENCY *unnamedParam2
)
{...}

參數

hDevice

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

unnamedParam2

pData [in, out]

描述資源或配置清單落地狀態 的D3DDDICB_QUERYRESIDENCY 結構的指標。

傳回值

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

傳回碼 描述
S_OK 已成功傳回落地狀態。
E_INVALIDARG 已驗證參數,並判斷為不正確。

此函式也可能傳回其他 HRESULT 值。

備註

使用者模式顯示驅動程式可以呼叫 pfnQueryResidencyCb 函式,以透過資源或配置清單來查詢配置的落地狀態。 如果驅動程式透過資源查詢配置的落地狀態,則會查詢屬於該資源的所有配置。 使用者模式顯示驅動程式通常會在 Microsoft Direct3D 運行時間呼叫使用者模式顯示驅動程式的 QueryResourceResidencyQueryResourceResidencyDXGI 函式來判斷資源的落地之後,資源或配置清單的落地。 不過,使用者模式顯示驅動程式可以隨時查詢資源或配置清單的落地。

範例

下列程式代碼範例示範如何查詢落地狀態。

HRESULT
CD3DContext::QueryResourceResidency(CONST D3DDDIARG_QUERYRESOURCERESIDENCY* pQRR)
{
    D3DDDICB_QUERYRESIDENCY queryRes;
    D3DDDI_RESIDENCYSTATUS  resStatus = (D3DDDI_RESIDENCYSTATUS)0;
    HRESULT hr;
    BOOL    bPartInSharedMem = FALSE;

    for (UINT i = 0; i < pQRR->NumResources; i++) {
        memset(&queryRes, 0, sizeof(queryRes));
        queryRes.hResource = m_RTbl[(DWORD)(DWORD_PTR)pQRR->pHandleList[i]].m_hResRuntime;
        if (! queryRes.hResource) {
            return (DDERR_INVALIDPARAMS);
        }
        queryRes.pResidencyStatus = &resStatus;
        hr = m_d3dCallbacks.pfnQueryResidencyCb(m_hD3D, &queryRes);
        if (FAILED(hr)) {
            return (hr);
        }
        switch (resStatus) {
        case D3DDDI_RESIDENCYSTATUS_NOTRESIDENT:
            return S_NOT_RESIDENT;
        case D3DDDI_RESIDENCYSTATUS_RESIDENTINSHAREDMEMORY:
            bPartInSharedMem = TRUE;
            break;
        case D3DDDI_RESIDENCYSTATUS_RESIDENTINGPUMEMORY:
            break;
        default:
            return DDERR_GENERIC;
        }
    }
    if (bPartInSharedMem) {
        return S_RESIDENT_IN_SHARED_MEMORY;
    }
    else {
        return  S_OK;
    }
}

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。
目標平台 桌面
標頭 d3dumddi.h (include D3dumddi.h)

另請參閱

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI