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 如果驱动程序设置此标志,则WDF_REQUEST_SEND_OPTIONS结构的 Timeout 成员有效。 |
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS 值: 0x00000002 如果驱动程序设置此标志,框架将同步处理关联的 I/O 请求。 (如果驱动程序正在调用名称以“Synchronously”结尾的对象方法,例如 WdfIoTargetSendReadSynchronously.) |
WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE 值: 0x00000004 如果驱动程序设置此标志,框架会将 I/O 请求发送到 I/O 目标,而不考虑 I/O 目标的状态。 如果未设置,则当目标停止时,框架会将请求排队。 设置此标志允许驱动程序在驱动程序调用 WdfIoTargetStop 后向设备发送请求,例如重置 USB 管道的请求。 |
WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET 值: 0x00000008 如果驱动程序设置此标志,则驱动程序以异步方式发送请求,并且不需要在请求完成或取消时收到通知。 无论 I/O 目标的状态如何,框架都会向 I/O 目标发送 I/O 请求。 驱动程序不会为请求设置 CompletionRoutine 回调函数或调用 WdfRequestComplete 。 如果驱动程序设置此标志,则无法设置任何其他标志。 有关此标志的详细信息,请参阅以下“备注”部分。 |
WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT 值: 0x00010000 此标志仅适用于 UMDF。 如果已设置,并且 I/O 请求类型为 WdfRequestTypeCreate, 则 WdfRequestSend 方法将尝试将客户端的模拟级别传递给驱动程序的 I/O 目标。 如果模拟尝试失败, 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 以将请求发送到 I/O 目标之前格式化 I/O 请求。 事实上,设置此标志的驱动程序在调用 WdfRequestSend 之前不得调用任何 WdfIoTargetFormatRequestForXxx 方法。 驱动程序只能使用 WdfRequestFormatRequestUsingCurrentType 或 WdfRequestWdmFormatUsingStackLocation 方法来格式化请求。
在以下情况下,驱动程序 无法 设置WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET标志:
- 驱动程序通过调用 WdfRequestCreate 创建了请求对象。
- 驱动程序将 I/O 请求发送到远程 I/O 目标,驱动程序在调用 WdfIoTargetOpen 时指定 了 WdfIoTargetOpenByName 标志。
- 驱动程序将 I/O 请求发送到远程 I/O 目标,驱动程序在调用 WdfIoTargetOpen 时指定了 WdfIoTargetOpenUseExistingDevice 标志和 TargetFileObject 指针。
- 请求类型为 WdfRequestTypeCreate ,驱动程序尚未设置 WdfFileObjectNotRequired 标志。 (有关这种情况的详细信息,请参阅 Framework File Objects.)
要求
要求 | 值 |
---|---|
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfrequest.h (包括 Wdf.h) |