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 进行初始化。 必须仅将此旋转锁与 ExInterlockedXxx列表 例程一起使用。
返回值
ExInterlockedInsertTailList 返回指向插入新条目 之前 列表最后一个条目的指针。 如果列表为空,则例程返回 NULL。
注解
ExInterlockedInsertTailList 执行与 InsertTailList 相同的操作,但以原子方式执行。 不要在同一列表中混合使用原子和非原子调用。
有关使用此例程实现双重链接列表的详细信息,请参阅 Singly 和 Doubly Linked Lists。
可以在任何 IRQL 中调用 ExInterlockedInsertTailList 例程。 ListHead 参数和列表条目的存储必须驻留在所有 IRQL 中。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 (请参阅备注部分) |
DDI 符合性规则 | IoAllocateFree (wdm) 、 IoReuseIrp (wdm) 、 MarkingInterlockedQueuedIrps (wdm) 、 RemoveLockCheck (wdm) 、 RemoveLockForward (wdm) 、 RemoveLockForward2 (wdm) 、 RemoveLockForwardDeviceControl (wdm) 、 RemoveLockForwardDeviceControl2 (wdm) 、 RemoveLockForwardDeviceControlInternal (wdm) 、 RemoveLockForwardDeviceControlInternal2 (wdm) , RemoveLockForwardRead (wdm) 、RemoveLockForwardRead2 (wdm) 、RemoveLockForwardWrite (wdm) 、RemoveLockForwardWrite2 (wdm) 、RemoveLockRelease2 (wdm) ) 、RemoveLockReleaseCleanup (wdm) 、RemoveLockReleaseClose (wdm) 、RemoveLockReleaseCreate (wdm) 、RemoveLockReleaseDeviceControl (wdm) 、 RemoveLockReleaseInternalDeviceControl (wdm) ,RemoveLockReleasePower (wdm ) ,RemoveLockReleaseRead (wdm) 、RemoveLockReleaseShutdown (wdm) 、RemoveLockReleaseSystemControl (wdm) 、RemoveLockReleaseWrite (wdm) |