NdisMAllocateSharedMemoryAsyncEx 関数 (ndis.h)
注意
ARM および ARM64 プロセッサの場合、NDIS ドライバー ライターは、NDIS 散布図/収集 DMA の代わりに WDF DMA または WDM DMA を使用することを強くお勧めします。
WDF DMA の詳細については、「KMDF ドライバーでの DMA 操作の処理」を参照してください。
ミニポート ドライバーは、NdisMAllocateSharedMemoryAsyncEx 関数を呼び出して、ドライバーとそのバス マスター DMA NIC の間で共有される追加のメモリを割り当てます。通常、ミニポート ドライバーが使用可能な NIC 受信バッファーで不足している場合です。
構文
NDIS_STATUS NdisMAllocateSharedMemoryAsyncEx(
[in] NDIS_HANDLE MiniportDmaHandle,
[in] ULONG Length,
[in] BOOLEAN Cached,
[in] PVOID Context
);
パラメーター
[in] MiniportDmaHandle
DMA リソースを管理するために NDIS が使用するコンテキスト領域へのハンドル。 呼び出し元は、このハンドルを呼び出して取得しました。NdisMRegisterScatterGatherDma 関数を します。
[in] Length
割り当てるバイト数。
[in] Cached
このパラメーターは無視されます (キャッシュされたメモリは常に x86 および x64 システムで使用されます)。
[in] Context
呼び出されたときに ミニポートSharedMemoryAllocateComplete 関数に渡されるドライバーによって決定されたコンテキストへのポインター。
戻り値
NdisMAllocateSharedMemoryAsyncEx は、次のいずれかを返すことができます。
リターン コード | 形容 |
---|---|
|
NDIS は、ミニポートSharedMemoryAllocateComplete 関数を呼び出し、割り当てられた共有メモリを説明する情報を提供します。 共有メモリの割り当てが失敗した場合、NDIS はミニポートSharedMemoryAllocateComplete 呼び出し、null ポインター 渡します。 |
|
現時点では、要求されたメモリを割り当てませんでした。 NdisMAllocateSharedMemoryAsyncEx がこの状態を返した場合、システム リソースが使用可能になったかどうかに応じて、同じパラメーターを持つ後続の呼び出しが成功する可能性があります。 |
備考
このようなミニポート ドライバーは通常、受信転送に使用できる共有メモリ バッファーの数を追跡する 1 つ以上の状態変数を保持します。 使用可能なバッファーの数がドライバーによって決定された低に達すると、ミニポート ドライバーは NdisMAllocateSharedMemoryAsyncEx を呼び出して、共有メモリにバッファー領域を割り当てます。 使用可能なバッファーの数がドライバーによって決定された高に上昇すると、ミニポート ドライバーは、その前の動的割り当てを解放する 1 回以上 NdisMFreeSharedMemory を呼び出します。
通常、このようなミニポート ドライバーは、NIC が削除されるまで、NdisMAllocateSharedMemory で割り当てられた ミニポートInitializeEx 関数の共有メモリのブロックを保持します。 NIC が削除されると、NDIS はミニポート ドライバーの ミニポートHaltEx 関数を呼び出します。 この割り当ては、NIC を介した転送の平均需要を処理するのに十分です。
ミニポート ドライバーは、割り当てることができる共有メモリの量に制限を設定する必要があります。 この制限はドライバー固有であり、ドライバーがバッファーを使い果たさないように十分に高くする必要があります。 過剰に高い制限を設定しないでください。これにより、共有メモリが無駄に消費され、システムのパフォーマンスが低下する可能性があります。
NdisMAllocateSharedMemoryAsyncEx または NdisMAllocateSharedMemory 呼び出すミニポート ドライバーは、NIC が削除されたときに、NdisMFreeSharedMemory への 1 つ以上の呼び出しで未処理のすべての割り当てを解放する必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | NDIS 6.0 以降でサポートされています。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | ndis.h (Ndis.h を含む) |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 を する | Irql_Gather_DMA_Function(ndis) |
関連項目
ミニポートSharedMemoryAllocateCompleteNdisMAllocateSharedMemory の
NdisMFreeSharedMemory の
NdisMRegisterDmaChannel の
NdisMRegisterScatterGatherDma の