Freigeben über


ExInterlockedRemoveHeadList-Funktion (wdm.h)

Die ExInterlockedRemoveHeadList-Routine entfernt einen Eintrag vom Anfang einer doppelt verknüpften Liste von LIST_ENTRY Strukturen.

Syntax

PLIST_ENTRY ExInterlockedRemoveHeadList(
  [in, out] PLIST_ENTRY ListHead,
  [in, out] PKSPIN_LOCK Lock
);

Parameter

[in, out] ListHead

Ein Zeiger auf die LIST_ENTRY-Struktur , die als Listenheader dient.

[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

ExInterlockedRemoveHeadList gibt einen Zeiger auf die LIST_ENTRY-Struktur zurück, die aus der Liste entfernt wurde. Wenn die Liste leer war, gibt die Routine NULL zurück.

Hinweise

ExInterlockedRemoveHeadList führt einen ähnlichen Vorgang wie RemoveHeadList aus, aber atomar. Mischen Sie keine atomaren und nicht-atomaren Aufrufe in derselben Liste.

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

Die ExInterlockedRemoveHeadList-Routine kann in jedem IRQL aufgerufen werden. Der Speicher für den ListHead-Parameter muss bei 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

ExInterlockedInsertHeadList

ExInterlockedInsertTailList

InitializeListHead

KeInitializeSpinLock

RemoveHeadList