[仅适用于 KMDF]
WdfDmaEnablerConfigureSystemProfile 方法配置系统模式 DMA 启用程序的硬件特定设置,并完成资源初始化。
语法
NTSTATUS WdfDmaEnablerConfigureSystemProfile(
[in] WDFDMAENABLER DmaEnabler,
[in] PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig,
[in] WDF_DMA_DIRECTION ConfigDirection
);
参数
[in] DmaEnabler
DMA 启用器对象的句柄。
[in] ProfileConfig
指向 WDF_DMA_SYSTEM_PROFILE_CONFIG 结构的指针。 驱动程序必须通过调用 WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT来初始化此结构。
[in] ConfigDirection
指定 DMA 传输作方向的 WDF_DMA_DIRECTION类型值。 如果此启用器的 WDF_DMA_PROFILE 值未 WdfDmaProfileSystemDuplex,框架将忽略此参数。
返回值
WdfDmaEnablerConfigureSystemProfile 如果作成功,则返回STATUS_SUCCESS。 否则,该方法可能会返回以下值之一。
| 返回代码 | 说明 |
|---|---|
|
驱动程序请求了当前作系统不支持的 DMA 配置。 |
|
驱动程序在 ProfileConfig 参数中提供了 NULL。 |
|
ProfileConfig 参数指向的结构的 大小 成员不等于 WDF_DMA_SYSTEM_PROFILE_CONFIG 结构的大小。 |
|
ProfileConfig 参数指向的结构 DmaDescriptor 成员为 NULL,或者 ConfigDirection 参数包含无效值。 |
注解
在调用 WdfDmaEnablerConfigureSystemProfile之前,驱动程序必须调用 WdfDmaEnablerCreate 来创建 enabler 对象。
驱动程序通常从 EvtDevicePrepareHardware 回调函数调用 WdfDmaEnablerConfigureSystemProfile。
如果驱动程序在调用 WdfDmaEnablerCreate时指定双工配置文件,则 WdfDmaEnablerConfigureSystemProfile 方法的 ConfigDirection 参数 值必须 WdfDmaDirectionReadFromDevice 才能获取读取作的 DMA_ADAPTER 结构,WdfDmaDirectionWriteToDevice 以获取写入作 DMA_ADAPTER 结构。
如果 DMA 启用器是双工启用器,则驱动程序必须先初始化特定方向,然后才能使用它。
如果驱动程序未指定双工配置文件,驱动程序可以指定 WdfDmaDirectionReadFromDevice 或 WdfDmaDirectionWriteToDevice。
例子
下面的代码示例来自驱动程序的 EvtDevicePrepareHardware 回调函数。 此示例初始化 WDF_DMA_SYSTEM_PROFILE_CONFIG 结构并调用 WdfDmaEnablerConfigureSystemProfile。
WDF_DMA_SYSTEM_PROFILE_CONFIG systemDmaConfig;
PHYSICAL_ADDRESS pa;
pa.QuadPart = 0;
WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT(&systemDmaConfig,
pa,
Width8Bits,
partial);
systemDmaConfig.DemandMode = true;
ntStatus = WdfDmaEnablerConfigureSystemProfile(fdoExtension->DmaEnabler,
&systemDmaConfig,
WdfDmaDirectionReadFromDevice);
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows 8 |
| 目标平台 | 普遍 |
| 最低 KMDF 版本 | 1.11 |
| 标头 | wdfdmaenabler.h (包括 Wdf.h) |
| 图书馆 | Wdf01000.sys(请参阅框架库版本控制。 |
| IRQL | PASSIVE_LEVEL |
| DDI 符合性规则 | DriverCreate(kmdf) |