structure WDF_REQUEST_COMPLETION_PARAMS (wdfrequest.h)

[S’applique à KMDF et UMDF]

La structure WDF_REQUEST_COMPLETION_PARAMS contient des paramètres associés à l’achèvement d’une demande d’E/S.

Syntaxe

typedef struct _WDF_REQUEST_COMPLETION_PARAMS {
  ULONG            Size;
  WDF_REQUEST_TYPE Type;
  IO_STATUS_BLOCK  IoStatus;
  union {
    struct {
      WDFMEMORY Buffer;
      size_t    Length;
      size_t    Offset;
    } Write;
    struct {
      WDFMEMORY Buffer;
      size_t    Length;
      size_t    Offset;
    } Read;
    struct {
      ULONG  IoControlCode;
      struct {
        WDFMEMORY Buffer;
        size_t    Offset;
      } Input;
      struct {
        WDFMEMORY Buffer;
        size_t    Offset;
        size_t    Length;
      } Output;
    } Ioctl;
    struct {
      union {
        PVOID     Ptr;
        ULONG_PTR Value;
      } Argument1;
      union {
        PVOID     Ptr;
        ULONG_PTR Value;
      } Argument2;
      union {
        PVOID     Ptr;
        ULONG_PTR Value;
      } Argument3;
      union {
        PVOID     Ptr;
        ULONG_PTR Value;
      } Argument4;
    } Others;
    struct {
      PWDF_USB_REQUEST_COMPLETION_PARAMS Completion;
    } Usb;
  } Parameters;
} WDF_REQUEST_COMPLETION_PARAMS, *PWDF_REQUEST_COMPLETION_PARAMS;

Membres

Size

Taille, en octets, de cette structure.

Type

Valeur WDF_REQUEST_TYPE qui identifie le type de requête.

IoStatus

Structure IO_STATUS_BLOCK pour la requête.

Parameters

Valeurs spécifiques à la demande pour la demande.

Parameters.Write

Parameters.Write.Buffer

Handle d’un objet de mémoire framework. Cet objet identifie la mémoire tampon spécifiée par le pilote lorsqu’il a mis en forme la requête et l’a envoyée à une cible d’E/S.

Parameters.Write.Length

Longueur, en octets, du transfert.

Parameters.Write.Offset

Adresse de début dans la mémoire tampon pour le transfert de données.

Parameters.Read

Parameters.Read.Buffer

Handle d’un objet de mémoire framework. Cet objet identifie la mémoire tampon spécifiée par le pilote lorsqu’il a mis en forme la requête et l’a envoyée à une cible d’E/S.

Parameters.Read.Length

Longueur, en octets, du transfert.

Parameters.Read.Offset

Adresse de début dans la mémoire tampon pour le transfert de données.

Parameters.Ioctl

Parameters.Ioctl.IoControlCode

Parameters.Ioctl.Input

Parameters.Ioctl.Input.Buffer

Handle d’un objet de mémoire framework. Cet objet identifie la mémoire tampon d’entrée spécifiée par le pilote lorsqu’il a mis en forme la demande et l’a envoyée à une cible d’E/S.

Parameters.Ioctl.Input.Offset

Adresse de début dans la mémoire tampon pour le transfert de données.

Parameters.Ioctl.Output

Parameters.Ioctl.Output.Buffer

Handle d’un objet de mémoire framework. Cet objet identifie les mémoires tampons de sortie que le pilote a spécifiées lorsqu’il a mis en forme la requête et l’a envoyée à une cible d’E/S.

Parameters.Ioctl.Output.Offset

Adresse de début dans la mémoire tampon pour le transfert de données.

Parameters.Ioctl.Output.Length

Longueur, en octets, du transfert.

Parameters.Others

Parameters.Others.Argument1

L’utilisation de ce membre est définie par la pile de pilotes. Consultez la section Notes.

Parameters.Others.Argument1.Ptr

Parameters.Others.Argument1.Value

Parameters.Others.Argument2

L’utilisation de ce membre est définie par la pile de pilotes.

Parameters.Others.Argument2.Ptr

Parameters.Others.Argument2.Value

Parameters.Others.Argument3

L’utilisation de ce membre est définie par la pile de pilotes.

Parameters.Others.Argument3.Ptr

Parameters.Others.Argument3.Value

Parameters.Others.Argument4

L’utilisation de ce membre est définie par la pile de pilotes.

Parameters.Others.Argument4.Ptr

Parameters.Others.Argument4.Value

Parameters.Usb

Pour les périphériques USB, ce membre contient un pointeur vers une structure WDF_USB_REQUEST_COMPLETION_PARAMS .

Parameters.Usb.Completion

Remarques

La structure WDF_REQUEST_COMPLETION_PARAMS est utilisée comme entrée dans la méthode WdfRequestGetCompletionParams et la fonction de rappel CompletionRoutine d’un pilote.

Dans les deux cas, la structure des paramètres d’achèvement contient des informations valides uniquement si le pilote a mis en forme la requête en appelant l’une des méthodes WdfIoTargetFormatXxx . Par exemple, consultez WdfIoTargetFormatRequestForRead.

Avant d’appeler WdfRequestGetCompletionParams pour récupérer les informations de fin d’E/S d’une requête, le pilote doit d’abord appeler WDF_REQUEST_COMPLETION_PARAMS_INIT pour initialiser la structure WDF_REQUEST_COMPLETION_PARAMS .

Les membres Parameters.Others.Argument sont des arguments personnalisés qu’un pilote transmet généralement dans la pile (et peut revenir une fois la demande terminée). Ils sont utilisés pour les données non standard dépendantes de la pile de pilotes. Par exemple, un pilote USB spécifie un pointeur vers un URB dans Parameters.Others.Argument1 lorsqu’il envoie une requête IOCTL_INTERNAL_USB_SUBMIT_URB à la pile USB. De même, un pilote Bluetooth spécifie un pointeur vers un BRB (Bluetooth Request Block) dans Parameters.Others.Argument1 lorsqu’il reçoit un IOCTL_INTERNAL_BTH_SUBMIT_BRB.

Configuration requise

Condition requise Valeur
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfrequest.h (include Wdf.h)

Voir aussi

CompletionRoutine

IO_STATUS_BLOCK

WDF_REQUEST_COMPLETION_PARAMS_INIT

WDF_REQUEST_TYPE

WdfRequestGetCompletionParams