NdisInitializeSListHead 宏 (ndis.h)
NdisInitializeSListHead 函数初始化序列、互锁、单独链接列表的头。
语法
void NdisInitializeSListHead(
[in] SListHead
);
参数
[in] SListHead
指向要初始化的调用方提供的列表头的指针,该头必须位于常驻内存中。 在 64 位平台上,结构必须是 16 字节对齐的。
返回值
无
备注
NdisInitializeSListHead 在 SListHead 上对不透明的列表头进行零初始化,并将第一个条目指针设置为 NULL。
每次将条目插入列表或从列表中删除条目时,S-List 中的序列号都会递增。
S-List 中的所有条目都必须是非分页的。
任何使用 S-List 的驱动程序都必须为 提供旋转锁 NdisInterlockedPushEntrySList 和 NdisInterlockedPopEntrySList 函数。 在对其中任一函数进行初始调用之前,驱动程序必须使用 NdisAllocateSpinLock 函数初始化旋转锁。 若要防止死锁,驱动程序在对 NdisInterlockedPushEntrySList 和 NdisInterlockedPopEntrySList 进行后续调用时不得持有此旋转锁。
若要管理来自非分页内存的固定大小条目的池,请考虑使用旁观列表而不是 S 列表。
重试 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) ) 。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | 任何级别 |