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.
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. |