NdisInitializeNPagedLookasideList 函数 (ndis.h)

NdisInitializeNPagedLookasideList 函数初始化 lookaside 列表。 成功初始化后,可以从外观列表分配非分页固定大小的块并将其释放。

语法

void NdisInitializeNPagedLookasideList(
  [in]           PNPAGED_LOOKASIDE_LIST Lookaside,
  [in, optional] PALLOCATE_FUNCTION     Allocate,
  [in, optional] PFREE_FUNCTION         Free,
  [in]           ULONG                  Flags,
  [in]           SIZE_T                 Size,
  [in]           ULONG                  Tag,
  [in]           USHORT                 Depth
);

参数

[in] Lookaside

指向 NPAGED_LOOKASIDE_LIST 结构的指针,该结构包含要初始化的调用方提供的外观列表头。 结构必须在 64 位平台上对齐 16 字节。 驱动程序必须提供驻留的列表头,即非分页系统空间。

[in, optional] Allocate

NULL 的函数入口点,或指定调用方提供的 Allocate 函数的入口点,该函数将在调用时分配在 Size 成员中指定的大小的条目。 如果 分配NULL,则为 NdisAllocateFromNPagedLookasideList 函数随后代表调用方分配条目。 如果调用方提供 Allocate 函数,则它还必须提供 Free 函数。

[in, optional] Free

NULL 的函数入口点,或指定调用方提供的 Free 函数的入口点,该函数将在调用时释放 Size 成员中指定的大小的条目。 如果 免费NULL,则为 NdisFreeToNPagedLookasideList 函数随后代表调用方释放条目。

[in] Flags

必须为零。 此参数保留。

[in] Size

要从 lookaside 列表随后分配的每个条目的大小(以字节为单位)。

[in] Tag

用于查找列表条目的调用方提供的池标记。 标记 是一个由单引号(例如“derF”)分隔的四个字符的字符串。 这些字符通常按相反顺序指定,以便在调试器中转储池或跟踪池使用情况时更容易读取这些字符。

[in] Depth

必须为零。 此参数也是保留的。

返回值

没有

言论

NdisInitializeNPagedLookasideList 初始化调用方提供的列表头,但不会为列表项分配内存。 初始条目是根据需要分配的,并调用 NdisAllocateFromNPagedLookasideList 函数,或通过驱动程序提供的 Allocate 参数处分配 回调函数。 该列表填充为驱动程序释放条目回到列表,并带有 NdisFreeToNPagedLookasideList 函数。 条目会收集到列表中,直到达到系统确定但动态调整大小的限制。 然后,通过 NdisFreeToNPagedLookasideList 或调用 Free 参数的驱动程序提供的 Free 回调函数,返回到非分页池。

lookaside 列表中的所有条目的大小相同,该大小在 Size 参数中指定。 外观列表对于必须动态分配和释放固定大小的上下文区域的驱动程序特别有用,这些区域要维护其未完成的 I/O作的运行时状态。 例如,面向连接的 NDIS 驱动程序可能会查找外观列表特别有用,因为此类驱动程序通常维护一组动态上下文区域来跟踪传出和传入呼叫。

驱动程序允许 更高效 NdisAllocateFromNPagedLookasideList NdisFreeToNPagedLookasideList 函数来管理条目的分配和解除分配(请参阅 ExAllocatePoolWithTagExFreePool 函数)。 但是,在内部跟踪其内存使用情况状态的驱动程序可能会提供 分配免费 函数来 NdisInitializeNPagedLookasideList

NdisInitializeNPagedLookasideList 的调用方必须在 IRQL <= DISPATCH_LEVEL 上运行,但通常在PASSIVE_LEVEL运行。

要求

要求 价值
最低支持的客户端 支持 NDIS 6.0 和 NDIS 5.1 驱动程序(请参阅 Windows Vista 中的 NdisInitializeNPagedLookasideList (NDIS 5.1)。 支持 NDIS 5.1 驱动程序(请参阅 Windows XP 中的 NdisInitializeNPagedLookasideList (NDIS 5.1) 。
目标平台 桌面
标头 ndis.h (包括 Ndis.h)
IRQL <= DISPATCH_LEVEL (请参阅“备注”部分)
DDI 符合性规则 Irql_Miscellaneous_Function(ndis)

另请参阅

ExAllocatePoolWithTag

ExFreePool

NPAGED_LOOKASIDE_LIST

NdisAllocateFromNPagedLookasideList NdisDeleteNPagedLookasideList NdisFreeToNPagedLookasideList