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 成员时分配 大小为的 条目。 如果 AllocateNULL,则 NdisAllocateFromNPagedLookasideList 函数随后代表调用方分配条目。 如果调用方提供 Allocate 函数,则它还必须提供 Free 函数。

[in, optional] Free

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

[in] Flags

必须为零。 此参数为保留参数。

[in] Size

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

[in] Tag

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

[in] Depth

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

返回值

备注

NdisInitializeNPagedLookasideList 初始化调用方提供的列表头,但不为列表条目分配内存。 初始条目是根据需要通过调用 来分配的 NdisAllocateFromNPagedLookasideList 函数或由驱动程序提供的 Allocate 回调函数在 Allocate 参数处。 当驱动程序使用 将条目释放回列表时,将填充该列表 NdisFreeToNPagedLookasideList 函数。 条目在列表中收集,直到达到系统确定但动态大小的限制。 然后,通过 NdisFreeToNPagedLookasideList 或通过在 Free 参数处调用驱动程序提供的 Free 回调函数,将 lookaside 列表中的任何剩余条目返回到非分页池。

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

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

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