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)

Voir aussi

ExInterlockedInsertHeadList

ExInterlockedInsertTailList

InitializeListHead

KeInitializeSpinLock

RemoveHeadList