WDF_DMA_SYSTEM_PROFILE_CONFIG 结构 (wdfdmaenabler.h)

[仅适用于 KMDF]

WDF_DMA_SYSTEM_PROFILE_CONFIG结构描述与系统模式 DMA 启用程序相关的特定于硬件的设置。

语法

typedef struct _WDF_DMA_SYSTEM_PROFILE_CONFIG {
  ULONG                           Size;
  BOOLEAN                         DemandMode;
  BOOLEAN                         LoopedTransfer;
  DMA_WIDTH                       DmaWidth;
  PHYSICAL_ADDRESS                DeviceAddress;
  PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor;
} WDF_DMA_SYSTEM_PROFILE_CONFIG, *PWDF_DMA_SYSTEM_PROFILE_CONFIG;

成员

Size

此结构的大小(以字节为单位)。

DemandMode

指定传输由设备的 DMA 控制
在此结构的 DmaDescriptor 成员中指定的请求行。 有关详细信息,请参阅“备注”。

LoopedTransfer

指定如果长度大于缓冲区的大小,则 DMA 适配器应循环访问指定的传输。

DmaWidth

DeviceAddress 指定的寄存器的宽度。 可能的值为 Width8Bits、Width16Bits、Width32Bits 和 Width64Bits。

DeviceAddress

转换到 DMA 控制器或从中传输的地址。 驱动程序可以通过调用 WdfDmaTransactionSetDeviceAddressOffset 来指定每个事务上此基址的偏移量。

DmaDescriptor

EvtDevicePrepareHardware 期间为设备分配了 DMA 通道的已翻译资源描述符。 这会为适配器提供 DMA 请求行。

注解

创建系统配置文件 DMA 启用程序后,驱动程序向 WdfDmaEnablerConfigureSystemProfile 提供此结构。

通常,驱动程序将 DemandMode 设置为 TRUE。 然后,驱动程序的 EvtProgramDma 回调函数对设备进行编程,以断言其 DMA 请求行并启动传输。 在这种情况下,在 EvtProgramDma 仍在运行时,可能会开始传输。

驱动程序必须确保在驱动程序的 EvtProgramDma 回调函数开始执行之前未断言设备的 DMA 请求行。 否则,DMA 传输可能在框架调用 EvtProgramDma 之前开始。

如果 DemandMode 设置为 FALSE,则 DMA 传输可能会在框架调用驱动程序的 EvtProgramDma 函数之前开始。

要求

要求
最低受支持的客户端 Windows 8
最低 KMDF 版本 1.11
标头 wdfdmaenabler.h (包括 Wdf.h)

另请参阅

WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT

WdfDmaEnablerConfigureSystemProfile