WdfDmaTransactionGetCurrentDmaTransferLength 函数 (wdfdmatransaction.h)

[仅适用于 KMDF]

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

语法

size_t WdfDmaTransactionGetCurrentDmaTransferLength(
  [in] WDFDMATRANSACTION DmaTransaction
);

参数

[in] DmaTransaction

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

返回值

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

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

注解

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

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

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

例子

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

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.0
标头 wdfdmatransaction.h (包括 Wdf.h)
图书馆 Wdf01000.sys(请参阅框架库版本控制。
IRQL <=DISPATCH_LEVEL
DDI 符合性规则 DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf)

另请参阅

EvtInterruptDpc

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength