다음을 통해 공유


WdfDmaTransactionCancel 함수(wdfdmatransaction.h)

[KMDF에만 적용]

WdfDmaTransactionCancel 메서드는 맵 레지스터 할당을 기다리는 DMA 트랜잭션을 취소하려고 시도합니다.

구문론

BOOLEAN WdfDmaTransactionCancel(
  [in] WDFDMATRANSACTION DmaTransaction
);

매개 변수

[in] DmaTransaction

취소되는 트랜잭션을 나타내는 DMA 트랜잭션 개체에 대한 핸들입니다. 이 트랜잭션은 드라이버에 의해 이미 초기화되어 있어야 합니다.

반환 값

WdfDmaTransactionCancel 프레임워크가 맵 레지스터 할당을 성공적으로 취소하면 TRUE를 반환합니다. 이 경우 전송이 완료되지 않으며 프레임워크는 트랜잭션이 다시 완화될 때까지 트랜잭션에 대한 추가 DMA 콜백을 수행하지 않습니다.

이 메서드는 다른 스레드가 이미 이 트랜잭션을 처리하고 있거나 드라이버가 아직 WdfDmaTransactionExecute호출하지 않은 경우 FALSE를 반환합니다. 첫 번째 경우 프레임워크는 현재 EvtProgramDma 또는 EvtReserveDma 호출하거나 호출합니다. 이 시점에서 시스템 모드 DMA 프로필을 지정한 드라이버는 WdfDmaTransactionStopSystemTransfer호출할 수 있습니다.

또한 이 메서드는 DMA 버전 2 인에이블러에서 할당된 트랜잭션을 사용하여 호출된 경우 FALSE를 반환합니다.

비고

드라이버는 WdfRequestMarkCancelableEx호출에서 제공하는 EvtRequestCancel 이벤트 콜백 함수에서 WdfDmaTransactionCancel 호출할 수 있습니다. 이 작업을 수행하는 방법을 보여 주는 코드 예제는 WdfDmaTransactionStopSystemTransfer참조하세요.

드라이버는 EvtIoCanceledOnQueue 이벤트 콜백 함수에서 WdfDmaTransactionCancel 호출할 수도 있습니다.

WdfDmaTransactionExecute호출한 후 WdfDmaTransactionCancel 호출이 발생하지만 WdfDmaTransactionExecute 메서드가 DMA 할당을 시작하기 전에만 취소가 성공할 수 있습니다. 자세한 내용은 DMA 트랜잭션 취소참조하세요.

드라이버는 WdfDmaTransactionInitialize호출한 후 WdfDmaTransactionCancel 호출해야 하지만 WdfDmaTransactionRelease 호출하거나 WdfObjectDelete 호출하여 트랜잭션 개체를 삭제해야 합니다.

프레임워크가 EvtProgramDma 또는 EvtReserveDma호출한 후 WdfDmaTransactionCancel 호출하지 마세요.

WdfDmaTransactionCancel호출하기 전에 드라이버가 DMA 버전 3 사용을 요청해야 합니다. DMA 버전 3을 선택하려면 WDF_DMA_ENABLER_CONFIGWdmDmaVersionOverride 멤버를 3으로 설정합니다.

드라이버가 DMA 버전 2 인에이블러에서 할당된 트랜잭션에서 WdfDmaTransactionCancel 호출하는 경우 프레임워크는 검증 도구 오류를 생성하고 WdfDmaTransactionCancel FALSE를 반환하는. 이 경우 트랜잭션을 취소하려고 시도하지 않습니다.

요구 사항

요구 사항 가치
지원되는 최소 클라이언트 Windows 8
대상 플랫폼 보편적
최소 KMDF 버전 1.11
헤더 wdfdmatransaction.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조)
IRQL <=DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf)

참고하십시오

EvtProgramDma

EvtReserveDma

WdfDmaTransactionStopSystemTransfer