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) |