WDF_DMA_ENABLER_CONFIG 结构 (wdfdmaenabler.h)
[仅适用于 KMDF]
WDF_DMA_ENABLER_CONFIG 结构为 DMA 启用程序对象提供特征。
语法
typedef struct _WDF_DMA_ENABLER_CONFIG {
ULONG Size;
WDF_DMA_PROFILE Profile;
size_t MaximumLength;
PFN_WDF_DMA_ENABLER_FILL EvtDmaEnablerFill;
PFN_WDF_DMA_ENABLER_FLUSH EvtDmaEnablerFlush;
PFN_WDF_DMA_ENABLER_DISABLE EvtDmaEnablerDisable;
PFN_WDF_DMA_ENABLER_ENABLE EvtDmaEnablerEnable;
PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_START EvtDmaEnablerSelfManagedIoStart;
PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP EvtDmaEnablerSelfManagedIoStop;
ULONG AddressWidthOverride;
ULONG WdmDmaVersionOverride;
ULONG Flags;
} WDF_DMA_ENABLER_CONFIG, *PWDF_DMA_ENABLER_CONFIG;
成员
Size
此结构的大小(以字节为单位)。
Profile
一个WDF_DMA_PROFILE类型的值,用于标识将与 DMA 启用程序对象关联的总线主 DMA 操作的类型。
MaximumLength
设备可在单个 DMA 传输中处理的默认最大大小(以字节为单位)。 (驱动程序可以通过调用 WdfDmaTransactionSetMaximumLength.) 如果驱动程序必须在支持最多 16 个映射寄存器的 Microsoft Windows 操作系统版本上运行,则 MaximumLength 必须小于 65,536。
EvtDmaEnablerFill
指向驱动程序的 EvtDmaEnablerFill 事件回调函数的指针,或 NULL。
EvtDmaEnablerFlush
指向驱动程序的 EvtDmaEnablerFlush 事件回调函数或 NULL 的指针。
EvtDmaEnablerDisable
指向驱动程序的 EvtDmaEnablerDisable 事件回调函数的指针,或 NULL。
EvtDmaEnablerEnable
指向驱动程序的 EvtDmaEnable 事件回调函数的指针,或 NULL。
EvtDmaEnablerSelfManagedIoStart
指向驱动程序的 EvtDmaEnablerSelfManagedIoStart 事件回调函数的指针,或 NULL。
EvtDmaEnablerSelfManagedIoStop
指向驱动程序的 EvtDmaEnablerSelfManagedIoStop 事件回调函数的指针,或 NULL。
AddressWidthOverride
设置为零以接受 配置文件中指定的地址宽度。 驱动程序可以通过将此成员设置为介于 24 和 63 之间的值来替代 配置文件 地址宽度。 如果驱动程序指定系统模式 DMA 配置文件, AddressWidthOverride 必须为零。 如果驱动程序指定 32 位 DMA 配置文件, AddressWidthOverride 不能大于 32。 AddressWidthOverride 成员在 1.11 版及更高版本的 KMDF 中可用。 有关详细信息,请参阅 备注。
WdmDmaVersionOverride
设置为零以接受默认 DMA 版本。 若要请求 DMA 版本 3,请将 设置为 3。 WdmDmaVersionOverride 成员在 1.11 版和更高版本的 KMDF 中可用。 DMA 版本 3 从 Windows 8 开始提供。
Flags
WDF_DMA_ENABLER_CONFIG_FLAGS枚举中的一个或多个值的按位 OR。 Flags 成员在 1.11 版和更高版本的 KMDF 中可用。
注解
WDF_DMA_ENABLER_CONFIG 结构用作 WdfDmaEnablerCreate 方法的输入参数。
驱动程序必须调用 WDF_DMA_ENABLER_CONFIG_INIT 才能初始化 WDF_DMA_ENABLER_CONFIG 结构。
在 Windows 8 及更高版本中,当驱动程序为 AddressWidthOverride 提供非零值时,框架会请求 DMA 版本 3 并将 AddressWidthOverride 值传递到 HAL。
在 Windows 7 和 Windows Vista 上,当驱动程序为 AddressWidthOverride 提供非零值时,框架将使用 32 位或 24 位 DMA。 例如,如果驱动程序指定 64 位配置文件并提供 32 的 AddressWidthOverride ,则框架将使用 32 位 DMA。 如果驱动程序指定 32 位配置文件并提供 24 的 AddressWidthOverride ,则框架将使用 24 位 DMA。
要求
要求 | 值 |
---|---|
最低 KMDF 版本 | 1.0 |
标头 | wdfdmaenabler.h (包括 Wdf.h) |
另请参阅
EvtDmaEnablerSelfManagedIoStart