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