WDF_REQUEST_SEND_OPTIONS_FLAGS enumeration (wdfrequest.h)
[Applies to KMDF and UMDF]
The WDF_REQUEST_SEND_OPTIONS_FLAGS enumeration type defines flags that are used in a driver's WDF_REQUEST_SEND_OPTIONS structure.
Syntax
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;
Constants
WDF_REQUEST_SEND_OPTION_TIMEOUT Value: 0x00000001 If the driver sets this flag, the Timeout member of the WDF_REQUEST_SEND_OPTIONS structure is valid. |
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS Value: 0x00000002 If the driver sets this flag, the framework handles the associated I/O request synchronously. (The driver does not have to set this flag if it is calling an object method whose name ends with "Synchronously", such as WdfIoTargetSendReadSynchronously.) |
WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE Value: 0x00000004 If the driver sets this flag, the framework sends the I/O request to the I/O target, regardless of the I/O target's state. If not set, the framework queues the request if the target is stopped. Setting this flag allows a driver to send a request, such as a request to reset a USB pipe, to a device after the driver has called WdfIoTargetStop. |
WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET Value: 0x00000008 If the driver sets this flag, the driver is sending the request asynchronously and does not need to be notified when the request is completed or canceled. The framework sends the I/O request to the I/O target, regardless of the I/O target's state. The driver does not set a CompletionRoutine callback function or call WdfRequestComplete for the request. If the driver sets this flag, it cannot set any other flags. For more information about this flag, see the following Remarks section. |
WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT Value: 0x00010000 This flag applies to UMDF only. If set, and if the I/O request type is WdfRequestTypeCreate, the WdfRequestSend method attempts to pass the client's impersonation level to the driver's I/O target. The WdfRequestSend method returns an error code if the impersonation attempt fails, unless the driver also sets the WDF_REQUEST_SEND_OPTION_IMPERSONATION_IGNORE_FAILURE flag. |
WDF_REQUEST_SEND_OPTION_IMPERSONATION_IGNORE_FAILURE Value: 0x00020000 This flag applies to UMDF only. If set, the framework still sends the request even if impersonation fails. You can use this value only with WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT. |
Remarks
A driver that sets the WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET flag typically does not format the I/O request before it calls WdfRequestSend to send the request to an I/O target. In fact, a driver that sets this flag must not call any of the WdfIoTargetFormatRequestForXxx methods before it calls WdfRequestSend. The driver can use only the WdfRequestFormatRequestUsingCurrentType or WdfRequestWdmFormatUsingStackLocation method to format the request.
Your driver cannot set the WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET flag in the following situations:
- The driver created the request object by calling WdfRequestCreate.
- The driver is sending the I/O request to a remote I/O target and the driver specified the WdfIoTargetOpenByName flag when it called WdfIoTargetOpen.
- The driver is sending the I/O request to a remote I/O target, and the driver specified both the WdfIoTargetOpenUseExistingDevice flag and a TargetFileObject pointer when it called WdfIoTargetOpen.
- The request type is WdfRequestTypeCreate and the driver has not set the WdfFileObjectNotRequired flag. (For more information about this situation, see Framework File Objects.)
Requirements
Requirement | Value |
---|---|
Minimum KMDF version | 1.0 |
Minimum UMDF version | 2.0 |
Header | wdfrequest.h (include Wdf.h) |