Перечисление WDF_DEVICE_IO_TYPE (wudfddi_types.h)
[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы 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 и драйвер используют буферный ввод-вывод для доступа к буферам данных. |
WdfDeviceIoDirect UMDF и драйвер используют прямой ввод-вывод для доступа к буферам данных. |
WdfDeviceIoBufferedOrDirect UMDF и драйвер могут использовать буферный ввод-вывод или прямой ввод-вывод для доступа к буферам данных. |
WdfDeviceIoMaximum Зарезервировано для системного использования. |
Комментарии
Перечисление WDF_DEVICE_IO_TYPE используется в качестве входных данных для IWDFDeviceInitialize2::SetIoTypePreference и в качестве выходных данных из IWDFIoRequest2::GetEffectiveIoType.
При выборе типа ввода-вывода для драйвера следует следовать следующим рекомендациям:
- Буферизируемые операции ввода-вывода обеспечивают наилучшую безопасность и надежность, так как приложения и драйверы получают доступ к отдельным копиям данных. Кроме того, буферизация операций ввода-вывода обеспечивает наилучшую производительность, если большая часть передаваемых данных относительно мала (обычно это две страницы памяти или меньше).
- Прямой ввод-вывод обеспечивает наилучшую производительность, если большинство запросов ввода-вывода передают большие объемы данных. Однако приложения и драйверы получают доступ к одной копии данных. Поэтому драйвер должен скопировать параметры, заданные приложением, в локальную память драйвера, прежде чем проверять параметры, чтобы убедиться, что приложение не изменяет параметры после проверки. Если драйвер должен проверять большие объемы данных приложения, буферизация операций ввода-вывода может быть лучшим выбором, так как драйверу не нужно копировать данные перед их проверкой.
- Как правило, драйвер фильтра, который может находиться в нескольких стеках драйверов и выполнять небольшую обработку данных приложения, может поддерживать как буферизованные операции ввода-вывода, так и прямой ввод-вывод, поэтому может указывать WdfDeviceIoBufferedOrDirect. Однако если драйвер проверяет параметры, заданные приложением, он должен сначала скопировать их при использовании прямого ввода-вывода.
Версию KMDF этого перечисления см. в разделе WDF_DEVICE_IO_TYPE.
Требования
Требование | Значение |
---|---|
Минимальная версия UMDF | 1,9 |
Верхняя часть | wudfddi_types.h (включая Wudfddi.h) |
См. также раздел
IWDFDeviceInitialize2::SetIoTypePreference
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по