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结构的 超时 成员有效。 |
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS 值:0x00000002 如果驱动程序设置此标志,框架将同步处理关联的 I/O 请求。 (如果驱动程序调用名称以“Syncly”结尾的对象方法,例如 WdfIoTargetSendReadSynchronously,则驱动程序不必设置此标志。 |
WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE 值:0x00000004 如果驱动程序设置此标志,框架会将 I/O 请求发送到 I/O 目标,而不考虑 I/O 目标的状态。 如果未设置,框架会将请求排入队列(如果目标已停止)。 设置此标志后,驱动程序可以将请求(例如请求重置 USB 管道)发送到设备,该驱动程序调用 WdfIoTargetStop。 |
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 文件对象。)
要求
要求 | 价值 |
---|---|
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfrequest.h (包括 Wdf.h) |