WDF_DMA_ENABLER_CONFIG_FLAGS 枚举 (wdfdmaenabler.h)

[仅适用于 KMDF]

WDF_DMA_ENABLER_CONFIG_FLAGS 枚举类型定义在驱动程序WDF_DMA_ENABLER_CONFIG结构中使用的标志。

语法

typedef enum _WDF_DMA_ENABLER_CONFIG_FLAGS {
  WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION = 0x00000001,
  WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER = 0x00000002
} WDF_DMA_ENABLER_CONFIG_FLAGS;

常量

 
WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION
值: 0x00000001
WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION标志仅适用于以下 DMA 配置文件:


  • WdfDmaProfileScatterGather

  • WdfDmaProfileScatterGather64

  • WdfDmaProfileScatterGatherDuplex

  • WdfDmaProfileScatterGather64Duplex



默认情况下,如果未设置 WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION 并且 WDF_DMA_PROFILE 是上一个列表中的其中一个,则 WDF
创建此 DMA 适配器事务使用的散点/收集列表的旁观列表
对象。 初始化列表条目以允许指定的最大值
传输长度。 执行事务时,WDF 会调用 BuildScatterGatherList 条目函数。 前进进度驱动因素
不得设置此标志,并且必须使用前面显示的四个配置文件之一。

如果设置了 WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION 并且 WDF_DMA_PROFILE 是上一个列表中的其中一个,则 WDF 不会创建旁观列表。 执行事务时,WDF 会调用 GetScatterGatherList

设置 WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION 可能会导致内存使用率降低,尤其是在最大传输长度较大时。 但是,设置此标志可能会导致在内存不足的情况下无法执行 DMA 操作。 为了保证设置 WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION 时向前推进,驱动程序可能会使用单独的 DMA 启用程序,或通过公共缓冲区弹跳传输。
WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER
值: 0x00000002
从 KMDF 版本 1.19 开始提供 WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER 标志。 此标志还需要 DMA 版本 3。
若要选择 DMA 版本 3,请将 WDF_DMA_ENABLER_CONFIGWdmDmaVersionOverride 成员设置为 3。

此标志适用于所有 DMA 配置文件。 设置后,WDF 不会将此启用程序创建的任何 WDFDMATRANSACTION 分段到多个 DMA 传输中。 如果这不可行,则尝试初始化或执行事务会失败。 此选项适用于需要在单个 DMA 操作中接收所有数据的设备。

驱动程序还可以选择使用 WdfDmaTransactionSetSingleTransferRequirement 在每事务级别指定此项。

有关详细信息,请参阅 使用单一传输 DMA

注解

可以为 WDF_DMA_ENABLER_CONFIG 结构的 Flags 成员在此页上指定值的有效按位 OR。

要求

要求
最低 KMDF 版本 1.11
标头 wdfdmaenabler.h (包括 Wdf.h)

另请参阅

WDF_DMA_ENABLER_CONFIG

WDF_DMA_PROFILE

WdfDmaTransactionSetSingleTransferRequirement