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 枚举用于指定访问数据缓冲区的方法。

语法

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