ExInterlockedInsertTailList-Funktion (wdm.h)
Die ExInterlockedInsertTailList-Routine fügt einen Eintrag am Ende einer doppelt verknüpften Liste von LIST_ENTRY Strukturen atomar ein.
Syntax
PLIST_ENTRY ExInterlockedInsertTailList(
[in, out] PLIST_ENTRY ListHead,
[in, out] __drv_aliasesMem PLIST_ENTRY ListEntry,
[in, out] PKSPIN_LOCK Lock
);
Parameter
[in, out] ListHead
Ein Zeiger auf die LIST_ENTRY-Struktur , die als Listenheader dient.
[in, out] ListEntry
Ein Zeiger auf die LIST_ENTRY-Struktur , die den Eintrag darstellt, der in die Liste 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 Spin-Sperre nur mit den ExInterlockedXxxList-Routinen verwenden.
Rückgabewert
ExInterlockedInsertTailList gibt einen Zeiger auf den letzten Eintrag der Liste zurück, bevor der neue Eintrag eingefügt wurde. Wenn die Liste leer war, gibt die Routine NULL zurück.
Hinweise
ExInterlockedInsertTailList führt den gleichen Vorgang wie InsertTailList aus, jedoch 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 ExInterlockedInsertTailList-Routine kann in jeder IRQL aufgerufen werden. Der Speicher für den ListHead-Parameter und die Listeneinträge muss sich in allen IRQLs befinden.