NdisInitializeSListHead 宏 (ndis.h)

NdisInitializeSListHead 函数初始化序列、互锁、单独链接列表的头。

语法

void NdisInitializeSListHead(
  [in]  SListHead
);

参数

[in] SListHead

指向要初始化的调用方提供的列表头的指针,该头必须位于常驻内存中。 在 64 位平台上,结构必须是 16 字节对齐的。

返回值

备注

NdisInitializeSListHeadSListHead 上对不透明的列表头进行零初始化,并将第一个条目指针设置为 NULL

每次将条目插入列表或从列表中删除条目时,S-List 中的序列号都会递增。

S-List 中的所有条目都必须是非分页的。

任何使用 S-List 的驱动程序都必须为 提供旋转锁 NdisInterlockedPushEntrySList NdisInterlockedPopEntrySList 函数。 在对其中任一函数进行初始调用之前,驱动程序必须使用 NdisAllocateSpinLock 函数初始化旋转锁。 若要防止死锁,驱动程序在对 NdisInterlockedPushEntrySListNdisInterlockedPopEntrySList 进行后续调用时不得持有此旋转锁

若要管理来自非分页内存的固定大小条目的池,请考虑使用旁观列表而不是 S 列表。

重试 I/O 操作的驱动程序应使用双链接互锁队列和 NdisInterlockedInsertHeadListNdisInterlockedInsertTailListNdisInterlockedRemoveHeadList 函数,而不是 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 任何级别

另请参阅

NdisInitializeNPagedLookasideList

NdisInterlockedPopEntrySList

NdisInterlockedPushEntrySList

NdisQueryDepthSList

NdisQueueIoWorkItem