Функция WdfDmaTransactionGetCurrentDmaTransferLength (wdfdmatransaction.h)
[Применяется только к KMDF]
Метод WdfDmaTransactionGetCurrentDmaTransferLength возвращает размер текущей передачи DMA.
Синтаксис
size_t WdfDmaTransactionGetCurrentDmaTransferLength(
[in] WDFDMATRANSACTION DmaTransaction
);
Параметры
[in] DmaTransaction
Дескриптор объекта транзакции DMA, полученного драйвером при предыдущем вызове WdfDmaTransactionCreate.
Возвращаемое значение
WdfDmaTransactionGetCurrentDmaTransferLength возвращает длину текущей передачи DMA.
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Если драйвер вызывает WdfDmaTransactionGetCurrentDmaTransferLength, он должен сделать это, прежде чем вызывать одну из подпрограмм завершения передачи, например WdfDmaTransactionDmaCompleted, чтобы завершить текущую передачу DMA. Как правило, драйверы вызывают WdfDmaTransactionGetCurrentDmaTransferLength из функции обратного вызова события EvtInterruptDpc .
Как правило, драйвер вызывает 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) |