RemoveEntryList 函数 (wdm.h)

RemoveEntryList 例程从LIST_ENTRY结构的双重链接列表中删除条目。

语法

BOOLEAN RemoveEntryList(
  [in] PLIST_ENTRY Entry
);

参数

[in] Entry

指向 LIST_ENTRY 结构的指针,该结构表示要删除的条目。

返回值

如果删除指定条目后列表为空,RemoveEntryList 将返回 TRUE。 否则,例程返回 FALSE ,指示生成的列表仍包含一个或多个条目。 有关信息,请参阅下面的 “备注 ”部分。

注解

RemoveEntryList 通过将 Entry 之前的项的 Flink 成员设置为指向 Entry 之后的条目,将 Entry后面的条目Blink 成员设置为指向 Entry 之前的条目来删除该条目

返回值可用于检测何时从列表中删除最后一个条目。 空列表仅包含一个列表标题,没有列表条目。

通常, Entry 指向列表中的条目,而不是列表标题。 但是, Entry 可以指向列表头,在这种情况下,例程会从列表中删除列表头以生成无外设列表。 以这种方式使用 RemoveEntryList 时,通常应忽略返回值。 若要确定列表是否为空,请使用 IsListEmpty 例程。

有关在实现双重链接列表时使用此例程的信息,请参阅 Singly 和 Doubly Linked Lists

RemoveEntryList 的调用方可以在任何 IRQL 上运行。 如果在 IRQL >= DISPATCH_LEVEL调用 RemoveEntryList,则列表条目的存储必须是驻留的。

要求

要求
目标平台 桌面
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h)
IRQL 任何级别 (请参阅备注部分)
DDI 符合性规则 DoubleExFreePool (storport)

另请参阅

InitializeListHead

IsListEmpty

RemoveHeadList

RemoveTailList