次の方法で共有


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 で指定する構造体の Type メンバーをNDIS_OBJECT_TYPE_DEFAULTに設定し、Revision メンバーを NET_BUFFER_POOL_PARAMETERS_REVISION_1、Size メンバーを NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1に設定します。

PoolTag

呼び出し元がこのプールから NET_BUFFER 構造体を割り当てるときに使用するカーネル プール タグ。 タグは、一重引用符で区切られた文字列で、通常は逆の順序で指定される最大 4 文字です。 カーネル プール タグは、NDIS がこのプールから割り当てられているNET_BUFFER構造体の所有者を識別するのに役立ちます。

DataSize

このプールに関連付けられているデータ バッファーの既定のデータ サイズ。 呼び出し元は、 を呼び出す場合にこの値を設定する必要があります。 NdisAllocateNetBufferMdlAndData 関数。 NDIS では、この値を使用して、NET_BUFFER構造体に割り当てるデータ バッファーのサイズを設定します。 呼び出し元がこの機能を使用しない場合は、この値を 0 に設定する必要があります。

戻り値

NdisAllocateNetBufferPool は、NDIS が割り当てるNET_BUFFER構造体プールへのハンドルを返します。 割り当てが失敗した場合、このハンドルは NULL です。 このハンドルは、このプールからNET_BUFFER構造体を割り当てて解放する NDIS 関数の後続の呼び出しで必要なパラメーターです。

注釈

次の関数を呼び出して 、NET_BUFFER 構造体プールからNET_BUFFER構造体を割り当てます。

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData
NET_BUFFERNET_BUFFER_LIST 構造体は、NDIS バッファー プールから割り当てる必要があります。 ドライバーは、プライベート メモリ プールまたはスタックからNET_BUFFERまたはNET_BUFFER_LIST構造体を割り当てて初期化することはできません。
 
NdisAllocateNetBufferPool を呼び出し、NET_BUFFER構造体プールの作成時に DataSize 値を設定できます。 この場合、MDL とデータは、呼び出し元がプールから割り当てる各NET_BUFFER構造で事前に割り当てられます。 このようなプールからNET_BUFFER構造体を割り当てるには、 NdisAllocateNetBufferMdlAndData 関数を呼び出す必要があります。

NdisAllocateNetBufferMdlAndData で割り当てられた MDL バッファーとデータ バッファーは、NET_BUFFER構造体とは別に解放しないでください。 このような構造体は、 NdisFreeNetBuffer 関数を呼び出すと、NET_BUFFER構造体で解放されます。

NdisFreeNetBufferPool 関数を呼び出して、NdisAllocateNetBufferPool で作成されたNET_BUFFER構造体プールを解放します。

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis/nblapi.h (ndis.h を含む)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 Irql_NetBuffer_Function(ndis)、NdisAllocateNetBufferPool(ndis)、NdisAllocateNetBufferPool_InitFail(ndis)

こちらもご覧ください

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBuffer

NdisAllocateNetBufferMdlAndData

NdisFreeNetBuffer

NdisFreeNetBufferPool