NdisAllocateNetBufferPool 函式 (ndis/nblapi.h)

呼叫 NdisAllocateNetBufferPool 函式來配置 NET_BUFFER 結構的集區。

語法

NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferPool(
  [in, optional] NDIS_HANDLE                      NdisHandle,
  [in]           NET_BUFFER_POOL_PARAMETERS const *Parameters
);

參數

[in, optional] NdisHandle

在呼叫端初始化期間取得的 NDIS 句柄。

[in] Parameters

定義集區參數之NET_BUFFER_POOL_PARAMETERS結構的指標。 結構的定義如下:

typedef struct _NET_BUFFER_POOL_PARAMETERS {
  NDIS_OBJECT_HEADER  Header;
  ULONG  PoolTag;
  ULONG  DataSize;
} NET_BUFFER_POOL_PARAMETERS, *PNET_BUFFER_POOL_PARAMETERS;

此結構包含下列成員:

NET_BUFFER_POOL_PARAMETERS 結構的NDIS_OBJECT_HEADER結構。 設定 Header 指定要NDIS_OBJECT_TYPE_DEFAULT的 Type 成員、要NET_BUFFER_POOL_PARAMETERS_REVISION_1的 Revision 成員,以及要NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1的 Size 成員。

PoolTag

呼叫端從這個集區配置 NET_BUFFER 結構時所使用的核心集區標籤。 標記是以單引號分隔的字串,最多四個字元,通常是以反向順序指定。 核心集區標籤可協助 NDIS 識別從這個集區配置之NET_BUFFER結構的擁有者。

DataSize

與此集區相關聯之數據緩衝區的預設數據大小。 如果呼叫端呼叫 ,則呼叫端必須設定此值 NdisAllocateNetBufferMdlAndData 函 式。 NDIS 會使用此值來設定配置給NET_BUFFER結構的數據緩衝區大小。 如果呼叫端未使用這項功能,此值應該設定為零。

傳回值

NdisAllocateNetBufferPool 會將句柄傳回給 NDIS 配置的NET_BUFFER結構集區。 如果配置失敗,此句柄為 NULL。 此句柄是後續呼叫 NDIS 函式的必要參數,可配置和釋放此集區NET_BUFFER結構。

備註

呼叫下列函式,從 NET_BUFFER 結構集區配置NET_BUFFER結構。

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
注意NET_BUFFERNET_BUFFER_LIST 結構必須從 NDIS 緩衝池配置。 驅動程式不得從其私人記憶體集區或堆疊配置和初始化NET_BUFFER或NET_BUFFER_LIST結構。
 
您可以在建立NET_BUFFER結構集區時呼叫 NdisAllocateNetBufferPool 並設定 DataSize 值。 在此情況下,MDL 和數據會預先配置給呼叫端從集區配置的每個NET_BUFFER結構。 您必須呼叫 NdisAllocateNetBufferMdlAndData 函式,才能從這類集區配置NET_BUFFER結構。

使用 NdisAllocateNetBufferMdlAndData 配置的 MDL 和數據緩衝區不應與NET_BUFFER結構分開釋放。 當您呼叫 NdisFreeNetBuffer 函式時,這類結構會釋放NET_BUFFER結構。

呼叫 NdisFreeNetBufferPool 函式,以釋放使用 NdisAllocateNetBufferPool 建立的NET_BUFFER結構集區。

規格需求

需求
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平台 Universal
標頭 ndis/nblapi.h (包含 ndis.h)
程式庫 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 Irql_NetBuffer_Function (ndis) 、NdisAllocateNetBufferPool (ndis) ,NdisAllocateNetBufferPool_InitFail (ndis)

另請參閱

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool