перечисление 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 в следующих ситуациях:
- Драйвер создал объект запроса, вызвав WdfRequestCreate.
- Драйвер отправляет запрос ввода-вывода в удаленный целевой объект ввода-вывода, а драйвер указал флаг WdfIoTargetOpenByName при вызове WdfIoTargetOpen.
- Драйвер отправляет запрос ввода-вывода в удаленный целевой объект ввода-вывода, и драйвер указал флаг WdfIoTargetOpenUseExistingDevice и указатель TargetFileObject при вызове WdfIoTargetOpen.
- Тип запроса — WdfRequestTypeCreate , и драйвер не установил флаг WdfFileObjectNotRequired . (Дополнительные сведения об этой ситуации см. в разделе Объекты файлов платформы.)
Требования
Требование | Значение |
---|---|
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfrequest.h (включая Wdf.h) |