перечисление 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
Если драйвер устанавливает этот флаг, платформа обрабатывает связанный запрос ввода-вывода синхронно. (Драйверу не нужно задавать этот флаг, если он вызывает метод объекта, имя которого заканчивается на "Синхронно", например WdfIoTargetSendReadSynchronously.)
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. Драйвер может использовать только метод WdfRequestFormatRequestUsingCurrentType или 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