PFND3DDDI_QUERYRESIDENCYCB fonction de rappel (d3dumddi.h)

La fonction pfnQueryResidencyCb interroge le status de résidence d’une ressource ou d’une liste d’allocations.

Syntaxe

PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;

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

Paramètres

hDevice

Handle pour le périphérique d’affichage (contexte graphique).

unnamedParam2

pData [in, out]

Pointeur vers une structure de D3DDDICB_QUERYRESIDENCY qui décrit la status de résidence d’une ressource ou d’une liste d’allocations.

Valeur retournée

pfnQueryResidencyCb retourne l’une des valeurs suivantes :

Code de retour Description
S_OK Le status de résidence a été retourné avec succès.
E_INVALIDARG Les paramètres ont été validés et déterminés comme incorrects.

Cette fonction peut également retourner d’autres valeurs HRESULT.

Remarques

Le pilote d’affichage en mode utilisateur peut appeler la fonction pfnQueryResidencyCb pour interroger la status de résidence des allocations par le biais d’une ressource ou d’une liste d’allocations. Si le pilote interroge la résidence status d’allocations via une ressource, toutes les allocations qui appartiennent à la ressource sont interrogées. En règle générale, le pilote d’affichage en mode utilisateur interroge la résidence d’une ressource ou d’une liste d’allocations après que le runtime Microsoft Direct3D a appelé la fonction QueryResourceResidency ou QueryResourceResidencyDXGI du pilote d’affichage en mode utilisateur pour déterminer la résidence d’une ressource. Toutefois, le pilote d’affichage en mode utilisateur peut interroger la résidence d’une ressource ou d’une liste d’allocations à tout moment.

Exemples

L’exemple de code suivant montre comment interroger les status de résidence.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3dumddi.h (inclure D3dumddi.h)

Voir aussi

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI