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) |