Поделиться через


перечисление WDF_REQUEST_SEND_OPTIONS_FLAGS (wdfrequest.h)

[Применимо к KMDF и UMDF]

Тип перечисления WDF_REQUEST_SEND_OPTIONS_FLAGS определяет флаги, используемые в структуре WDF_REQUEST_SEND_OPTIONS драйвера.

Синтаксис

typedef enum _WDF_REQUEST_SEND_OPTIONS_FLAGS {
  WDF_REQUEST_SEND_OPTION_TIMEOUT = 0x00000001,
  WDF_REQUEST_SEND_OPTION_SYNCHRONOUS = 0x00000002,
  WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE = 0x00000004,
  WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET = 0x00000008,
  WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT = 0x00010000,
  WDF_REQUEST_SEND_OPTION_IMPERSONATION_IGNORE_FAILURE = 0x00020000
} WDF_REQUEST_SEND_OPTIONS_FLAGS;

Константы

 
WDF_REQUEST_SEND_OPTION_TIMEOUT
Значение: 0x00000001
Если драйвер задает этот флаг, допустимый элемент Timeout структуры WDF_REQUEST_SEND_OPTIONS.
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS
Значение: 0x00000002
Если драйвер задает этот флаг, платформа обрабатывает связанный запрос ввода-вывода синхронно. (Драйверу не нужно задавать этот флаг, если он вызывает метод объекта, имя которого заканчивается синхронно, например WdfIoTargetSendReadSynchronous.)
WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE
Значение: 0x00000004
Если драйвер задает этот флаг, платформа отправляет запрос ввода-вывода в целевой объект ввода-вывода независимо от состояния целевого объекта ввода-вывода. Если этот параметр не задан, платформа очереди запроса, если целевой объект остановлен. Установка этого флага позволяет драйверу отправлять запрос, например запрос на сброс USB-канала, на устройство после вызова драйвера WdfIoTargetStop.
WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET
Значение: 0x00000008
Если драйвер задает этот флаг, драйвер отправляет запрос асинхронно и не должен получать уведомления при завершении или отмене запроса. Платформа отправляет запрос ввода-вывода в целевой объект ввода-вывода независимо от состояния целевого объекта ввода-вывода. Драйвер не задает функцию обратного вызова CompletionRoutine или вызов WdfRequestComplete запроса. Если драйвер задает этот флаг, он не может задать другие флаги. Дополнительные сведения об этом флаге см. в следующем разделе "Примечания".
WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT
Значение: 0x00010000
Этот флаг применяется только к UMDF. Если задано и если тип запроса ввода-вывода WdfRequestTypeCreate, метод WdfRequestSend пытается передать уровень олицетворения клиента целевому объекту ввода-вывода драйвера. Метод WdfRequestSend возвращает код ошибки, если попытка олицетворения завершается ошибкой, если драйвер также не задает флаг WDF_REQUEST_SEND_OPTION_IMPERSONATION_IGNORE_FAILURE.
WDF_REQUEST_SEND_OPTION_IMPERSONATION_IGNORE_FAILURE
Значение: 0x00020000
Этот флаг применяется только к UMDF. Если задано, платформа по-прежнему отправляет запрос, даже если олицетворение завершается ошибкой. Это значение можно использовать только с WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT.

Замечания

Драйвер, который задает флаг WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET обычно не форматирует запрос ввода-вывода перед вызовом WdfRequestSend для отправки запроса в целевой объект ввода-вывода. На самом деле драйвер, который задает этот флаг, не должен вызывать ни один из методов WdfIoTargetFormatRequestForXxx перед вызовом WdfRequestSend. Драйвер может использовать только метод WdfRequestFormatRequestFormatRequestUsingCurrentType или метод WdfRequestWdmFormatUsingStackLocation для форматирования запроса.

Драйвер не может задать флаг WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET в следующих ситуациях:

Сведения о версии UMDF этого перечисления см. в WDF_REQUEST_SEND_OPTIONS_FLAGS (UMDF).

Требования

Требование Ценность
минимальная версия KMDF 1.0
минимальная версия UMDF 2.0
заголовка wdfrequest.h (включая Wdf.h)

См. также

WDF_REQUEST_SEND_OPTIONS

WdfIoTargetStop