WdfDmaEnablerWdmGetDmaAdapter 함수(wdfdmaenabler.h)

[KMDF에만 적용]

WdfDmaEnablerWdmGetDmaAdapter 메서드는 DMA 인에이블러 개체와 연결된 WDM DMA_ADAPTER 구조체에 대한 포인터를 반환합니다.

구문

PDMA_ADAPTER WdfDmaEnablerWdmGetDmaAdapter(
  [in] WDFDMAENABLER     DmaEnabler,
  [in] WDF_DMA_DIRECTION DmaDirection
);

매개 변수

[in] DmaEnabler

드라이버가 WdfDmaEnablerCreate에 대한 이전 호출에서 가져온 DMA 인에이블러 개체에 대한 핸들입니다.

[in] DmaDirection

DMA 전송 작업의 방향을 지정하는 WDF_DMA_DIRECTION 형식의 값입니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

반환 값

WdfDmaEnablerWdmGetDmaAdapterDMA_ADAPTER 구조체에 대한 포인터를 반환하거나 DmaDirection 매개 변수의 값이 잘못된 경우 NULL을 반환합니다.

드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.

설명

드라이버가 WdfDmaEnablerCreate를 호출할 때 드라이버가 이중 프로필을 지정하는 경우 프레임워크는 각 방향에 대해 별도의 어댑터 개체 를 만들고 드라이버가 이중 프로필을 지정하지 않으면 단일 어댑터 개체를 만듭니다.

드라이버가 WdfDmaEnablerCreate를 호출할 때 이중 프로필을 지정한 경우 WdfDmaEnablerWdmGetDmaAdapter 메서드의 DmaDirection 매개 변수 값은 WdfDmaDirectionReadFromDevice 여야 읽기 작업에 대한 DMA_ADAPTER 구조를 가져오고 WdfDmaDirectionWriteToDevice 는 쓰기 작업에 대한 DMA_ADAPTER 구조를 가져와야 합니다. 드라이버가 이중 프로필을 지정하지 않은 경우 드라이버는 WdfDmaDirectionReadFromDevice 또는 WdfDmaDirectionWriteToDevice를 지정할 수 있습니다.

WdfDmaEnablerWdmGetDmaAdapter가 반환하는 포인터는 DMA 인에이블러 개체가 삭제될 때까지 유효합니다. 드라이버가 DMA 인에이블러 개체에 대한 EvtCleanupCallback 함수를 제공하는 경우 콜백 함수가 반환될 때까지 포인터가 유효합니다.

예제

다음 코드 예제에서는 DMA 인에이블러 개체를 만든 다음, 프레임워크가 읽기 및 쓰기 작업을 위해 만드는 WDM DMA_ADAPTER 구조에 대한 포인터를 가져옵니다.

NTSTATUS  status = STATUS_SUCCESS;
WDF_DMA_ENABLER_CONFIG  dmaConfig;
WDFDMAENABLER  dmaEnabler;
PDMA_ADAPTER  readAdapter, writeAdapter;

WDF_DMA_ENABLER_CONFIG_INIT(
                            &dmaConfig,
                            WdfDmaProfileScatterGatherDuplex,
                            maxLength
                            );
status = WdfDmaEnablerCreate(
                             Device,
                             &dmaConfig,
                             WDF_NO_OBJECT_ATTRIBUTES,
                             &dmaEnabler
                             );
if (!NT_SUCCESS (status)) {
    return status;
}

readAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                            dmaEnabler,
                                            WdfDmaDirectionReadFromDevice
                                            );
writeAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                             dmaEnabler,
                                             WdfDmaDirectionWriteToDevice
                                             );

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.5
머리글 wdfdmaenabler.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조)
IRQL <=DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

추가 정보

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreate