ExInterlockedRemoveHeadList, fonction (wdm.h)
La routine ExInterlockedRemoveHeadList supprime une entrée du début d’une liste doublement liée de structures LIST_ENTRY.
Syntaxe
PLIST_ENTRY ExInterlockedRemoveHeadList(
[in, out] PLIST_ENTRY ListHead,
[in, out] PKSPIN_LOCK Lock
);
Paramètres
[in, out] ListHead
Pointeur vers la structure LIST_ENTRY qui sert d’en-tête de liste.
[in, out] Lock
Pointeur vers une structure KSPIN_LOCK qui sert de verrou de rotation utilisé pour synchroniser l’accès à la liste. Le stockage du verrou de rotation doit être résident et doit avoir été initialisé en appelant KeInitializeSpinLock. Vous devez utiliser ce verrou de rotation uniquement avec les routines ExInterlockedXxxList.
Valeur de retour
ExInterlockedRemoveHeadList retourne un pointeur vers la structure LIST_ENTRY supprimée de la liste. Si la liste était vide, la routine retourne NULL .
Remarques
ExInterlockedRemoveHeadList effectue une opération similaire à RemoveHeadList, mais atomiquement. Ne mélangez pas d’appels atomiques et non atomiques dans la même liste.
Pour plus d’informations sur l’utilisation de cette routine pour implémenter une liste doublement liée, consultez listes liées singly et Doubly linked lists.
La routine ExInterlockedRemoveHeadList peut être appelée à n’importe quel irQL. Le stockage du paramètre ListHead doit être résident à tous les IRQL.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 2000. |
plateforme cible | Universel |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | N’importe quel niveau (voir section Remarques) |