PCALCULATE_SCATTER_GATHER_LIST_SIZE コールバック関数 (wdm.h)
CalculateScatterGatherList ルーチンは、特定のバッファーを保持するために必要な散布/収集リストのサイズをバイト単位で計算します。
構文
PCALCULATE_SCATTER_GATHER_LIST_SIZE PcalculateScatterGatherListSize;
NTSTATUS PcalculateScatterGatherListSize(
[in] PDMA_ADAPTER DmaAdapter,
[in, optional] PMDL Mdl,
[in] PVOID CurrentVa,
[in] ULONG Length,
[out] PULONG ScatterGatherListSize,
[out, optional] PULONG pNumberOfMapRegisters
)
{...}
パラメーター
[in] DmaAdapter
バス マスター アダプターまたは DMA コントローラーを表す IoGetDmaAdapter によって返されるDMA_ADAPTER構造体へのポインター。
[in, optional] Mdl
NULL またはバッファーを含む MDL へのポインター。
[in] CurrentVa
バッファーの先頭の仮想アドレスへのポインター。
[in] Length
バッファーの長さをバイト単位で指定します。
[out] ScatterGatherListSize
ルーチンが散布/収集リストのサイズをバイト単位で返すために使用する変数へのポインター。
[out, optional] pNumberOfMapRegisters
NULL またはポインターは、バッファーに対する DMA 操作に必要なマップ レジスタの数を返すためにルーチンが使用する変数へのポインターです。
戻り値
CalculateScatterGatherList は、次のいずれかの状態コードを返します。
リターン コード | 説明 |
---|---|
|
ScatterGatherListSize および NumberOfMapRegisters で返される値は有効です。 |
|
必要なマップ レジスタの数が、使用可能なマップ レジスタの数を超えています。 |
|
指定した Length が大きすぎてバッファー内に収まりません。 |
注釈
CalculateScatterGatherList は、名前で直接呼び出すことができるシステム ルーチンではありません。 このルーチンは、 DMA_OPERATIONS 構造体で返されるアドレスからのポインターによってのみ呼び出すことができます。 ドライバーは、DeviceDescription パラメーターの Version メンバーをDEVICE_DESCRIPTION_VERSION2に設定して IoGetDmaAdapter を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapter が NULL を返す場合、このルーチンはプラットフォームでは使用できません。
呼び出し元が Mdl パラメーターに NULL を渡した場合、ルーチンは、指定されたバッファーの散布/収集リストを保持するために必要な最大サイズを計算します。 呼び出し元が Mdl パラメーターにバッファーを含む MDL を指定した場合、ルーチンは散布/収集リストを保持するために必要な実際のサイズを計算します。
ドライバーは CalculateScatterGatherList を使用して、 BuildScatterGatherList に渡す散布図/収集リスト バッファーを割り当てます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP 以降のバージョンの Windows で使用できます。 |
対象プラットフォーム | デスクトップ |
Header | wdm.h (Wdm.h を含む) |
IRQL | 任意のレベル |