Freigeben über


ExInterlockedPushEntrySList-Makro (wdm.h)

Die ExInterlockedPushEntrySList routinemäßig einen Eintrag am Anfang einer sequenzierten verknüpften Liste einfügt.

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 Kopfzeile für die sequenzierte verknüpfte Liste dient. ListHead- müssen durch Aufrufen von ExInitializeSListHeadinitialisiert worden sein.

ListEntry

Ein Zeiger auf den einzufügenden Aufrufer.A pointer to the caller-allocated entry to be inserted.

[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 Spin-Sperre muss resident sein und muss durch Aufrufen von KeInitializeSpinLockinitialisiert werden. Sie müssen diese Drehsperre nur mit den ExInterlockedXxxList Routinen verwenden.

Rückgabewert

Wenn in der angegebenen Liste Einträge 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.

Bemerkungen

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

Unter Windows 2000 müssen Treiber den -D_WIN2K_COMPAT_SLIST_USAGE Wechseln zum erfolgreichen Verknüpfen von Code verwenden, der ExInterlockedPushEntrySListverwendet.

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- Beliebige Ebene (siehe Abschnitt "Hinweise")

Siehe auch

ExInitializeSListHead-

ExInterlockedInsertTailList-

ExInterlockedPopEntrySList-

ExQueryDepthSList-

KeInitializeSpinLock