다음을 통해 공유


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 전송 컨텍스트여야 합니다.

반환 값

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

발언

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

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

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

  • true CancelAdapterChannel 호출이 발생할 때 어댑터 개체가 요청된 할당을 대기하는 경우입니다. 이 경우 CancelAdapterChannel 보류 중인 할당 요청을 취소하고 드라이버의 AdapterControl 루틴은 호출되지 않습니다.
  • AdapterControl 루틴이 이미 호출되었거나 호출하려고 하는 경우 FALSE .
마찬가지로, 드라이버가 GetScatterGatherListEx 또는 BuildScatterGatherListEx 호출하여 드라이버 제공 AdapterListControl 루틴에 대한 리소스를 요청한 다음 CancelAdapterChannel 호출하여 요청을 취소하면 cancelAdapterChannel 다음 값 중 하나를 반환할 수 있습니다.
  • true CancelAdapterChannel 호출이 발생할 때 어댑터 개체가 요청된 할당을 대기하는 경우입니다. 이 경우 CancelAdapterChannel 보류 중인 할당 요청을 취소하고 드라이버의 AdapterListControl 루틴이 호출되지 않습니다.
  • false AdapterListControl 루틴이 이미 호출되었거나 호출하려고 하는 경우입니다.
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