estructura WDF_REQUEST_COMPLETION_PARAMS (wdfrequest.h)

[Se aplica a KMDF y UMDF]

La estructura WDF_REQUEST_COMPLETION_PARAMS contiene parámetros asociados a la finalización de una solicitud de E/S.

Sintaxis

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;

Miembros

Size

Tamaño, en bytes, de esta estructura.

Type

Valor WDF_REQUEST_TYPE que identifica el tipo de solicitud.

IoStatus

Estructura IO_STATUS_BLOCK de la solicitud.

Parameters

Valores específicos de la solicitud.

Parameters.Write

Parameters.Write.Buffer

Identificador de un objeto de memoria de marco. Este objeto identifica el búfer que el controlador especificó al dar formato a la solicitud y lo envió a un destino de E/S.

Parameters.Write.Length

Longitud, en bytes, de la transferencia.

Parameters.Write.Offset

Dirección inicial dentro del búfer para la transferencia de datos.

Parameters.Read

Parameters.Read.Buffer

Identificador de un objeto de memoria de marco. Este objeto identifica el búfer que el controlador especificó al dar formato a la solicitud y lo envió a un destino de E/S.

Parameters.Read.Length

Longitud, en bytes, de la transferencia.

Parameters.Read.Offset

Dirección inicial dentro del búfer para la transferencia de datos.

Parameters.Ioctl

Parameters.Ioctl.IoControlCode

Parameters.Ioctl.Input

Parameters.Ioctl.Input.Buffer

Identificador de un objeto de memoria de marco. Este objeto identifica el búfer de entrada que el controlador especificó al dar formato a la solicitud y lo envió a un destino de E/S.

Parameters.Ioctl.Input.Offset

Dirección inicial dentro del búfer para la transferencia de datos.

Parameters.Ioctl.Output

Parameters.Ioctl.Output.Buffer

Identificador de un objeto de memoria de marco. Este objeto identifica los búferes de salida que el controlador especificó al dar formato a la solicitud y lo envió a un destino de E/S.

Parameters.Ioctl.Output.Offset

Dirección inicial dentro del búfer para la transferencia de datos.

Parameters.Ioctl.Output.Length

Longitud, en bytes, de la transferencia.

Parameters.Others

Parameters.Others.Argument1

El uso de este miembro se define mediante la pila de controladores. Vea la sección Comentarios.

Parameters.Others.Argument1.Ptr

Parameters.Others.Argument1.Value

Parameters.Others.Argument2

El uso de este miembro se define mediante la pila de controladores.

Parameters.Others.Argument2.Ptr

Parameters.Others.Argument2.Value

Parameters.Others.Argument3

El uso de este miembro se define mediante la pila de controladores.

Parameters.Others.Argument3.Ptr

Parameters.Others.Argument3.Value

Parameters.Others.Argument4

El uso de este miembro se define mediante la pila de controladores.

Parameters.Others.Argument4.Ptr

Parameters.Others.Argument4.Value

Parameters.Usb

En el caso de los dispositivos USB, este miembro contiene un puntero a una estructura WDF_USB_REQUEST_COMPLETION_PARAMS .

Parameters.Usb.Completion

Comentarios

La estructura WDF_REQUEST_COMPLETION_PARAMS se usa como entrada para el método WdfRequestGetCompletionParams y la función de devolución de llamada CompletionRoutine de un controlador.

En ambos casos, la estructura de parámetros de finalización contiene información válida solo si el controlador ha dado formato a la solicitud llamando a uno de los métodos WdfIoTargetFormatXxx . Por ejemplo, vea WdfIoTargetFormatRequestForRead.

Antes de llamar a WdfRequestGetCompletionParams para recuperar la información de finalización de E/S de una solicitud, el controlador debe llamar primero a WDF_REQUEST_COMPLETION_PARAMS_INIT para inicializar la estructura de WDF_REQUEST_COMPLETION_PARAMS .

Los miembros Parameters.Others.Argument son argumentos personalizados que un controlador suele pasar por la pila (y puede volver después de completar la solicitud). Se usan para datos dependientes de la pila de controladores no estándar. Por ejemplo, un controlador USB especifica un puntero a un URB en Parameters.Others.Argument1 cuando envía una solicitud de IOCTL_INTERNAL_USB_SUBMIT_URB a la pila USB. Del mismo modo, un controlador Bluetooth especifica un puntero a un BRB (bloque de solicitud Bluetooth) en Parameters.Others.Argument1 cuando recibe un IOCTL_INTERNAL_BTH_SUBMIT_BRB.

Requisitos

Requisito Value
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfrequest.h (incluir Wdf.h)

Consulte también

CompletionRoutine

IO_STATUS_BLOCK

WDF_REQUEST_COMPLETION_PARAMS_INIT

WDF_REQUEST_TYPE

WdfRequestGetCompletionParams