WdfDmaEnablerConfigureSystemProfile 函数 (wdfdmaenabler.h)
[仅适用于 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
一个WDF_DMA_DIRECTION类型的值,该值指定 DMA 传输操作的方向。 如果此启用器的 WDF_DMA_PROFILE 值不是 WdfDmaProfileSystemDuplex,则框架将忽略此参数。
返回值
如果操作成功,WdfDmaEnablerConfigureSystemProfile 将返回STATUS_SUCCESS。 否则,该方法可能会返回以下值之一。
返回代码 | 说明 |
---|---|
|
驱动程序请求当前操作系统不支持的 DMA 配置。 |
|
驱动程序在 ProfileConfig 参数中提供了 NULL。 |
|
ProfileConfig 参数指向的 结构的 Size 成员不等于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) |
Library | Wdf01000.sys (请参阅框架库 Versioning.) |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | DriverCreate (kmdf) |