Freigeben über


PFND3DDDI_QUERYRESIDENCYCB Rückruffunktion (d3dumddi.h)

Die pfnQueryResidencyCb-Funktion fragt die Residency-status einer Ressource oder einer Liste von Zuordnungen ab.

Syntax

PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;

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

Parameter

hDevice

Ein Handle für das Anzeigegerät (Grafikkontext).

unnamedParam2

pData [in, out]

Ein Zeiger auf eine D3DDDICB_QUERYRESIDENCY-Struktur, die die status einer Ressource oder Einer Liste von Zuordnungen beschreibt.

Rückgabewert

pfnQueryResidencyCb gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Die residenz status wurde erfolgreich zurückgegeben.
E_INVALIDARG Die Parameter wurden überprüft und als falsch ermittelt.

Diese Funktion gibt möglicherweise auch andere HRESULT-Werte zurück.

Hinweise

Der Anzeigetreiber für den Benutzermodus kann die pfnQueryResidencyCb-Funktion aufrufen, um die Residenz status von Zuordnungen entweder über eine Ressource oder über eine Liste von Zuordnungen abzufragen. Wenn der Treiber die Status der Residency-Zuordnungen über eine Ressource abfragt, werden alle Zuordnungen abgefragt, die zur Ressource gehören. In der Regel fragt der Anzeigetreiber für den Benutzermodus die Residenz einer Ressource oder einer Liste von Zuordnungen ab, nachdem die Microsoft Direct3D-Runtime die Funktion QueryResourceResidency oder QueryResourceResidencyDXGI des Benutzermodusanzeigetreibers aufgerufen hat, um die Residenz einer Ressource zu bestimmen. Der Anzeigetreiber für den Benutzermodus kann jedoch jederzeit die Residenz einer Ressource oder einer Liste von Zuordnungen abfragen.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie Sie die Residency-status abfragen.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Desktop
Kopfzeile d3dumddi.h (include D3dumddi.h)

Weitere Informationen

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI