ExInterlockedPushEntryList 函数 (wdm.h)

ExInterlockedPushEntryList 例程在 SINGLE_LIST_ENTRY 结构单声链接列表的开头插入条目。

语法

PSINGLE_LIST_ENTRY ExInterlockedPushEntryList(
  [in, out] PSINGLE_LIST_ENTRY                  ListHead,
  [in, out] __drv_aliasesMem PSINGLE_LIST_ENTRY ListEntry,
  [in, out] PKSPIN_LOCK                         Lock
);

参数

[in, out] ListHead

指向用作列表标头的 SINGLE_LIST_ENTRY 结构的指针。 ListHead 的存储必须驻留在所有 IRCL 中。

[in, out] ListEntry

指向 SINGLE_LIST_ENTRY 结构的指针,该结构表示要插入到列表中的条目。 ListEntry 的存储必须位于所有 IRCL。

[in, out] Lock

指向 KSPIN_LOCK 结构的指针,该结构充当用于同步列表访问权限的旋转锁。 旋转锁的存储必须是驻留的,并且必须通过调用 KeInitializeSpinLock进行初始化。 必须仅将此旋转锁与 ExInterlockedXxxList 例程一起使用。

返回值

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

言论

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

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

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

要求

要求 价值
最低支持的客户端 从 Windows 2000 开始可用。
目标平台 普遍
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别 (请参阅“备注”部分)
DDI 符合性规则 IoAllocateFree(wdm)IoReuseIrp(wdm)MarkingInterlockedQueuedIrps(wdm)RemoveLockCheck(wdm)RemoveLockForward(wdm)RemoveLockForward2(wdm)RemoveLockForwardDeviceControl(wdm) wdm)RemoveLockForwardDeviceControl2(wdm)RemoveLockForwardDeviceControlInternal(wdm)RemoveLockForwardDeviceControlInternal2(wdm)RemoveLockForwardRead(wdm)RemoveLockForwardRead2(wdm)RemoveLockForwardWrite(wdm)RemoveLockForwardWrite2(wdm)RemoveLockRelease2(wdm)Remove RemoveLockReleaseCleanup(wdm)RemoveLockReleaseClose(wdm)RemoveLockReleaseCreate(wdm)RemoveLockReleaseDeviceControl(wdm)RemoveLockReleaseInternalDeviceControl(wdm)RemoveLockReleasePower(wdm)RemoveLockReleaseRead(wdm)RemoveLockReleaseShutdown(wdm)RemoveLockReleaseSystemControl(wdm)RemoveLockReleaseWrite(wdm)

另请参阅

ExInitializeSListHead

ExInterlockedInsertTailList

ExInterlockedPopEntryList

ExInterlockedPushEntrySList

KeInitializeSpinLock

PushEntryList