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 オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header d3dumddi.h (D3dumddi.h を含む)

こちらもご覧ください

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI