ExInterlockedInsertHeadList 函数 (wdm.h)

ExInterlockedInsertHeadList 例程以原子方式在LIST_ENTRY结构的双重链接列表的开头插入个条目。

语法

PLIST_ENTRY ExInterlockedInsertHeadList(
  [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列表 例程一起使用。

返回值

ExInterlockedInsertHeadList 在插入新条目 之前 返回指向列表的第一个条目的指针。 如果列表为空,则例程返回 NULL

注解

ExInterlockedInsertHeadList 执行与 InsertHeadList 相同的操作,但以原子方式执行。 不要在同一列表中混合使用原子和非原子调用。

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

可以在任何 IRQL 中调用 ExInterlockedInsertHeadList 例程。 ListHead 参数和列表条目的存储必须驻留在所有 ICL 中。

要求

要求
最低受支持的客户端 从 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)

另请参阅

ExInterlockedInsertTailList

ExInterlockedRemoveHeadList

InitializeListHead

InsertHeadList

KeInitializeSpinLock