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 |