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 返回以下状态代码之一:
返回代码 | 描述 |
---|---|
STATUS_SUCCESS | 作成功。 |
STATUS_INVALID_PARAMETER | OriginalMdl 参数 NULL。 |
STATUS_INSUFFICIENT_RESOURCES | 没有足够的内存可用于分配新的 MDL。 |
STATUS_NONE_MAPPED | 系统已为散点/收集列表中的内存位置创建新的 MDL。 (仅当在同一散点/收集列表上调用例程两次时,才会发生这种情况。 |
言论
BuildMdlFromScatterGatherList 不是可以直接按名称调用的系统例程。 只能通过从 DMA_OPERATIONS 结构中返回的地址的指针调用此例程。 驱动程序通过调用 IoGetDmaAdapter,并将 DeviceDescription 参数 版本 成员设置为DEVICE_DESCRIPTION_VERSION2来获取此例程的地址。 如果 IoGetDmaAdapter 返回 NULL,则例程在平台上不可用。
当驱动程序创建散点/收集列表以写入设备时,系统可以创建要写入的数据的副本,并使用该副本来执行 DMA作。 使用此例程访问散点/收集列表中的内存位置,而不考虑这些位置是否为副本。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows XP 和更高版本的 Windows 中可用。 |
目标平台 | 桌面 |
标头 | wdm.h (包括 Wdm.h) |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | IrqlDispatch(wdm) |