Condividi tramite


PFND3DDDI_QUERYRESIDENCYCB funzione di callback (d3dumddi.h)

La funzione pfnQueryResidencyCb esegue una query sullo stato di residenza di una risorsa o di un elenco di allocazioni.

Sintassi

PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;

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

Parametri

hDevice

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

pData [in, out]

Puntatore a una struttura D3DDDICB_QUERYRESIDENCY che descrive lo stato di residenza di una risorsa o un elenco di allocazioni.

Valore restituito

pfnQueryResidencyCb restituisce uno dei valori seguenti:

Codice restituito Descrizione
S_OK Lo stato di residenza è stato restituito correttamente.
E_INVALIDARG I parametri sono stati convalidati e sono stati determinati come non corretti.

Questa funzione potrebbe anche restituire altri valori HRESULT.

Commenti

Il driver di visualizzazione in modalità utente può chiamare la funzione pfnQueryResidencyCb per eseguire una query sullo stato di residenza delle allocazioni tramite una risorsa o tramite un elenco di allocazioni. Se il driver esegue una query sullo stato di residenza delle allocazioni tramite una risorsa, vengono eseguite query su tutte le allocazioni appartenenti alla risorsa. In genere, il driver di visualizzazione in modalità utente esegue una query sulla residenza di una risorsa o un elenco di allocazioni dopo che il runtime di Microsoft Direct3D chiama la funzione QueryResourceResidency o QueryResourceResidencyDXGI del driver di visualizzazione in modalità utente per determinare la residenza di una risorsa. Tuttavia, il driver di visualizzazione in modalità utente può eseguire query sulla residenza di una risorsa o un elenco di allocazioni in qualsiasi momento.

Esempio

Nell'esempio di codice seguente viene illustrato come eseguire una query sullo stato di residenza.

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;
    }
}

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Desktop
Intestazione d3dumddi.h (include D3dumddi.h)

Vedi anche

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI