[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) |