[仅适用于 KMDF]
驱动程序的 EvtDmaTransactionConfigureDmaChannel 事件回调函数为系统模式 DMA 启用器配置 DMA 适配器。
语法
EVT_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL EvtWdfDmaTransactionConfigureDmaChannel;
BOOLEAN EvtWdfDmaTransactionConfigureDmaChannel(
[in] WDFDMATRANSACTION DmaTransaction,
[in] WDFDEVICE Device,
[in] PVOID Context,
[in, optional] PMDL Mdl,
[in] size_t Offset,
[in] size_t Length
)
{...}
参数
[in] DmaTransaction
表示正在执行的事务的 DMA 事务对象的句柄。
[in] Device
驱动程序在调用 WdfDmaTransactionCreate时指定的框架设备对象的句柄。
[in] Context
上一次调用 WdfDmaTransactionSetChannelConfigurationCallback中指定的驱动程序指定的上下文指针。
[in, optional] Mdl
指向单个内存描述符列表(MDL)或 MDL 链的指针,用于描述与当前传输关联的缓冲区;如果上次传输已完成且适配器已释放,则为 NULL。
[in] Offset
Mdl 参数中指定的缓冲区中的字节偏移量,从中开始当前传输。
[in] Length
当前传输中传输的字节数。
返回值
如果 EvtDmaTransactionConfigureDmaChannel 回调函数成功配置 DMA 通道,则返回 TRUE。 如果此回调函数返回 FALSE,框架将停止事务,并且不调用 EvtProgramDma。
注解
驱动程序通过调用 WdfDmaTransactionSetChannelConfigurationCallback来注册 EvtDmaTransactionConfigureDmaChannelChannel 事件回调函数。
在分配适配器通道后,在映射传输和调用 EvtProgramDma之后,框架对事务中的每个系统配置文件 DMA 传输调用一次 EvtDmaTransactionConfigureDmaChannel。
驱动程序可以使用 EvtDmaTransactionConfigureDmaChannel 回调在映射传输之前为 DMA 适配器设置任何自定义编程。
如果驱动程序在配置通道时遇到错误,则可以通过调用 WdfDmaTransactionDmaCompletedFinal 并在必要时完成请求来停止 DMA 传输。 然后,驱动程序应从此回调函数返回 FALSE。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows 8 |
| 目标平台 | 普遍 |
| 最低 KMDF 版本 | 1.11 |
| 标头 | wdfdmatransaction.h (包括 Wdf.h) |
| IRQL | DISPATCH_LEVEL |