Freigeben über


ExInterlockedPushEntrySList-Makro (wdm.h)

Die ExInterlockedPushEntrySList-Routine fügt einen Eintrag am Anfang einer sequenzierten singly verknüpften Liste atomar ein.

Syntax

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
    );

Parameter

ListHead

Ein Zeiger auf die SLIST_HEADER-Struktur , die als Header für die sequenzierte, singly verknüpfte Liste dient. ListHead muss durch Aufrufen von ExInitializeSListHead initialisiert worden sein.

ListEntry

Ein Zeiger auf den vom Aufrufer zugewiesenen Eintrag, der eingefügt werden soll.

[in, out] Lock

Ein Zeiger auf eine KSPIN_LOCK-Struktur , die als Drehsperre dient, die zum Synchronisieren des Zugriffs auf die Liste verwendet wird. Der Speicher für die Spinsperre muss resident sein und durch Aufrufen von KeInitializeSpinLock initialisiert worden sein. Sie müssen diese Spinsperre nur mit den ExInterlockedXxxList-Routinen verwenden.

Rückgabewert

Wenn Einträge in der angegebenen Liste vorhanden sind, gibt ExInterlockedPushEntrySList einen Zeiger auf die erste SLIST_ENTRY Struktur zurück, die ein Eintrag in der Liste war. Andernfalls wird NULL zurückgegeben.

Hinweise

Weitere Informationen zur Verwendung dieser Routine zum Implementieren einer sequenzierten, singly verknüpften Liste finden Sie unter Singly und Doubly Linked Listen.

Unter Windows 2000 müssen Treiber den Switch -D_WIN2K_COMPAT_SLIST_USAGE verwenden, um Code erfolgreich zu verknüpfen, der ExInterlockedPushEntrySList verwendet.

Die ExInterlockedPushEntrySList-Routine kann in jedem IRQL aufgerufen werden. Der Speicher für den ListHead-Parameter und die Listeneinträge muss in allen IRQLs vorhanden sein.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene (siehe Abschnitt Hinweise)

Weitere Informationen

ExInitializeSListHead

ExInterlockedInsertTailList

ExInterlockedPopEntrySList

ExQueryDepthSList

KeInitializeSpinLock