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