énumération WDF_REQUEST_SEND_OPTIONS_FLAGS (wdfrequest.h)
[S’applique à KMDF et UMDF]
Le type d’énumération WDF_REQUEST_SEND_OPTIONS_FLAGS définit les indicateurs utilisés dans la structure de WDF_REQUEST_SEND_OPTIONS d’un pilote.
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;
Constantes
WDF_REQUEST_SEND_OPTION_TIMEOUT Valeur : 0x00000001 Si le pilote définit cet indicateur, le membre Timeout de la structure WDF_REQUEST_SEND_OPTIONS est valide. |
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS Valeur : 0x00000002 Si le pilote définit cet indicateur, l’infrastructure gère la requête d’E/S associée de manière synchrone. (Le pilote n’a pas besoin de définir cet indicateur s’il appelle une méthode d’objet dont le nom se termine par « Synchronously », telle que WdfIoTargetSendReadSynchronously.) |
WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE Valeur : 0x00000004 Si le pilote définit cet indicateur, l’infrastructure envoie la demande d’E/S à la cible d’E/S, quel que soit l’état de la cible d’E/S. S’il n’est pas défini, l’infrastructure met en file d’attente la requête si la cible est arrêtée. La définition de cet indicateur permet à un pilote d’envoyer une demande, telle qu’une demande de réinitialisation d’un canal USB, à un appareil après que le pilote a appelé WdfIoTargetStop. |
WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET Valeur : 0x00000008 Si le pilote définit cet indicateur, le pilote envoie la requête de manière asynchrone et n’a pas besoin d’être averti lorsque la demande est terminée ou annulée. Le framework envoie la demande d’E/S à la cible d’E/S, quel que soit l’état de la cible d’E/S. Le pilote ne définit pas de fonction de rappel CompletionRoutine ou n’appelle pas WdfRequestComplete pour la requête. Si le pilote définit cet indicateur, il ne peut pas définir d’autres indicateurs. Pour plus d’informations sur cet indicateur, consultez la section Remarques suivante. |
WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT Valeur : 0x00010000 Cet indicateur s’applique uniquement à UMDF. Si la valeur est définie et si le type de demande d’E/S est WdfRequestTypeCreate, la méthode WdfRequestSend tente de passer le niveau d’emprunt d’identité du client à la cible d’E/S du pilote. La méthode WdfRequestSend retourne un code d’erreur si la tentative d’emprunt d’identité échoue, sauf si le pilote définit également l’indicateur WDF_REQUEST_SEND_OPTION_IMPERSONATION_IGNORE_FAILURE . |
WDF_REQUEST_SEND_OPTION_IMPERSONATION_IGNORE_FAILURE Valeur : 0x00020000 Cet indicateur s’applique uniquement à UMDF. Si cette option est définie, l’infrastructure envoie toujours la demande même si l’emprunt d’identité échoue. Vous pouvez utiliser cette valeur uniquement avec WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT. |
Remarques
Un pilote qui définit l’indicateur WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET ne met généralement pas en forme la demande d’E/S avant d’appeler WdfRequestSend pour envoyer la demande à une cible d’E/S. En fait, un pilote qui définit cet indicateur ne doit appeler aucune des méthodes WdfIoTargetFormatRequestForXxx avant d’appeler WdfRequestSend. Le pilote peut utiliser uniquement la méthode WdfRequestFormatRequestUsingCurrentType ou WdfRequestWdmFormatUsingStackLocation pour mettre en forme la requête.
Votre pilote ne peut pas définir l’indicateur WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET dans les situations suivantes :
- Le pilote a créé l’objet de requête en appelant WdfRequestCreate.
- Le pilote envoie la demande d’E/S à une cible d’E/S distante et le pilote a spécifié l’indicateur WdfIoTargetOpenByName quand il a appelé WdfIoTargetOpen.
- Le pilote envoie la demande d’E/S à une cible d’E/S distante, et le pilote a spécifié l’indicateur WdfIoTargetOpenUseExistingDevice et un pointeur TargetFileObject quand il a appelé WdfIoTargetOpen.
- Le type de requête est WdfRequestTypeCreate et le pilote n’a pas défini l’indicateur WdfFileObjectNotRequired . (Pour plus d’informations sur cette situation, consultez Framework File Objects.)
Configuration requise
Condition requise | Valeur |
---|---|
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfrequest.h (inclure Wdf.h) |