Поделиться через


Функция 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, указанной параметром DmaTrans action DmaTransaction.

Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

Драйвер обычно вызывает WdfDmaTransactionDmaCompletedFinal из EvtInterruptDpc обратного вызова. Драйвер для устройства DMA в системном режиме может вызывать функцию обратного вызова событий WdfDmaTransactionDmaCompletedFinal из EvtDmaTransactionDmaTransferComplete.

В примере PLX9x5x драйвер вызывает WdfDmaTransactionDmaCompletedFinal из функции обратного вызова EvtProgramD ma.

Метод 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 (include Wdf.h)
Библиотека Wdf01000.sys (см. управление версиями библиотеки Платформы).)
IRQL <=DISPATCH_LEVEL
правил соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength