ExInterlockedInsertTailList 函数 (wdm.h)
ExInterlockedInsertTailList 例程在 LIST_ENTRY 结构的双重链接列表末尾插入一个条目。
语法
PLIST_ENTRY ExInterlockedInsertTailList(
[in, out] PLIST_ENTRY ListHead,
[in, out] __drv_aliasesMem PLIST_ENTRY ListEntry,
[in, out] PKSPIN_LOCK Lock
);
参数
[in, out] ListHead
指向用作列表标头的 LIST_ENTRY 结构的指针。
[in, out] ListEntry
指向 LIST_ENTRY 结构的指针,该结构表示要插入到列表中的条目。
[in, out] Lock
指向 KSPIN_LOCK 结构的指针,该结构充当用于同步列表访问权限的旋转锁。 旋转锁的存储必须是驻留的,并且必须通过调用 KeInitializeSpinLock进行初始化。 必须仅将此旋转锁与 ExInterlockedXxxList 例程一起使用。
返回值
ExInterlockedInsertTailList 返回指向列表 最后一项的指针,然后再插入新条目。 如果列表为空,则例程返回 NULL。
言论
ExInterlockedInsertTailList 执行与 InsertTailList相同的作,但以原子方式执行。 不要在同一列表中混合原子和非原子调用。
有关使用此例程实现双重链接列表的详细信息,请参阅 Singly 和 Doubly 链接列表。
可以在任何 IRQL 中调用 ExInterlockedInsertTailList 例程。 ListHead 参数的存储,列表条目必须驻留在所有 IRCL 中。