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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour