다음을 통해 공유


WDF_DEVICE_IO_TYPE 열거형(wudfddi_types.h)

[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF를 사용하여 시작 참조하세요.]

WDF_DEVICE_IO_TYPE 열거형은 데이터 버퍼에 액세스하기 위한 메서드를 지정하는 데 사용됩니다.

Syntax

typedef enum _WDF_DEVICE_IO_TYPE {
  WdfDeviceIoUndefined,
  WdfDeviceIoNeither,
  WdfDeviceIoBuffered,
  WdfDeviceIoDirect,
  WdfDeviceIoBufferedOrDirect,
  WdfDeviceIoMaximum
} WDF_DEVICE_IO_TYPE, *PWDF_DEVICE_IO_TYPE;

상수

 
WdfDeviceIoUndefined
시스템에서 사용하도록 예약되었습니다.
WdfDeviceIoNeither
시스템에서 사용하도록 예약되었습니다.
WdfDeviceIoBuffered
UMDF 및 드라이버는 버퍼링된 I/O 를 사용하여 데이터 버퍼에 액세스합니다.
WdfDeviceIoDirect
UMDF 및 드라이버는 직접 I/O 를 사용하여 데이터 버퍼에 액세스합니다.
WdfDeviceIoBufferedOrDirect
UMDF 및 드라이버는 버퍼링된 I/O 또는 직접 I/O를 사용하여 데이터 버퍼에 액세스할 수 있습니다.
WdfDeviceIoMaximum
시스템에서 사용하도록 예약되었습니다.

설명

WDF_DEVICE_IO_TYPE 열거형은 IWDFDeviceInitialize2::SetIoTypePreference에 대한 입력 및 IWDFIoRequest2::GetEffectiveIoType의 출력으로 사용됩니다.

드라이버에 대한 I/O 유형을 선택할 때 다음 지침을 사용해야 합니다.

  • 버퍼링된 I/O는 애플리케이션과 드라이버가 별도의 데이터 복사본에 액세스하기 때문에 최상의 보안 및 안정성을 제공합니다. 또한 버퍼링된 I/O는 대부분의 데이터 전송이 상대적으로 작은 경우(일반적으로 두 개의 메모리 페이지 이하) 최상의 성능을 제공합니다.
  • 대부분의 I/O 요청이 대량의 데이터를 전송하는 경우 직접 I/O는 최상의 성능을 제공합니다. 그러나 애플리케이션 및 드라이버는 데이터의 단일 복사본에 액세스합니다. 따라서 드라이버는 애플리케이션이 유효성 검사 후 매개 변수를 수정하지 않도록 매개 변수의 유효성을 검사하기 전에 애플리케이션 지정 매개 변수를 로컬 드라이버 메모리에 복사해야 합니다. 드라이버가 많은 양의 애플리케이션 데이터의 유효성을 검사해야 하는 경우 드라이버에서 유효성을 검사하기 전에 데이터를 복사할 필요가 없으므로 버퍼링된 I/O를 선택하는 것이 좋습니다.
  • 일반적으로 여러 드라이버 스택에 상주할 수 있고 애플리케이션 데이터의 처리를 거의 수행하지 않는 필터 드라이버는 버퍼링된 I/O와 직접 I/O를 모두 지원할 수 있으므로 WdfDeviceIoBufferedOrDirect를 지정할 수 있습니다. 그러나 드라이버가 애플리케이션 지정 매개 변수의 유효성을 검사하는 경우 직접 I/O를 사용할 때 먼저 복사해야 합니다.
I/O 요청의 데이터 버퍼에 액세스하는 방법에 대한 자세한 내용은 UMDF-Based 드라이버에서 데이터 버퍼 액세스를 참조하세요.

이 열거형의 KMDF 버전은 WDF_DEVICE_IO_TYPE 참조하세요.

요구 사항

요구 사항
최소 UMDF 버전 1.9
머리글 wudfddi_types.h(Wudfddi.h 포함)

추가 정보

IWDFDeviceInitialize2::SetIoTypePreference

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL