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 配置文件:
默认情况下,如果未设置 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_CONFIG 的 WdmDmaVersionOverride 成员设置为 3。 此标志适用于所有 DMA 配置文件。 设置后,WDF 不会将此启用程序创建的任何 WDFDMATRANSACTION 分段到多个 DMA 传输中。 如果这不可行,则尝试初始化或执行事务会失败。 此选项适用于需要在单个 DMA 操作中接收所有数据的设备。 驱动程序还可以选择使用 WdfDmaTransactionSetSingleTransferRequirement 在每事务级别指定此项。 有关详细信息,请参阅 使用单一传输 DMA。 |
注解
可以为 WDF_DMA_ENABLER_CONFIG 结构的 Flags 成员在此页上指定值的有效按位 OR。
要求
要求 | 值 |
---|---|
最低 KMDF 版本 | 1.11 |
标头 | wdfdmaenabler.h (包括 Wdf.h) |