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 で返される値は有効です。 |
|
必要なマップ レジスタの数が、使用可能なマップ レジスタの数を超えています。 |
|
指定した 長 が大きすぎてバッファー内に収まりません。 |
備考
CalculateScatterGatherList は、名前で直接呼び出すことができるシステム ルーチンではありません。 このルーチンは、DMA_OPERATIONS 構造体で返されるアドレスからのポインターによってのみ呼び出すことができます。 ドライバーは、DeviceDescription パラメーター DEVICE_DESCRIPTION_VERSION2 に設定された Version メンバーを使用して IoGetDmaAdapter を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapter が NULL 返す場合、このルーチンはプラットフォームでは使用できません。
呼び出し元が Mdl パラメーター NULL を渡した場合、ルーチンは、指定されたバッファーの散布/収集リストを保持するために必要な最大サイズを計算します。 呼び出し元が、Mdl パラメーターにバッファーを含む MDL を指定した場合、ルーチンは散布図/収集リストを保持するために必要な実際のサイズを計算します。
ドライバーは、CalculateScatterGatherList を使用して、BuildScatterGatherListに渡す散布図/収集リスト バッファーを割り当てます。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP 以降のバージョンの Windows で使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | wdm.h (Wdm.h を含む) |
IRQL | 任意のレベル |
関連項目
IoGetDmaAdapter の