ExInterlockedPushEntrySList 宏 (wdm.h)

ExInterlockedPushEntrySList 例程在序列单独链接列表的开头以原子方式插入一个条目。

语法

NTKERNELAPI
PSLIST_ENTRY
FASTCALL
ExInterlockedPushEntrySList (
    _Inout_ PSLIST_HEADER ListHead,
    _Inout_ __drv_aliasesMem PSLIST_ENTRY ListEntry,
    _Inout_opt_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock
    );

参数

ListHead

指向 SLIST_HEADER 结构的指针,该结构充当序列单一链接列表的标头。 ListHead 必须已通过调用 ExInitializeSListHead 进行初始化。

ListEntry

指向要插入的调用方分配的条目的指针。

[in, out] Lock

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

返回值

如果指定列表上有条目, ExInterlockedPushEntrySList 返回指向作为列表条目的第一个 SLIST_ENTRY 结构的指针;否则,它将返回 NULL。

注解

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

在 Windows 2000 上,驱动程序必须使用 -D_WIN2K_COMPAT_SLIST_USAGE 开关成功链接使用 ExInterlockedPushEntrySList 的代码

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

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别 (请参阅备注部分)

另请参阅

ExInitializeSListHead

ExInterlockedInsertTailList

ExInterlockedPopEntrySList

ExQueryDepthSList

KeInitializeSpinLock