Fonction ObDereferenceObjectDeferDelete (wdm.h)

La routine ObDereferenceObjectDeferDelete décrémente le nombre de références pour l’objet donné, vérifie la rétention des objets et évite les interblocages.

Syntaxe

void ObDereferenceObjectDeferDelete(
  [in] PVOID Object
);

Paramètres

[in] Object

Pointeur vers le corps de l’objet.

Valeur de retour

None

Remarques

ObDereferenceObjectDeferDelete est similaire à ObDereferenceObject , sauf que, lorsque le nombre de références de l’objet atteint zéro, le gestionnaire d’objets transmet la demande de suppression d’objet à un thread worker. Par conséquent, la suppression se produit ultérieurement à IRQL = PASSIVE_LEVEL.

Utilisez ObDereferenceObjectDeferDelete pour n’importe quel objet lorsque la suppression immédiate par le thread actuel de l’objet (à l’aide d’ObDereferenceObject) peut entraîner un blocage.

Par exemple, un tel blocage peut se produire si ObDereferenceObject est utilisé pour déréférencer un objet KTM (Kernel Transaction Manager ) lorsqu’un pilote de niveau supérieur sur la pile de pilotes contient un verrou.

Pour éviter de tels blocages, utilisez ObDereferenceObjectDeferDelete au lieu d’ObDereferenceObject pour déréférencer l’objet KTM.

Pour plus d’informations sur la permanence des objets et les attributs, consultez ObDereferenceObject.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête wdm.h (include Fltkernel.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL

Voir aussi

ObDereferenceObject

ObReferenceObject