PFND3DDDI_DEALLOCATECB Rückruffunktion (d3dumddi.h)

Die PfnDeallocateCb-Rückruffunktion gibt Zuordnungen oder ein Kernelmodus-Ressourcenobjekt frei, wenn das Ressourcenobjekt erstellt wurde.

Syntax

PFND3DDDI_DEALLOCATECB Pfnd3dddiDeallocatecb;

HRESULT Pfnd3dddiDeallocatecb(
  HANDLE hDevice,
  const D3DDDICB_DEALLOCATE *unnamedParam2
)
{...}

Parameter

hDevice

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

unnamedParam2

pData [in]

Ein Zeiger auf eine D3DDDICB_DEALLOCATE-Struktur , die die freizugebende Ressource beschreibt.

Rückgabewert

pfnDeallocateCb gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Der Speicher wurde erfolgreich freigegeben.
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 Zuordnungen auf folgende Weise freigeben:

  • Einzeln durch Festlegen des hResource-Elements der D3DDDICB_DEALLOCATE Struktur, auf die pData verweist, auf NULL und Auffüllen des Arrays im HandleList-Member von D3DDDICB_DEALLOCATE mit Handles der zu freigebenden Zuordnungen
  • In einer Gruppe durch Festlegen von hResource auf ein Ressourcenhandle, dessen Zuordnungen freigegeben werden sollen. Wenn hResource nicht NULL ist, werden die HandleList - und NumAllocations-Member von D3DDDICB_DEALLOCATE ignoriert.
Wenn der Anzeigetreiber für den Benutzermodus hResource auf NULL festlegt und alle Arrayelemente in HandleList auffüllt, um alle Zuordnungen freizugeben, muss der Treiber anschließend die PfnDeallocateCb-Funktion erneut aufrufen, um nur die Ressource freizugeben, indem hResource auf das Handle für die Ressource festgelegt wird.

Beachten Sie, dass sich die pfnDeallocateCb-Funktion von der DestroyResource - oder DestroyResource(D3D10) -Funktion des Benutzermodustreibers unterscheidet. Der Anzeigetreiber im Benutzermodus ruft jedoch in der Regel pfnDeallocateCb als Reaktion auf einen Aufruf seiner DestroyResource - oder DestroyResource(D3D10) -Funktion auf.

Direct3D Version 9 Hinweis: Weitere Informationen zum Erstellen und Zerstören von Ressourcen finden Sie unter Behandeln von Ressourcenerstellung und -zerstörung.

Direct3D Version 11 Hinweis: Weitere Informationen dazu, wie der Treiber pfnDeallocateCb aufruft, finden Sie unter Änderungen von Direct3D 10.

Im folgenden Codebeispiel wird gezeigt, wie eine Ressource freigegeben wird.

    D3DDDICB_DEALLOCATE deAllocCB;
    HRESULT             hr;
    D3DKMT_HANDLE       hKMAllocHandle;

    memset(&deAllocCB, 0, sizeof(deAllocCB));

    deAllocCB.hResource = m_hCurResRuntime;

    hr = m_d3dCallbacks.pfnDeallocateCb(m_hD3D, &deAllocCB);
    if ((m_hCurResRuntime) && (SUCCEEDED(hr))) {
        m_bCurResFreed = TRUE;
    }

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_DEALLOCATE

D3DDDI_DEVICECALLBACKS

DestroyResource

DestroyResource(D3D10)

pfnAllocateCb