PBUILD_MDL_FROM_SCATTER_GATHER_LIST コールバック関数 (wdm.h)
BuildMdlFromScatterGatherList ルーチンは、システムによって割り当てられた散布/収集リストから MDL をビルドします。
このルーチンは、システムで使用するために予約されています。
構文
PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;
NTSTATUS PbuildMdlFromScatterGatherList(
[in] PDMA_ADAPTER DmaAdapter,
[in] PSCATTER_GATHER_LIST ScatterGather,
[in] PMDL OriginalMdl,
[out] PMDL *TargetMdl
)
{...}
パラメーター
[in] DmaAdapter
バス マスター アダプターまたは DMA コントローラーを表す IoGetDmaAdapter によって返されるDMA_ADAPTER構造体へのポインター。
[in] ScatterGather
ドライバーの AdapterListControl ルーチンに渡されるSCATTER_GATHER_LIST構造体へのポインター。
[in] OriginalMdl
ドライバーが散布/収集リストの作成に使用した元の MDL へのポインター。
[out] TargetMdl
ルーチンが使用する変数へのポインターは、散布/収集リストによって記述されたバッファーを保持するために作成された MDL を返します。 返される値は OriginalMdl と同じにすることができます。
戻り値
BuildMdlFromScatterGatherList は 、次のいずれかの状態コードを返します。
リターン コード | 説明 |
---|---|
STATUS_SUCCESS | 操作が成功しました。 |
STATUS_INVALID_PARAMETER | OriginalMdl パラメーターは NULL です。 |
STATUS_INSUFFICIENT_RESOURCES | 新しい MDL を割り当てるのに十分なメモリがありません。 |
STATUS_NONE_MAPPED | システムは、散布/収集リスト内のメモリの場所に対して新しい MDL を既に作成しています。 (これは、同じ散布図/収集リストでルーチンが 2 回呼び出された場合にのみ発生します)。 |
注釈
BuildMdlFromScatterGatherList は、名前で直接呼び出すことができるシステム ルーチンではありません。 このルーチンは、 DMA_OPERATIONS 構造体で返されるアドレスからのポインターによってのみ呼び出すことができます。 ドライバーは、DeviceDescription パラメーターの Version メンバーをDEVICE_DESCRIPTION_VERSION2に設定して IoGetDmaAdapter を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapter が NULL を返す場合、このルーチンはプラットフォームでは使用できません。
ドライバーがデバイスに書き込む散布図/収集リストを作成すると、システムは書き込まれるデータのコピーを作成し、そのコピーを使用して DMA 操作を実行できます。 このルーチンを使用して、これらの場所がコピーであるかどうかに関係なく、散布図/収集リスト内のメモリの場所にアクセスします。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP 以降のバージョンの Windows で使用できます。 |
対象プラットフォーム | デスクトップ |
Header | wdm.h (Wdm.h を含む) |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | IrqlDispatch(wdm) |