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 运行时调用用户模式显示驱动程序的 QueryResourceResidency 或 QueryResourceResidencyDXGI 函数来确定资源的驻留后,用户模式显示驱动程序会查询资源的驻留或分配列表。 但是,用户模式显示驱动程序可以随时查询资源或分配列表的驻留。

示例

下面的代码示例演示如何查询驻留状态。

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 (包括 D3dumddi.h)

另请参阅

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI