다음을 통해 공유


WdfDmaEnablerConfigureSystemProfile 함수(wdfdmaenabler.h)

[KMDF에만 적용]

WdfDmaEnablerConfigureSystemProfile 메서드는 시스템 모드 DMA 인에이블러에 대한 하드웨어별 설정을 구성하고 리소스 초기화를 완료합니다.

구문

NTSTATUS WdfDmaEnablerConfigureSystemProfile(
  [in] WDFDMAENABLER                  DmaEnabler,
  [in] PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig,
  [in] WDF_DMA_DIRECTION              ConfigDirection
);

매개 변수

[in] DmaEnabler

DMA 인에이블러 개체에 대한 핸들입니다.

[in] ProfileConfig

WDF_DMA_SYSTEM_PROFILE_CONFIG 구조체에 대한 포인터입니다. 드라이버는 WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT 호출하여 이 구조를 초기화해야 합니다.

[in] ConfigDirection

DMA 전송 작업의 방향을 지정하는 WDF_DMA_DIRECTION 형식의 값입니다. 이 인에이블러의 WDF_DMA_PROFILE 값이 WdfDmaProfileSystemDuplex가 아닌 경우 프레임워크는 이 매개 변수를 무시합니다.

반환 값

WdfDmaEnablerConfigureSystemProfile 은 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_NOT_SUPPORTED
드라이버는 현재 운영 체제에서 지원되지 않는 DMA 구성을 요청했습니다.
STATUS_INVALID_PARAMETER
드라이버가 ProfileConfig 매개 변수에 NULL을 제공했습니다.
STATUS_INFO_LENGTH_MISMATCH
ProfileConfig 매개 변수가 가리키는 구조체의 Size 멤버가 WDF_DMA_SYSTEM_PROFILE_CONFIG 구조체의 크기와 같지 않습니다.
STATUS_INVALID_PARAMETER
ProfileConfig 매개 변수가 가리키는 구조체의 DmaDescriptor 멤버가 NULL이거나 ConfigDirection 매개 변수에 잘못된 값이 포함되어 있습니다.

설명

WdfDmaEnablerConfigureSystemProfile을 호출하기 전에 드라이버는 WdfDmaEnablerCreate를 호출하여 enabler 개체를 만들어야 합니다.

드라이버는 일반적으로 EvtDevicePrepareHardware 콜백 함수에서 WdfDmaEnablerConfigureSystemProfile을 호출합니다.

드라이버가 WdfDmaEnablerCreate를 호출할 때 이중 프로필을 지정한 경우 WdfDmaEnablerConfigureSystemProfile 메서드의 ConfigDirection 매개 변수 값은 읽기 작업에 대한 DMA_ADAPTER 구조를 가져오려면 WdfDmaDirectionReadFromDevice이고 쓰기 작업에 대한 DMA_ADAPTER 구조를 가져오려면 WdfDmaDirectionReadFromDevice여야 합니다.

DMA 인에이블러가 이중 인에이블러인 경우 드라이버는 사용하려면 먼저 특정 방향을 초기화해야 합니다.

드라이버가 이중 프로필을 지정하지 않은 경우 드라이버는 WdfDmaDirectionReadFromDevice 또는 WdfDmaDirectionWriteToDevice를 지정할 수 있습니다.

예제

다음 코드 예제는 드라이버의 EvtDevicePrepareHardware 콜백 함수에서 가져옵니다. 이 예제에서는 WDF_DMA_SYSTEM_PROFILE_CONFIG 구조를 초기화하고 WdfDmaEnablerConfigureSystemProfile을 호출합니다.


WDF_DMA_SYSTEM_PROFILE_CONFIG systemDmaConfig;  
PHYSICAL_ADDRESS pa;  
 
pa.QuadPart = 0;  
  
WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT(&systemDmaConfig,   
                                   pa,  
                                   Width8Bits,  
                                   partial);  
  
systemDmaConfig.DemandMode = true;  
 
ntStatus = WdfDmaEnablerConfigureSystemProfile(fdoExtension->DmaEnabler,   
                                               &systemDmaConfig,   
                                               WdfDmaDirectionReadFromDevice);  

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
대상 플랫폼 유니버설
최소 KMDF 버전 1.11
머리글 wdfdmaenabler.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조)
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf)

추가 정보

WDF_DMA_ENABLER_CONFIG

WDF_DMA_ENABLER_CONFIG_INIT

WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT

WdfDmaEnablerCreate