次の方法で共有


NdisAllocateBufferPool 関数 (ndis.h)

メモ NDIS 5。 x は非推奨となり、NDIS 6 に置き換えられます。 x があります。 新しい NDIS ドライバーの開発については、「 Windows Vista 以降のネットワーク ドライバー」を参照してください。 NDIS 5 の移植に関する情報。 x ドライバーから NDIS 6 へ。 x については、「 NDIS 5.x ドライバーを NDIS 6.0 に移植する」を参照してください。

この関数は、呼び出し元が NdisAllocateBuffer 関数を呼び出すことによってバッファー記述子を割り当てることができるハンドルを返します。

構文

void NdisAllocateBufferPool(
  [out] PNDIS_STATUS Status,
  [out] PNDIS_HANDLE PoolHandle,
  [in]  UINT         NumberOfDescriptors
);

パラメーター

[out] Status

この関数がバッファー プール割り当ての最終的な状態を返す、呼び出し元から指定された変数へのポインター。

[out] PoolHandle

この関数がバッファー プールへのハンドルを返す、呼び出し元から指定された変数へのポインター。 このハンドルは、ドライバーが後で呼び出す NDIS バッファー関数に必要なパラメーターです。

[in] NumberOfDescriptors

割り当てられたバッファー記述子をプールに解放せずに、呼び出し元がバッファー プールから割り当てるバッファー記述子の数を指定します。

戻り値

なし

解説

常にNDIS_STATUS_SUCCESSを返します。

この関数が返された後、ドライバーは NdisAllocateBuffer 関数を 1 回以上呼び出して、必要なバッファー記述子を割り当てます。 ドライバーは、初期化中にこの関数を呼び出す必要があります。

通常、NIC ドライバーによって指定される NumberOfDescriptors パラメーターは、NIC の機能によって異なります。 たとえば、リング バッファーを備えたバス マスター DMA NIC のドライバーは、完全なリングをマップするのに十分な 数の NumberOfDescriptors を少なくとも指定します。

この関数の呼び出しで指定された NumberOfDescriptors は、ドライバーが NdisAllocateBuffer を呼び出してから NdisFreeBuffer 関数を呼び出してバッファー プールの空きリストにバッファー記述子を返す必要がある回数に対する有効な制限です。

ドライバーが割り当てたバッファー プールが不要になった場合は、 NdisFreeBufferPool 関数を呼び出してバッファー プール ハンドルを解放します。

ドライバーは、この関数を呼び出す前に保持しているスピン ロックを解放する必要があります。

下位レベルのすべての NDIS ドライバーは、バッファー プールからのパケットにチェーンされているすべてのバッファー記述子を割り当てる必要があります。 仮想メモリ範囲をマッピングする OS 依存記述子を指定できるのは、最上位レベルのプロトコル ドライバーのみです。 これらのメモリ記述子が NDIS バッファー記述子と同等の場合、最上位レベルのプロトコルは、このような記述子を NDIS 関数にパラメーターとして渡すことができます。

OS バージョン: .NET 4.0 以降Windows CE。

要件

要件
Header ndis.h
IRQL IRQL <= DISPATCH_LEVEL

こちらもご覧ください