WdfDmaTransactionGetCurrentDmaTransferLength 函数 (wdfdmatransaction.h)

[仅适用于 KMDF]

WdfDmaTransactionGetCurrentDmaTransferLength 方法返回当前 DMA 传输的大小。

语法

size_t WdfDmaTransactionGetCurrentDmaTransferLength(
  [in] WDFDMATRANSACTION DmaTransaction
);

参数

[in] DmaTransaction

驱动程序从上一次调用 WdfDmaTransactionCreate 获取的 DMA 事务对象的句柄。

返回值

WdfDmaTransactionGetCurrentDmaTransferLength 返回当前 DMA 传输的长度。

如果驱动程序提供无效的对象句柄,则会发生 bug 检查。

注解

如果驱动程序调用 WdfDmaTransactionGetCurrentDmaTransferLength,则必须在调用其中一个传输完成例程(如 WdfDmaTransactionDmaCompleted)之前调用 WdfDmaTransactionGetCurrentDmaTransferLength,才能完成当前 DMA 传输。 通常,驱动程序从 EvtInterruptDpc 事件回调函数中调用 WdfDmaTransactionGetCurrentDmaTransferLength

通常,驱动程序为报告剩余 DMA 传输长度的设备调用 WdfDmaTransactionGetCurrentDmaTransferLength , (即未) 传输的数据的字节计数。 通过从 WdfDmaTransactionGetCurrentDmaTransferLength 返回的值中减去剩余传输长度,驱动程序可以确定实际的传输长度。 然后,驱动程序调用 WdfDmaTransactionDmaCompletedWithLength ,让框架知道设备实际传输的字节数。

有关完整的 DMA 传输的详细信息,请参阅 完成 DMA 传输

示例

有关使用 WdfDmaTransactionGetCurrentDmaTransferLength 的代码示例,请参阅 WdfDmaTransactionDmaCompletedWithLength

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
标头 wdfdmatransaction.h (包括 Wdf.h)
Library Wdf01000.sys (请参阅框架库 Versioning.)
IRQL <=DISPATCH_LEVEL
DDI 符合性规则 DriverCreate (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf)

另请参阅

EvtInterruptDpc

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength