Función WdfRequestFormatRequestUsingCurrentType (wdfrequest.h)

[Se aplica a KMDF y UMDF]

El método WdfRequestFormatRequestUsingCurrentType da formato a una solicitud de E/S especificada para que el controlador pueda reenviarlo , sin modificar, al destino de E/S local del controlador.

Sintaxis

void WdfRequestFormatRequestUsingCurrentType(
  [in] WDFREQUEST Request
);

Parámetros

[in] Request

Identificador de un objeto de solicitud de marco que el controlador recibió de una de sus colas de E/S.

Valor devuelto

None

Observaciones

Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.

Cuando el controlador recibe una solicitud de E/S, a veces querrá que el controlador reenvíe la solicitud, sin modificar, a su destino de E/S local. Para reenviar dicha solicitud, el controlador debe:

  1. Llame a WdfRequestFormatRequestUsingCurrentType para dar formato al objeto de solicitud para que el marco pueda pasar la solicitud al destino de E/S local del controlador.
  2. Llame a WdfRequestSend para enviar la solicitud al destino de E/S.
Para obtener más información sobre WdfRequestFormatRequestUsingCurrentType, vea Reenvío de solicitudes de E/S.

Ejemplos

El ejemplo de código siguiente es una función de devolución de llamada EvtIoDefault que reenvía cada solicitud de E/S que recibe, sin modificaciones, al destino de E/S local del dispositivo.

VOID
MyEvtIoDefault(
    WDFQUEUE Queue,
    WDFREQUEST Request
    )
{
    WDF_REQUEST_SEND_OPTIONS options;
    NTSTATUS status;
    WDF_REQUEST_PARAMETERS params;
    BOOLEAN ret;

    WDF_REQUEST_PARAMETERS_INIT(&params);

    WdfRequestGetParameters(
                            Request,
                            &params
                            );

    WdfRequestFormatRequestUsingCurrentType(Request);

    WDF_REQUEST_SEND_OPTIONS_INIT(
                                  &options,
                                  WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET
                                  );

    ret = WdfRequestSend (
                          Request,
                          WdfDeviceGetIoTarget(WdfIoQueueGetDevice(Queue)),
                          &options
                          );
    if (!ret) {
        status = WdfRequestGetStatus(Request);
        WdfRequestComplete(
                           Request,
                           status
                           );
    }
    return;
}

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfrequest.h (incluir Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Reglas de cumplimiento de DDI DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestFormattedValid(kmdf)

Consulte también

WdfRequestSend

WdfRequestWdmFormatUsingStackLocation