PFND3DDDI_DEALLOCATECB fonction de rappel (d3dumddi.h)

La fonction de rappel pfnDeallocateCb libère des allocations ou un objet de ressource en mode noyau si l’objet de ressource a été créé.

Syntaxe

PFND3DDDI_DEALLOCATECB Pfnd3dddiDeallocatecb;

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

Paramètres

hDevice

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

unnamedParam2

pData [in]

Pointeur vers une structure D3DDDICB_DEALLOCATE qui décrit la ressource à libérer.

Valeur retournée

pfnDeallocateCb retourne l’une des valeurs suivantes :

Code de retour Description
S_OK La mémoire a été libérée 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 libérer des allocations des manières suivantes :

  • Individuellement, en définissant le membre hResource de la structure D3DDDICB_DEALLOCATE pointée par pData sur NULL et en remplissant le tableau dans le membre HandleList de D3DDDICB_DEALLOCATE avec des handles des allocations à libérer
  • Dans un groupe, en définissant hResource sur un handle de ressource dont les allocations doivent être libérées. Si hResource n’a pas la valeur NULL, les membres HandleList et NumAllocations de D3DDDICB_DEALLOCATE sont ignorés.
Notez que si le pilote d’affichage en mode utilisateur définit hResource sur NULL et remplit tous les éléments du tableau dans HandleList pour libérer toutes les allocations, le pilote doit ensuite appeler à nouveau la fonction pfnDeallocateCb pour libérer uniquement la ressource en définissant hResource sur le handle de la ressource.

Notez que la fonction pfnDeallocateCb est distincte de la fonction DestroyResource ou DestroyResource(D3D10) du pilote d’affichage en mode utilisateur. Toutefois, le pilote d’affichage en mode utilisateur appelle généralement pfnDeallocateCb en réponse à un appel à sa fonction DestroyResource ou DestroyResource(D3D10).

Remarque de Direct3D version 9 : Pour plus d’informations sur la création et la destruction de ressources, consultez Gestion de la création et de la destruction des ressources.

Remarque de Direct3D version 11 : Pour plus d’informations sur la façon dont le pilote appelle pfnDeallocateCb, consultez Modifications de Direct3D 10.

L’exemple de code suivant montre comment libérer une ressource.

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

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_DEALLOCATE

D3DDDI_DEVICECALLBACKS

DestroyResource

DestroyResource(D3D10)

pfnAllocateCb