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 如果驅動程式設定此旗標,架構會同步處理相關聯的 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來建立要求物件。
- 當驅動程式呼叫 WdfIoTargetOpen 時,驅動程式會將 I/O 要求傳送至遠端 I/O 目標,並指定WdfIoTargetOpenByName 旗標。
- 驅動程式會將 I/O 要求傳送至遠端 I/O 目標,而驅動程式會在呼叫 WdfIoTargetOpen時同時指定 WdfIoTargetOpenUseExistingDevice 旗標和 TargetFileObject 指標。
- 要求類型 WdfRequestTypeCreate,而且驅動程式尚未設定 WdfFileObjectNotRequired 旗標。 (如需這種情況的詳細資訊,請參閱 Framework File Objects。)
要求
要求 | 價值 |
---|---|
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
標頭 | wdfrequest.h (包括 Wdf.h) |