次の方法で共有


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 パラメーター DEVICE_DESCRIPTION_VERSION2 に設定された Version メンバーを使用して IoGetDmaAdapter を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapter が NULL 返す場合、このルーチンはプラットフォームでは使用できません。

ドライバーがデバイスに書き込む散布図/収集リストを作成すると、システムは書き込まれるデータのコピーを作成し、そのコピーを使用して DMA 操作を実行できます。 このルーチンを使用して、これらの場所がコピーであるかどうかに関係なく、散布図/収集リスト内のメモリの場所にアクセスします。

必要条件

要件 価値
サポートされる最小クライアント Windows XP 以降のバージョンの Windows で使用できます。
ターゲット プラットフォーム デスクトップ
ヘッダー wdm.h (Wdm.h を含む)
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 する IrqlDispatch(wdm)

関連項目

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

SCATTER_GATHER_LIST