次の方法で共有


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 を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapterNULL を返す場合、このルーチンはプラットフォームでは使用できません。

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

要件

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

こちらもご覧ください

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

SCATTER_GATHER_LIST