PFND3DDDI_DEALLOCATECB funzione di callback (d3dumddi.h)

La funzione di callback pfnDeallocateCb rilascia allocazioni o un oggetto risorsa in modalità kernel se l'oggetto risorsa è stato creato.

Sintassi

PFND3DDDI_DEALLOCATECB Pfnd3dddiDeallocatecb;

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

Parametri

hDevice

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

pData [in]

Puntatore a una struttura D3DDDICB_DEALLOCATE che descrive la risorsa da rilasciare.

Valore restituito

pfnDeallocateCb restituisce uno dei valori seguenti:

Codice restituito Descrizione
S_OK La memoria è stata rilasciata correttamente.
E_INVALIDARG I parametri sono stati convalidati e sono stati determinati come non corretti.

Questa funzione potrebbe anche restituire altri valori HRESULT.

Commenti

Il driver di visualizzazione in modalità utente può rilasciare le allocazioni nei modi seguenti:

  • Singolarmente, impostando il membro hResource della struttura D3DDDICB_DEALLOCATE a cui fa riferimento pData su NULL e popolando la matrice nel membro HandleList di D3DDDICB_DEALLOCATE con handle delle allocazioni da rilasciare
  • In un gruppo, impostando hResource su un handle di risorsa le cui allocazioni devono essere rilasciate. Se hResource è diverso da NULL, i membri HandleList e NumAllocations di D3DDDICB_DEALLOCATE vengono ignorati.
Si noti che se il driver di visualizzazione in modalità utente imposta hResource su NULL e popola tutti gli elementi della matrice in HandleList per rilasciare tutte le allocazioni, il driver deve successivamente chiamare nuovamente la funzione pfnDeallocateCb per rilasciare solo la risorsa impostando hResource sull'handle sulla risorsa.

Si noti che la funzione pfnDeallocateCb è distinta dalla funzione DestroyResource o DestroyResource(D3D10) del driver di visualizzazione in modalità utente. Tuttavia, il driver di visualizzazione in modalità utente chiama in genere pfnDeallocateCb in risposta a una chiamata alla relativa funzione DestroyResource o DestroyResource(D3D10).

Nota direct3D versione 9: Per altre informazioni sulla creazione e l'eliminazione delle risorse, vedere Gestione della creazione e della distruzione delle risorse.

Nota direct3D versione 11: Per altre informazioni su come il driver chiama pfnDeallocateCb, vedere Modifiche da Direct3D 10.

Nell'esempio di codice seguente viene illustrato come rilasciare una risorsa.

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

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Desktop
Intestazione d3dumddi.h (include D3dumddi.h)

Vedi anche

D3DDDICB_DEALLOCATE

D3DDDI_DEVICECALLBACKS

DestroyResource

DestroyResource(D3D10)

pfnAllocateCb