Condividi tramite


EVT_WDF_OBJECT_CONTEXT_DESTROY funzione di callback (wdfobject.h)

[Si applica a KMDF e UMDF]

La funzione di callback dell'evento EvtDestroyCallback di un driver esegue operazioni associate all'eliminazione di un oggetto framework.

Sintassi

EVT_WDF_OBJECT_CONTEXT_DESTROY EvtWdfObjectContextDestroy;

void EvtWdfObjectContextDestroy(
  [in] WDFOBJECT Object
)
{...}

Parametri

[in] Object

Handle per un oggetto framework.

Valore restituito

nessuno

Osservazioni

Il driver può specificare una funzione di callback EvtDestroyCallback in una struttura WDF_OBJECT_ATTRIBUTES . Questa struttura viene usata come input per tutti i metodi del framework che creano oggetti framework, ad esempio WdfDeviceCreate.

Il framework chiama la funzione di callback EvtDestroyCallback dopo che il conteggio dei riferimenti dell'oggetto è stato decrementato su zero. Il framework elimina l'oggetto immediatamente dopo la restituzione della funzione di callback EvtDestroyCallback .

EvtDestroyCallback può accedere al contesto dell'oggetto, ma non può chiamare metodi sull'oggetto.

Se un driver fornisce sia una funzione di callback EvtCleanupCallback che una funzione di callback EvtDestroyCallback per un oggetto, il framework chiama prima la funzione di callback EvtCleanupCallback .

Quando un oggetto viene eliminato, il framework elimina anche gli elementi figlio dell'oggetto. Il framework chiama le funzioni di callback EvtCleanupCallback degli oggetti figlio prima di chiamare la funzione di callback EvtCleanupCallback dell'oggetto padre. Successivamente, se il conteggio dei riferimenti del figlio è zero, il framework chiama la funzione di callback EvtDestroyCallback dell'oggetto figlio. Infine, se il conteggio dei riferimenti dell'elemento padre è zero, il framework chiama la funzione di callback EvtDestroyCallback dell'oggetto padre.

Quando un driver crea un oggetto, talvolta alloca buffer di memoria specifici dell'oggetto e archivia i puntatori del buffer nello spazio di contesto dell'oggetto. La funzione di callback EvtCleanupCallback o EvtDestroyCallback del driver può deallocare questi buffer di memoria.

Per altre informazioni sull'eliminazione di oggetti framework, vedere Ciclo di vita degli oggetti framework.

In genere, il framework chiama la funzione di callback EvtDestroyCallback in IRQL <= DISPATCH_LEVEL. Tuttavia, il framework chiama la funzione di callback in IRQL = PASSIVE_LEVEL nelle situazioni seguenti:

  • Il tipo di handle dell'oggetto è WDFDEVICE, WDFDRIVER, WDFDPC, WDFINTERRUPT, WDFIOTARGET, WDFQUEUE, WDFSTRING, WDFTIMER o WDFWORKITEM.
  • Il tipo di handle dell'oggetto è WDFMEMORY o WDFLOOKASIDE e il driver ha specificato PagedPool per il parametro PoolType in WdfMemoryCreate o WdfLookasideListCreate.
A partire dalla versione 1.9 del framework, il file di intestazione wdfroletypes.h contiene alcuni tipi di funzione alternativi specifici del tipo di oggetto per la funzione di callback EvtDestroyCallback . Questi tipi alternativi consentono agli strumenti di verifica di determinare se il driver usa correttamente la funzione di callback. Usare la tabella seguente per determinare il tipo di funzione da usare.
Tipo di oggetto Tipo di funzione
Oggetto dispositivo EVT_WDF_DEVICE_CONTEXT_DESTROY
Oggetto coda di I/O EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK
File (oggetto) EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK
Tutti gli altri oggetti EVT_WDF_OBJECT_CONTEXT_DESTROY

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfobject.h (include Wdf.h)
IRQL Vedere la sezione Osservazioni.

Vedi anche

EvtCleanupCallback

WDF_OBJECT_ATTRIBUTES