NdisInitializeSListHead 宏 (ndis.h)
NdisInitializeSListHead 函数初始化已排序、互锁、单声链接列表的头。
语法
void NdisInitializeSListHead(
[in] SListHead
);
参数
[in] SListHead
指向要初始化的调用方提供的列表头的指针,该标头必须位于驻留内存中。 结构必须在 64 位平台上对齐 16 字节。
返回值
无
备注
NdisInitializeSListHead 零初始化 SListHead 上的不透明列表头,并将第一个条目指针设置为 NULL。
每次将条目插入列表或从列表中移除条目时,S-List 中的序列号都会递增。
S-List 中的所有条目都必须是非分页的。
任何使用 S-List 的驱动程序都必须为 S-List 提供旋转锁 NdisInterlockedPushEntrySList 和 NdisInterlockedPopEntrySList 函数。 在对其中任一函数进行初始调用之前,驱动程序必须使用 NdisAllocateSpinLock 函数初始化旋转锁。 为了防止死锁,驱动程序在对 NdisInterlockedPushEntrySList 和 NdisInterlockedPopEntrySList 进行后续调用时,不得持有此旋转锁。
若要管理非分页内存中固定大小的条目池,请考虑使用外观列表而不是 S-List。
重试 I/O 操作的驱动程序应使用双重链接的互锁队列和 NdisInterlockedInsertHeadList、 NdisInterlockedInsertTailList 和 NdisInterlockedRemoveHeadList 函数,而不是 S-List。
如果在 IRQL >= DISPATCH_LEVEL调用 NdisInitializeSListHead,则 SListHead 参数的存储必须驻留。
要求
最低受支持的客户端 | (支持 NDIS 6.0 和 NDIS 5.1 驱动程序,请参阅 Windows Vista 中的 NdisInitializeSListHead (NDIS 5.1) ) 。 支持 NDIS 5.1 驱动程序 (请参阅 Windows XP 中的 NdisInitializeSListHead (NDIS 5.1) ) 。 |
目标平台 | 桌面 |
Header | ndis.h (包括 Ndis.h) |
IRQL | 任何级别 |