NdisInitializeNPagedLogansideList 函式 (ndis.h)

NdisInitializeNPagedLoitisideList 函式會初始化 lookaside 列表。 成功初始化之後,可以配置非分頁固定大小的區塊,並釋出至 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,則為 NdisFreeToNPagedLogansideList 函式接著會代表呼叫端釋放專案。

[in] Flags

必須為零。 此參數已保留備用。

[in] Size

要後續從 lookaside 清單配置之每個專案的大小,以位元組為單位。

[in] Tag

查詢清單專案的呼叫端提供的集區標籤。 Tag 是以單 (引號分隔的四個字元字串,例如 'derF') 。 字元通常會以反向順序指定,以便在調試程式中傾印集區或追蹤集區使用量時更容易讀取。

[in] Depth

必須為零。 此參數也會保留。

傳回值

備註

NdisInitializeNPagedLoitisideList 會初始化呼叫端提供的清單前端,但不會為清單專案配置任何記憶體。 初始項目會視需要配置,並呼叫 NdisAllocateFromNPagedLookasideList 函式,或由驅動程式提供的 Allocate 回呼函式在 Allocate 參數。 當驅動程式將專案釋回清單時,清單會填入至清單 NdisFreeToNPagedLofreesideList 函式。 專案會收集到清單上,直到達到系統決定但動態大小限制為止。 然後,lookaside 清單中的任何剩餘專案都會傳回至非分頁集區,不論是由 NdisFreeToNPagedLofreesideList,或是透過在 Free 參數呼叫驅動程式提供的 Free 回呼函式。

Lookaside 清單中的所有專案的大小都相同,在 Size 參數中指定。 外觀清單特別適用於必須動態配置和釋放固定大小內容區域的驅動程式,以維護其未完成 I/O 作業的運行時間狀態。 例如,連線導向的 NDIS 驅動程式可能會尋找外觀清單特別有用,因為這類驅動程式通常會維護一組動態內容區域來追蹤傳出和傳入呼叫。

讓驅動程式更有效率地允許 NdisAllocateFromNPagedLogansideList NdisFreeToNPagedLoativesideList 函式來管理 (專案的配置和解除分配,請參閱 ExAllocatePoolWithTagExFreePool 函式) 。 不過,在內部追蹤其記憶體使用量狀態的驅動程式,可能會將 AllocateFree 函式提供給 NdisInitializeNPagedLoitisideList

NdisInitializeNPagedLoitisideList 的呼叫端必須在 IRQL <= DISPATCH_LEVEL執行,但通常會在PASSIVE_LEVEL執行。

規格需求

需求
最低支援的用戶端 支援 NDIS 6.0 和 NDIS 5.1 驅動程式 (請參閱 Windows Vista 中的 NdisInitializeNPagedLoistasideList (NDIS 5.1) ) 。 支援 NDIS 5.1 驅動程式 (請參閱 Windows XP 中的 NdisInitializeNPagedLoitisideList (NDIS 5.1) ) 。
目標平台 桌面
標頭 ndis.h (包括 Ndis.h)
IRQL <= DISPATCH_LEVEL (请参阅一节)
DDI 合規性規則 Irql_Miscellaneous_Function (ndis)

另請參閱

ExAllocatePoolWithTag

ExFreePool

NPAGED_LOOKASIDE_LIST

NdisAllocateFromNPagedLookasideList NdisDeleteNPagedLookasideList NdisFreeToNPagedLo一sideList