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,请将 WdmDmaVersionOverrideWDF_DMA_ENABLER_CONFIG 成员设置为 3。

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

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

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

注解

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

要求

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

另请参阅

WDF_DMA_ENABLER_CONFIG

WDF_DMA_PROFILE

WdfDmaTransactionSetSingleTransferRequirement