共用方式為


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

IoGetDmaAdapter 所傳回之DMA_ADAPTER結構的指標,代表總線主要適配卡或 DMA 控制器。

[in] ScatterGather

傳遞至驅動程式 AdapterListControl 例程之SCATTER_GATHER_LIST結構的指標。

[in] OriginalMdl

驅動程式用來建置散佈/收集清單的原始 MDL 指標。

[out] TargetMdl

例程用來傳回用來保存散佈/收集清單所描述之緩衝區的 MDL 的指標。 傳回的值可以與 OriginalMdl 相同。

傳回值

BuildMdlFromScatterGatherList 會傳回下列其中一個狀態代碼:

傳回碼 Description
STATUS_SUCCESS 作業成功。
STATUS_INVALID_PARAMETER OriginalMdl 參數為 NULL
STATUS_INSUFFICIENT_RESOURCES 記憶體不足,無法配置新的 MDL。
STATUS_NONE_MAPPED 系統已經為散佈/收集清單中的記憶體位置建立新的 MDL。 (只有在相同的散佈/收集清單上呼叫例程兩次時,才會發生此情況。)

備註

BuildMdlFromScatterGatherList 不是可直接依名稱呼叫的系統例程。 這個例程只能由 DMA_OPERATIONS結構中 傳回之位址的指標呼叫。 驅動程式會呼叫IoGetDmaAdapter,並將DeviceDescription參數的Version成員設定為 DEVICE_DESCRIPTION_VERSION2,以取得此例程的位址。 如果 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