다음을 통해 공유


GET_DMA_ADAPTER 콜백 함수(wdm.h)

GetDmaAdapter 루틴은 대상 디바이스에 대한 DMA_ADAPTER 구조를 반환합니다.

구문

GET_DMA_ADAPTER GetDmaAdapter;

_DMA_ADAPTER * GetDmaAdapter(
  [in]  PVOID Context,
  [in]  _DEVICE_DESCRIPTION *DeviceDescriptor,
  [out] PULONG NumberOfMapRegisters
)
{...}

매개 변수

[in] Context

인터페이스별 컨텍스트 정보에 대한 포인터입니다. 호출자는 인터페이스에 대한 BUS_INTERFACE_STANDARD 구조체의 Context 멤버로 전달되는 값을 전달합니다.

[in] DeviceDescriptor

물리적 디바이스의 특성을 설명하는 DEVICE_DESCRIPTION 구조체에 대한 포인터입니다.

[out] NumberOfMapRegisters

출력 시 드라이버가 모든 DMA 전송 작업에 할당할 수 있는 최대 맵 레지스터 수에 대한 포인터입니다. 호출자는 이 데이터를 수신하기 위해 LONG 변수를 할당해야 합니다.

반환 값

GetDmaAdapter 루틴은 성공하면 DMA_ADAPTER 구조체에 대한 포인터를 반환합니다. 어댑터 구조를 할당할 수 없는 경우 루틴은 NULL을 반환합니다.

설명

드라이버가 IRQL = PASSIVE_LEVEL 실행되는 경우 IoGetDmaAdapter 함수를 호출하여 디바이스의 DMA 어댑터 개체를 가져와야 합니다. IoGetDmaAdapter 는 버스 드라이버가 BUS_INTERFACE_STANDARD 인터페이스를 지원하는지 여부를 검색합니다. 이 경우 IoGetDmaAdapter 는 이 인터페이스의 GetDmaAdapter 멤버가 가리키는 루틴을 호출하여 어댑터 개체를 가져옵니다. 그렇지 않으면 IoGetDmaAdapter 는 동등한 레거시 루틴을 호출합니다.

그러나 드라이버가 IRQL ≥ DISPATCH_LEVEL 실행하는 동안 어댑터 개체를 가져와야 하는 경우 IoGetDmaAdapter 함수를 사용하여 수행할 수 없습니다. 이 경우 드라이버는 IRP_MN_QUERY_INTERFACE 요청을 실행하여 IRQL = PASSIVE_LEVEL 있는 동안 BUS_INTERFACE_STANDARD 인터페이스를 쿼리해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 wdm.h(Ntddk.h, Wdm.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

BUS_INTERFACE_STANDARD

DEVICE_DESCRIPTION

DMA_ADAPTER

IoGetDmaAdapter