NdisInterlockedInsertTailList 宏 (ndis.h)

NdisInterlockedInsertTailList 函数在双重链接列表的末尾插入一个条目(通常是一个数据包),以便以多处理器安全的方式同步对列表的访问。

语法

void NdisInterlockedInsertTailList(
  [in]  _ListHead,
  [in]  _ListEntry,
  [in]  _SpinLock
);

参数

[in] _ListHead

指向要插入条目的双链接列表的标题的指针。

[in] _ListEntry

指向要插入到列表末尾的条目的指针。

[in] _SpinLock

指向调用方提供的旋转锁的指针,用于同步对列表的访问。

返回值

备注

在调用 NdisInterlockedInsertTailList 之前,驱动程序必须使用 NdisInitializeListHead 函数初始化 ListHead 中的变量,并使用 NdisAllocateSpinLock 函数初始化 SpinLock 中的变量。 驱动程序还必须为这些变量及其内部队列提供驻留存储。

NdisInterlockedInsertTailList 插入给定条目时,调用方提供的旋转锁会阻止任何其他函数访问驱动程序的内部队列,即使驱动程序在多处理器计算机上运行也是如此。

NdisInterlockedInsertTailList 在获取给定的旋转锁时将 IRQL 提升为DISPATCH_LEVEL,并在返回控制权之前还原原始 IRQL。 因此,任何调用 NdisInterlockedInsertTailList 的驱动程序函数都不能是可分页代码。

若要将返回的值转换回插入项的地址,驱动程序可以使用 CONTAINING_RECORD 宏。

如果在 IRQL >= DISPATCH_LEVEL调用 NdisInterlockedInsertTailList则 ListHead 参数和列表条目的存储必须是常驻的。

要求

要求
最低受支持的客户端 NDIS 6.0 和 NDIS 5.1 驱动程序支持 (请参阅 Windows Vista 中的 NdisInterlockedInsertTailList (NDIS 5.1) ) 。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 NdisInterlockedInsertTailList (NDIS 5.1) ) 。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL 任何级别

另请参阅

CONTAINING_RECORD

NdisAllocateSpinLock

NdisInitializeListHead

NdisInterlockedInsertHeadList NdisInterlockedRemoveHeadList