다음을 통해 공유


PCANCEL_MAPPED_TRANSFER 콜백 함수(wdm.h)

CancelMappedTransfer 루틴은 현재 어댑터에 매핑된 시스템 DMA 전송을 취소합니다.

구문

PCANCEL_MAPPED_TRANSFER PcancelMappedTransfer;

NTSTATUS PcancelMappedTransfer(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] PVOID DmaTransferContext
)
{...}

매개 변수

[in] DmaAdapter

DMA_ADAPTER 구조체에 대한 포인터입니다. 이 구조체는 보류 중인 DMA 전송이 완료되길 기다리는 어댑터 개체입니다. 호출자는 IoGetDmaAdapter 루틴에 대한 이전 호출에서 이 포인터를 얻었으며 호출자는 DMA 전송에 대한 맵 레지스터를 설정하는 MapTransferEx 호출에 이 포인터를 전달했습니다.

[in] DmaTransferContext

DMA 전송 컨텍스트에 대한 포인터입니다. 이 매개 변수 값은 어댑터 채널 할당을 요청한 AllocateAdapterChannelEx 호출에 전달된 것과 동일한 DMA 전송 컨텍스트여야 합니다.

반환 값

CancelMappedTransfer는 호출이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 오류 코드를 반환합니다.

설명

CancelMappedTransfer는 이름으로 직접 호출할 수 있는 시스템 루틴이 아닙니다. 이 루틴은 DMA_OPERATIONS 구조에서 반환된 주소의 포인터로만 호출할 수 있습니다 . 드라이버는 DeviceDescription 매개 변수의 Version 멤버가 DEVICE_DESCRIPTION_VERSION3 설정된 IoGetDmaAdapter를 호출하여 이 루틴의 주소를 가져옵니다. IoGetDmaAdapterNULL을 반환하는 경우 플랫폼에서 루틴을 사용할 수 없습니다.

이 루틴은 연결된 전송 컨텍스트를 취소된 것으로 표시하여 이 컨텍스트에서 추가 전송을 방지합니다. 전송이 취소되면 완료 루틴이 호출되지만 전송에 대한 상태 DmaCancelled로 설정될 수 있습니다.

시스템 DMA 전송이 취소 또는 완료되었는지 여부에 관계없이 FlushAdapterBuffers 또는 FlushAdapterBuffersEx 루틴을 항상 호출하여 DMA 전송 작업이 끝날 때 시스템 DMA 컨트롤러의 내부 캐시에 남아 있는 모든 데이터를 플러시해야 합니다. 전송이 취소되거나 완료되면 DMA 채널이 해제되거나 MapTransferEx 루틴이 호출되어 새 DMA 전송에 대한 맵 레지스터를 설정하기 전에 FlushAdapterBuffersXxx 호출이 발생해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 시작해서 사용할 수 있습니다.
대상 플랫폼 데스크톱
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
IRQL <= DISPATCH_LEVEL

추가 정보

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransferEx