Freigeben über


PFND3DDDI_QUERYRESIDENCYCB Rückruffunktion (d3dumddi.h)

Die pfnQueryResidencyCb-Funktion fragt den Residency-Status einer Ressource oder Liste der 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 den Residency-Status einer Ressource oder liste der Zuordnungen beschreibt.

Rückgabewert

pfnQueryResidencyCb gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Der Residency-Status wurde erfolgreich zurückgegeben.
E_INVALIDARG Parameter wurden überprüft und ermittelt, dass sie falsch sind.

Diese Funktion kann auch andere HRESULT-Werte zurückgeben.

Bemerkungen

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

Beispiele

Das folgende Codebeispiel zeigt, wie Sie den 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
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform- Desktop
Header- d3dumddi.h (include D3dumddi.h)

Siehe auch

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency-

QueryResourceResidencyDXGI-