Partager via


Macro ExInterlockedPushEntrySList (wdm.h)

La routine ExInterlockedPushEntrySList insère atomiquement une entrée au début d’une liste liée séquencée.

Syntaxe

NTKERNELAPI
PSLIST_ENTRY
FASTCALL
ExInterlockedPushEntrySList (
    _Inout_ PSLIST_HEADER ListHead,
    _Inout_ __drv_aliasesMem PSLIST_ENTRY ListEntry,
    _Inout_opt_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock
    );

Paramètres

ListHead

Pointeur vers la structure SLIST_HEADER qui sert d’en-tête pour la liste liée séquencée. ListHead doit avoir été initialisé en appelant ExInitializeSListHead.

ListEntry

Pointeur vers l’entrée allouée par l’appelant à insérer.

[in, out] Lock

Un pointeur vers une structure de 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 retournée

S’il y avait des entrées dans la liste spécifiée, ExInterlockedPushEntrySList retourne un pointeur vers la première structure SLIST_ENTRY qui était une entrée de la liste ; dans le cas contraire, elle retourne NULL.

Remarques

Pour plus d’informations sur l’utilisation de cette routine pour implémenter une liste liée séquencée, consultez Singly and Doubly Linked Listes.

Sur Windows 2000, les pilotes doivent utiliser le commutateur -D_WIN2K_COMPAT_SLIST_USAGE pour lier correctement le code qui utilise ExInterlockedPushEntrySList.

La routine ExInterlockedPushEntrySList peut être appelée à n’importe quel IRQL. Le stockage du paramètre ListHead et des entrées de liste 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 (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL N’importe quel niveau (voir la section Remarques)

Voir aussi

ExInitializesListHead

ExInterlockedInsertTailList

ExInterlockedPopEntrySList

ExQueryDepthSList

KeInitializeSpinLock