Fonction ExInterlockedRemoveHeadList (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 tournant 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 retournée
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 les 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 Singly and Doubly Linked Listes.
La routine ExInterlockedRemoveHeadList peut être appelée au niveau de n’importe quel IRQL. Le stockage du paramètre ListHead doit être résident à tous les IRQL.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
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 la section Remarques) |