Condividi tramite


PFND3DDDI_DEALLOCATECB funzione di callback (d3dumddi.h)

Il pfnDeallocateCb funzione di callback 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 in modo che non siano corretti.

Questa funzione potrebbe restituire anche altri valori HRESULT.

Osservazioni

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

  • Singolarmente, impostando il membro hResource della struttura di D3DDDICB_DEALLOCATE a cui punta 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 non èNULL, i HandleList e NumAllocations membri 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 la funzione pfnDeallocateCb solo per rilasciare la risorsa impostando hResource sull'handle sulla risorsa.

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

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

Direct3D versione 11 Nota: 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;
    }

Fabbisogno

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)

Vedere anche

D3DDDICB_DEALLOCATE

D3DDDI_DEVICECALLBACKS

DestroyResource

DestroyResource(D3D10)

pfnAllocateCb