共用方式為


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 成員、將 Revision 成員設定為 NET_BUFFER_POOL_PARAMETERS_REVISION_1,並將 Size 成員設定為 NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1。

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結構。
 
您可以呼叫 NdisAllocateNetBufferPool,並在建立NET_BUFFER結構集區時設定 DataSize 值。 在此情況下,MDL 和數據會預先配置給呼叫端從集區配置的每個NET_BUFFER結構。 您必須呼叫 NdisAllocateNetBufferMdlAndData 函式,才能從這類集區配置NET_BUFFER結構。

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

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

要求

要求 價值
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平臺 普遍
標頭 ndis/nblapi.h (include 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