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 时首先复制它们。
有关此枚举的 KMDF 版本,请参阅 WDF_DEVICE_IO_TYPE。
要求
要求 | 值 |
---|---|
最低 UMDF 版本 | 1.9 |
标头 | wudfddi_types.h (包括 Wudfddi.h) |
另请参阅
IWDFDeviceInitialize2::SetIoTypePreference
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈