다음을 통해 공유


WdfDmaTransactionDmaCompletedFinal 함수(wdfdmatransaction.h)

[KMDF에만 적용]

WdfDmaTransactionDmaCompletedFinal 메서드는 디바이스의 DMA 전송 작업이 언더런 조건으로 완료되었음을 프레임워크에 알리고 완료된 전송의 길이를 제공합니다.

구문론

BOOLEAN WdfDmaTransactionDmaCompletedFinal(
  [in]  WDFDMATRANSACTION DmaTransaction,
  [in]  size_t            FinalTransferredLength,
  [out] NTSTATUS          *Status
);

매개 변수

[in] DmaTransaction

WdfDmaTransactionCreate에 대한 이전 호출에서 드라이버가 가져온 DMA 트랜잭션 개체에 대한 핸들은.

[in] FinalTransferredLength

디바이스가 전송한 바이트 수입니다.

[out] Status

DMA 전송 상태를 받는 위치에 대한 포인터입니다. 자세한 내용은 WdfDmaTransactionDmaCompleted대한 설명 섹션을 참조하세요.

반환 값

WdfDmaTransactionDmaCompletedFinal 드라이버가 잘못된 입력 매개 변수를 제공하는 경우 FALSE 반환합니다. 그렇지 않으면 WdfDmaTransactionDmaCompletedFinal 항상 TRUE반환합니다. 이는 프레임워크가 DmaTransaction 매개 변수가 지정한 DMA 트랜잭션에 대해 더 이상 바이트를 전송하지 않음을 나타냅니다.

드라이버에서 잘못된 개체 핸들을 제공하면 버그 검사가 수행됩니다.

비고

드라이버는 일반적으로 EvtInterruptDpc 콜백 내에서 WdfDmaTransactionDmaCompletedFinal 호출합니다. 시스템 모드 DMA 디바이스의 드라이버는 EvtDmaTransactionDmaTransferComplete 이벤트 콜백 함수 내에서 WdfDmaTransactionDmaCompletedFinal 호출할 수 있습니다.

PLX9x5x 샘플에서 드라이버는 EvtProgramDma 콜백 함수에서 WdfDmaTransactionDmaCompletedFinal 호출합니다.

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)

참고하십시오

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength