StorPortBuildScatterGatherList 関数 (storport.h)
StorPortBuildScatterGatherList ルーチンは、指定されたデータ バッファーの散布/収集リストを作成します。
構文
ULONG StorPortBuildScatterGatherList(
[in] PVOID HwDeviceExtension,
[in] PVOID Mdl,
[in] PVOID CurrentVa,
[in] ULONG Length,
[in] PPOST_SCATTER_GATHER_EXECUTE ExecutionRoutine,
[in] PVOID Context,
[in] BOOLEAN WriteToDevice,
[in, out] PVOID ScatterGatherBuffer,
[in] ULONG ScatterGatherBufferLength
);
パラメーター
[in] HwDeviceExtension
ホスト バス アダプター (HBA) のハードウェア デバイス拡張機能へのポインター。
[in] Mdl
データ バッファーに関連付けられているメモリ ページを記述するメモリ記述子リスト (MDL) へのポインター。
[in] CurrentVa
データ バッファーの仮想アドレス。
[in] Length
データ バッファーの長さ (バイト単位)。
[in] ExecutionRoutine
ミニポート ドライバーが提供する ExecutionRoutine へのポインター。 Storport ドライバーは、散布図/収集リストの作成後にこのルーチンを呼び出します。 ミニポート ドライバーは、 StorPortBuildScatterGatherList ルーチンの呼び出しに続くコードではなく、実行ルーチン内の散布/収集リストを使用するすべての操作を実行する必要があります。
ExecutionRoutine は次のように宣言されます。
VOID
ExecutionRoutine (
IN PVOID *DeviceObject,
IN PVOID *Irp,
IN PSTOR_SCATTER_GATHER_LIST ScatterGather,
IN PVOID Context
);
DeviceObject
ミニポート ドライバーは、このパラメーターを無視する必要があります。
Irp
ミニポート ドライバーは、このパラメーターを無視する必要があります。
ScatterGather
指定したデータ バッファーの散布/収集リストを含む STOR_SCATTER_GATHER_LIST 構造体へのポインター。
Context
StorPortBuildScatterGatherList 関数の Context パラメーターで指定されたコンテキスト値。
Storport ドライバーは、IRQL = DISPATCH_LEVELでミニポート ドライバーの ExecutionRoutine を呼び出します。
[in] Context
ポート ドライバーが ExecutionRoutine パラメーターで指定された実行ルーチンに渡すコンテキスト値。 実行ルーチンでは、この値を使用して要求を一意に識別します。
[in] WriteToDevice
DMA 転送の方向を示す値。 値 TRUE は、データ バッファーからデバイスへの転送を示し、FALSE の値は、デバイスからデータ バッファーへの転送を示します。
[in, out] ScatterGatherBuffer
散布図/収集リストを受け取るミニポート指定のバッファーへのポインター。 ミニポート ドライバーは、 StorPortAllocatePool ルーチンを呼び出すことによって、このバッファーのメモリを割り当てることができます。
[in] ScatterGatherBufferLength
ScatterGatherBuffer パラメーターが指すバッファーのサイズ (バイト単位)。
戻り値
StorPortBuildScatterGatherList は、次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
|
この関数は、アクティブなオペレーティング システムには実装されません。 |
|
ルーチンが散布図/収集リストを正常に作成したことを示します。
大事な 「解説」を参照してください。
|
|
渡された HwDeviceExtension は NULL でした。 |
|
呼び出しが無効な IRQL で行われました。 |
|
転送に使用できるマップ レジスタが不足しています。 |
|
Length パラメーターが大きすぎてバッファー内に収まらない。 |
注釈
ミニポート ドライバーは 、StorPortPutScatterGatherList を呼び出して、散布/収集リストの構築中に StorPortBuildScatterGatherList が割り当てたリソースを解放します。
ミニポート ドライバーは、分散/収集リストに割り当てられたメモリを解放または再利用する前に 、StorPortPutScatterGatherList を呼び出す必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | storport.h (Storport.h を含む) |
IRQL | DISPATCH_LEVEL |