다음을 통해 공유


PCANCEL_ADAPTER_CHANNEL 콜백 함수(wdm.h)

CancelAdapterChannel 루틴은 DMA 채널을 할당하기 위해 보류 중인 요청을 취소하려고 합니다.

구문

PCANCEL_ADAPTER_CHANNEL PcancelAdapterChannel;

BOOLEAN PcancelAdapterChannel(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PVOID DmaTransferContext
)
{...}

매개 변수

[in] DmaAdapter

DMA_ADAPTER 구조체에 대한 포인터입니다. 이 구조체는 보류 중인 리소스 할당 요청이 부여되기를 기다리는 어댑터 개체입니다. 호출자는 IoGetDmaAdapter 루틴에 대한 이전 호출에서 이 포인터를 얻었으며 호출자는 리소스 할당을 요청한 AllocateAdapterChannelEx, GetScatterGatherListEx 또는 BuildScatterGatherListEx 호출에 이 포인터를 전달했습니다.

[in] DeviceObject

DEVICE_OBJECT 구조체에 대한 포인터입니다. 이 구조는 DMA 채널이 요청된 DMA 작업의 대상 디바이스를 나타내는 PDO(물리적 디바이스 개체)입니다.

[in] DmaTransferContext

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

반환 값

보류 중인 할당 요청이 성공적으로 취소된 경우 CancelAdapterChannelTRUE를 반환합니다. 루틴은 요청을 취소할 수 없는 경우 FALSE 를 반환합니다(예: 요청을 취소하기 전에 DMA 채널이 할당되었기 때문).

설명

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

CancelAdapterChannelAllocateAdapterChannelEx, GetScatterGatherListEx 또는 BuildScatterGatherListEx와 같은 할당 루틴에 대한 비동기 호출에 의해 수행된 보류 중인 할당 요청을 취소하려고 합니다. 비동기적으로 호출되면 할당 요청이 보류 중인 동안 및 드라이버 제공 실행 루틴(AdapterControl 또는 AdapterListControl)이 호출되기 전에 할당 루틴이 반환할 수 있습니다. CancelAdapterChannel이 보류 중인 할당 요청을 성공적으로 취소하면 리소스가 할당되지 않고 실행 루틴이 호출되지 않습니다.

드라이버가 AllocateAdapterChannelEx 를 호출하여 드라이버 제공 AdapterControl 루틴에 대한 리소스를 요청한 다음 CancelAdapterChannel 을 호출하여 요청을 취소하는 경우 CancelAdapterChannel 은 다음 값 중 하나를 반환할 수 있습니다.

  • TRUE이면 CancelAdapterChannel 호출이 발생할 때 어댑터 개체가 요청된 할당을 기다리고 있습니다. 이 경우 CancelAdapterChannel 은 보류 중인 할당 요청을 취소하고 드라이버의 AdapterControl 루틴이 호출되지 않습니다.
  • FALSE입니다. AdapterControl 루틴이 이미 호출되었거나 호출하려고 하는 경우 입니다.
마찬가지로 드라이버가 GetScatterGatherListEx 또는 BuildScatterGatherListEx 를 호출하여 드라이버 제공 AdapterListControl 루틴에 대한 리소스를 요청한 다음 CancelAdapterChannel 을 호출하여 요청을 취소하는 경우 CancelAdapterChannel 은 다음 값 중 하나를 반환할 수 있습니다.
  • TRUE이면 CancelAdapterChannel 호출이 발생할 때 어댑터 개체가 요청된 할당을 기다리고 있습니다. 이 경우 CancelAdapterChannel 은 보류 중인 할당 요청을 취소하고 드라이버의 AdapterListControl 루틴이 호출되지 않습니다.
  • ADAPTERListControl 루틴이 이미 호출되었거나 호출하려고 하는 경우 FALSE입니다.
CancelAdapterChannel 은 지정된 DMA 전송 컨텍스트를 사용하는 향후 채널 할당 요청을 선제적으로 취소할 수 있습니다. 예를 들어 호출자가 CancelAdapterChannel 및 AllocateAdapterChannelEx에 동일한 DMA 전송 컨텍스트를 제공하고 CancelAdapterChannel 호출이 성공하고 AllocateAdapterChannelEx 호출 전에 발생하는 경우 AllocateAdapterChannelEx 호출에서 요청한 할당이 자동으로 취소됩니다.

요구 사항

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

추가 정보

AdapterControl

AdapterListControl

AllocateAdapterChannelEx

BuildScatterGatherListEx

CancelAdapterChannel

DMA_ADAPTER

DMA_OPERATIONS

GetScatterGatherListEx

IoGetDmaAdapter