次の方法で共有


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 構造体。 NDIS_OBJECT_TYPE_DEFAULTに指定 構造体の メンバーを設定リビジョン メンバーを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_BUFFER および NET_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 以降でサポートされています。
ターゲット プラットフォーム 万国
ヘッダー 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