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 |