Freigeben über


ExInterlockedPushEntryList-Funktion (wdm.h)

Die ExInterlockedPushEntryList-Routine fügt atomar einen Eintrag am Anfang einer singly verknüpften Liste von SINGLE_LIST_ENTRY-Strukturen ein.

Syntax

PSINGLE_LIST_ENTRY ExInterlockedPushEntryList(
  [in, out] PSINGLE_LIST_ENTRY                  ListHead,
  [in, out] __drv_aliasesMem PSINGLE_LIST_ENTRY ListEntry,
  [in, out] PKSPIN_LOCK                         Lock
);

Parameter

[in, out] ListHead

Ein Zeiger auf die SINGLE_LIST_ENTRY-Struktur , die als Listenheader dient. Der Speicher für ListHead muss sich bei allen IRQLs befinden.

[in, out] ListEntry

Ein Zeiger auf die SINGLE_LIST_ENTRY-Struktur , die den Eintrag darstellt, der in die Liste eingefügt werden soll. Der Speicher für ListEntry muss sich bei allen IRQLs befinden.

[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 Spin-Sperre nur mit den ExInterlockedXxxList-Routinen verwenden.

Rückgabewert

ExInterlockedPushEntryList gibt einen Zeiger auf den ersten Eintrag der Liste zurück, bevor der neue Eintrag eingefügt wurde. Wenn die Liste leer war, gibt die Routine NULL zurück.

Hinweise

ExInterlockedPushEntryList führt den gleichen Vorgang wie PushEntryList aus, jedoch atomar. Mischen Sie keine atomaren und nicht-atomaren Aufrufe in derselben Liste.

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

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

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")
DDI-Complianceregeln IoAllocateFree(wdm), IoReuseIrp(wdm), MarkingInterlockedQueuedIrps(wdm), RemoveLockCheck(wdm), RemoveLockForward(wdm), RemoveLockForward2(wdm), RemoveLockForwardDeviceControl(wdm), RemoveLockForwardDeviceControl2(wdm), RemoveLockForwardDeviceControlInternal(wdm), RemoveLockForwardDeviceControlInternal2(wdm), RemoveLockForwardRead(wdm), RemoveLockForwardRead2(wdm), RemoveLockForwardWrite(wdm), RemoveLockForwardWrite2(wdm), RemoveLockRelease2(wdm), RemoveLockReleaseCleanup(wdm), RemoveLockReleaseClose(wdm), RemoveLockReleaseCreate(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseInternalDeviceControl(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseRead(wdm), RemoveLockReleaseShutdown(wdm), RemoveLockReleaseSystemControl(wdm), RemoveLockReleaseWrite(wdm)

Weitere Informationen

ExInitializeSListHead

ExInterlockedInsertTailList

ExInterlockedPopEntryList

ExInterlockedPushEntrySList

KeInitializeSpinLock

PushEntryList