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.
À compter de la version 1.9 de l’infrastructure, le fichier d’en-tête wdfroletypes.h contient d’autres types de fonctions spécifiques au type d’objet pour la fonction de rappel EvtDestroyCallback . Ces autres types aident les outils de vérification à déterminer si le pilote utilise correctement la fonction de rappel. Utilisez le tableau suivant pour déterminer le type de fonction à utiliser.
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.

Voir aussi

EvtCleanupCallback

WDF_OBJECT_ATTRIBUTES