다음을 통해 공유


WdfDeviceInitSetIoTypeEx 함수(wdfdevice.h)

[KMDF 및 UMDF에 적용]

WdfDeviceInitSetIoTypeEx 메서드는 드라이버가 지정된 디바이스에 대한 디바이스 I/O 제어 요청뿐만 아니라 읽기 및 쓰기 요청에 포함된 데이터 버퍼에 액세스하는 방법에 대한 메서드 또는 기본 설정을 지정합니다.

통사론

void WdfDeviceInitSetIoTypeEx(
  [in] PWDFDEVICE_INIT     DeviceInit,
  [in] PWDF_IO_TYPE_CONFIG IoTypeConfig
);

매개 변수

[in] DeviceInit

WDFDEVICE_INIT 구조체에 대한 포인터입니다.

[in] IoTypeConfig

WDF_IO_TYPE_CONFIG_INIT 매크로를 사용하여 초기화된 WDF_IO_TYPE_CONFIG 구조체에 대한 포인터입니다.

반환 값

없음

발언

KMDF 버전 1.11 이하를 사용하여 드라이버를 작성하는 경우 대신 WdfDeviceInitSetIoType 사용해야 합니다.

KMDF KMDF 드라이버는 WdfDeviceInitSetIoTypeEx 호출하여 읽기 및 쓰기 요청에 대한 버퍼 액세스 방법을 설정합니다. 디바이스 I/O 컨트롤 요청의 경우 프레임워크는 I/O 제어 코드(IOCTL)로 인코딩된 버퍼 형식을 사용합니다.

UMDF UMDF 드라이버는 WdfDeviceInitSetIoTypeEx 호출하여 디바이스 I/O 제어 요청뿐만 아니라 읽기 및 쓰기 요청에 대한 기본 설정을 등록합니다. UMDF 드라이버가 WdfDeviceInitSetIoTypeEx 제공하는 값은 기본 설정일 뿐이며 프레임워크에서 사용하도록 보장되지 않습니다. 드라이버는 WdfDeviceGetDeviceStackIoType 호출하여 UMDF가 디바이스의 읽기/쓰기 요청 및 I/O 제어 요청에 할당한 버퍼 액세스 방법을 확인할 수 있습니다. I/O 제어 요청의 경우 프레임워크에서 사용하는 액세스 메서드는 IOCTL에 지정된 액세스 방법과 드라이버가 요청한 액세스 방법과 다를 수 있습니다.

드라이버가 WdfDeviceInitSetIoTypeEx 호출하는 경우 WdfDeviceCreate호출하기 전에 호출해야 합니다.

드라이버가 WdfDeviceInitSetIoTypeEx 호출하지 않으면 프레임워크는 지정된 디바이스에 대해 드라이버의 버퍼 액세스 메서드를 WdfDeviceIoBuffered설정합니다.

KMDF 필터 드라이버에서 WdfDeviceInitSetIoTypeEx 호출해도 아무 효과가 없습니다. KMDF 필터 드라이버의 경우 프레임워크는 드라이버 스택의 다음 하위 드라이버가 지정하는 I/O 형식을 사용합니다.

그러나 UMDF 필터 드라이버는 WdfDeviceInitSetIoTypeEx호출하여 버퍼 액세스 메서드에 대한 기본 설정을 등록할 수 있습니다.

드라이버 스택의 모든 UMDF 드라이버는 디바이스의 버퍼에 액세스하는 데 동일한 방법을 사용해야 합니다. UMDF가 일부 드라이버가 디바이스에 버퍼링된 I/O 또는 직접 I/O를 선호하는 반면 다른 드라이버는 디바이스에 버퍼링된 I/O만 선호한다고 판단하는 경우 UMDF는 모든 드라이버에 버퍼링된 I/O를 사용합니다. 하나 이상의 스택 드라이버가 버퍼링된 I/O만 선호하는 반면 다른 드라이버는 직접 I/O만 선호하는 경우 UMDF는 이벤트를 시스템 이벤트 로그에 기록하며 드라이버 스택을 시작하지 않습니다.

버퍼 액세스 방법에 대한 자세한 내용은 데이터 버퍼 액세스참조하세요.

이 메서드는 IWDFDeviceInitialize2::SetIoTypePreference해당하는 UMDF 2.0입니다.

예제

다음 코드 예제에서는 WDF_IO_TYPE_CONFIG 구조를 초기화하고, 드라이버의 버퍼 액세스 기본 설정을 직접 I/O로 설정하고, 32KB보다 작은 전송이 버퍼링된 I/O를 사용하도록 지정하고, WdfDeviceInitSetIoTypeEx 호출합니다.

WDF_IO_TYPE_CONFIG ioConfig;
WDF_IO_TYPE_CONFIG_INIT(&ioConfig);
ioConfig.ReadWriteIoType = WdfDeviceIoDirect;
ioConfig.DeviceControlIoType = WdfDeviceIoDirect;
ioConfig.DirectTransferThreshold = 32;

WdfDeviceInitSetIoTypeEx(DeviceInit, &ioConfig);
}

요구 사항

요구
대상 플랫폼 보편적
최소 KMDF 버전 1.13
최소 UMDF 버전 2.0
헤더 wdfdevice.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL <= DISPATCH_LEVEL

참고 항목

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType