Freigeben über


RemoveEntryList-Funktion (wdm.h)

Die RemoveEntryList-Routine entfernt einen Eintrag aus einer doppelt verknüpften Liste von LIST_ENTRY Strukturen.

Syntax

BOOLEAN RemoveEntryList(
  [in] PLIST_ENTRY Entry
);

Parameter

[in] Entry

Zeiger auf die LIST_ENTRY-Struktur , die den zu entfernenden Eintrag darstellt.

Rückgabewert

RemoveEntryList gibt TRUE zurück, wenn die Liste nach dem Entfernen des angegebenen Eintrags leer ist. Andernfalls gibt die Routine FALSE zurück, um anzugeben, dass die resultierende Liste noch einen oder mehrere Einträge enthält. Weitere Informationen finden Sie weiter unten im Abschnitt "Hinweise" .

Hinweise

RemoveEntryList entfernt den Eintrag, indem das Flink-Element des Eintrags vor Entry so festgelegt wird, dass auf den Eintrag nach Entry und das Blink-Element des Eintrags nach Entry auf den Eintrag vor Entry verweist.

Der Rückgabewert kann verwendet werden, um zu erkennen, wann der letzte Eintrag aus der Liste entfernt wurde. Eine leere Liste besteht nur aus einem Listenkopf und keinen Listeneinträgen.

In der Regel verweist Entry auf einen Eintrag in einer Liste und nicht auf den Listenkopf. Entry kann jedoch auf einen Listenkopf verweisen. In diesem Fall entfernt die Routine den Listenkopf aus der Liste, um eine kopflose Liste zu erzeugen. Wenn RemoveEntryList auf diese Weise verwendet wird, sollte der Rückgabewert in der Regel ignoriert werden. Verwenden Sie die IsListEmpty-Routine , um zu bestimmen, ob eine Liste leer ist.

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

Aufrufer von RemoveEntryList können in jedem IRQL ausgeführt werden. Wenn RemoveEntryList unter IRQL >= DISPATCH_LEVEL aufgerufen wird, muss der Speicher für die Listeneinträge resident sein.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)
IRQL Beliebige Ebene (siehe Abschnitt "Hinweise")
DDI-Complianceregeln DoubleExFreePool(storport)

Weitere Informationen

InitializeListHead

IsListEmpty

RemoveHeadList

RemoveTailList