EVT_WDF_OBJECT_CONTEXT_DESTROY fonction de rappel (wdfobject.h)
[S’applique à KMDF et UMDF]
La fonction de rappel d’événement EvtDestroyCallback d’un pilote effectue des opérations associées à la suppression d’un objet framework.
Syntaxe
EVT_WDF_OBJECT_CONTEXT_DESTROY EvtWdfObjectContextDestroy;
void EvtWdfObjectContextDestroy(
[in] WDFOBJECT Object
)
{...}
Paramètres
[in] Object
Handle d’un objet framework.
Valeur de retour
None
Remarques
Le pilote peut spécifier une fonction de rappel EvtDestroyCallback dans une structure WDF_OBJECT_ATTRIBUTES . Cette structure est utilisée comme entrée dans toutes les méthodes d’infrastructure qui créent des objets framework, tels que WdfDeviceCreate.
L’infrastructure appelle la fonction de rappel EvtDestroyCallback une fois que le nombre de références de l’objet a été décrémenté à zéro. L’infrastructure supprime l’objet immédiatement après le retour de la fonction de rappel EvtDestroyCallback .
L’EvtDestroyCallback peut accéder au contexte de l’objet, mais ne peut appeler aucune méthode sur l’objet.
Si un pilote fournit à la fois une fonction de rappel EvtCleanupCallback et une fonction de rappel EvtDestroyCallback pour un objet, l’infrastructure appelle d’abord la fonction de rappel EvtCleanupCallback .
Lorsqu’un objet est supprimé, l’infrastructure supprime également les enfants de l’objet. L’infrastructure appelle les fonctions de rappel EvtCleanupCallback des objets enfants avant d’appeler la fonction de rappel EvtCleanupCallback de l’objet parent. Ensuite, si le nombre de références de l’enfant est égal à zéro, l’infrastructure appelle la fonction de rappel EvtDestroyCallback de l’objet enfant. Enfin, si le nombre de références du parent est égal à zéro, l’infrastructure appelle la fonction de rappel EvtDestroyCallback de l’objet parent.
Lorsqu’un pilote crée un objet, il alloue parfois des mémoires tampons spécifiques à l’objet et stocke les pointeurs de mémoire tampon dans l’espace contextuel de l’objet. La fonction de rappel EvtCleanupCallback ou EvtDestroyCallback du pilote peut libérer ces mémoires tampons.
Pour plus d’informations sur la suppression d’objets framework, consultez Framework Object Life Cycle.
En règle générale, l’infrastructure appelle la fonction de rappel EvtDestroyCallback à IRQL <= DISPATCH_LEVEL. Toutefois, l’infrastructure appelle la fonction de rappel à IRQL = PASSIVE_LEVEL dans les situations suivantes :
- Le type de handle de l’objet est WDFDEVICE, WDFDRIVER, WDFDPC, WDFINTERRUPT, WDFIOTARGET, WDFQUEUE, WDFSTRING, WDFTIMER ou WDFWORKITEM.
- Le type de handle de l’objet est WDFMEMORY ou WDFLOOKASIDE, et le pilote a spécifié PagedPool pour le paramètre PoolType sur WdfMemoryCreate ou WdfLookasideListCreate.
Type d'objet | Type de fonction |
---|---|
Objet d’appareil | EVT_WDF_DEVICE_CONTEXT_DESTROY |
Objet file d’attente d’E/S | EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK |
File (objet) | EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK |
Tous les autres objets | EVT_WDF_OBJECT_CONTEXT_DESTROY |
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfobject.h (inclure Wdf.h) |
IRQL | Consultez la section Notes. |