Функция WdfDmaTransactionDmaCompletedFinal (wdfdmatransaction.h)
[Относится только к KMDF]
Метод WdfDmaTransactionDmaCompletedFinal уведомляет платформу о том, что операция передачи DMA устройства завершилась с условием недостаточного выполнения, и предоставляет длину завершенной передачи.
Синтаксис
BOOLEAN WdfDmaTransactionDmaCompletedFinal(
[in] WDFDMATRANSACTION DmaTransaction,
[in] size_t FinalTransferredLength,
[out] NTSTATUS *Status
);
Параметры
[in] DmaTransaction
Дескриптор объекта транзакции DMA, который драйвер получил из предыдущего вызова WdfDmaTransactionCreate.
[in] FinalTransferredLength
Число байтов, переданных устройством.
[out] Status
Указатель на расположение, которое получает состояние передачи DMA. Дополнительные сведения см. в разделе Примечания для WdfDmaTransactionDmaCompleted.
Возвращаемое значение
WdfDmaTransactionDmaCompletedFinal возвращает значение FALSE , если драйвер предоставляет недопустимый входной параметр. В противном случае WdfDmaTransactionDmaCompletedFinal всегда возвращает значение TRUE, указывающее, что платформа не будет пытаться передать дополнительные байты для транзакции DMA, указанной параметром DmaTransaction .
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Драйвер обычно вызывает WdfDmaTransactionDmaCompletedFinal из обратного вызова EvtInterruptDpc . Драйвер для устройства DMA в системном режиме может вызывать WdfDmaTransactionDmaCompletedFinal из функции обратного вызова события EvtDmaTransactionDmaTransferComplete .
В примере PLX9x5x драйвер вызывает WdfDmaTransactionDmaCompletedFinal из функции обратного вызова EvtProgramDma .
Метод WdfDmaTransactionDmaCompletedFinal ведет себя так же, как WdfDmaTransactionDmaCompleted, за исключением того, что драйверы обычно вызывают WdfDmaTransactionDmaCompletedFinal, если оборудование сообщает о недостаточном состоянии. Условие недостаточного выполнения означает, что оборудование не может передать все байты, указанные для последней передачи DMA. Вызов WdfDmaTransactionDmaCompletedFinal останавливает платформу от запуска дополнительных передач DMA для указанной транзакции DMA.
Когда драйвер вызывает WdfDmaTransactionDmaCompletedFinal, драйвер предоставляет количество переданных байтов. Возвращаемое значение всегда равно TRUE, так как платформа не будет пытаться передать дополнительные байты для указанной транзакции.
Дополнительные сведения о завершении передачи DMA см. в разделе Завершение передачи DMA.
Примеры
В следующем примере кода платформа уведомляет о том, что операция передачи DMA устройства завершена с условием недостаточного выполнения.
BOOLEAN success;
NTSTATUS status;
success = WdfDmaTransactionDmaCompletedFinal(
DmaTransaction,
transferLength,
&status
);
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Верхняя часть | wdfdmatransaction.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы). |
IRQL | <=DISPATCH_LEVEL |
Правила соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |