Función WdfRequestGetStatus (wdfrequest.h)

[Se aplica a KMDF y UMDF]

El método WdfRequestGetStatus devuelve el estado de una solicitud de E/S.

Sintaxis

NTSTATUS WdfRequestGetStatus(
  [in] WDFREQUEST Request
);

Parámetros

[in] Request

Identificador de un objeto de solicitud de marco.

Valor devuelto

WdfRequestGetStatus devuelve un valor NTSTATUS. Para obtener más información sobre qué valor se puede devolver, vea la siguiente sección Comentarios.

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

Comentarios

El método WdfRequestGetStatus devuelve uno de los siguientes:

  • Si la llamada de un controlador a WdfRequestSend se realiza correctamente, WdfRequestGetStatus devuelve el valor de estado establecido por el controlador que llama a WdfRequestComplete para completar la solicitud especificada. Normalmente, el controlador llama a WdfRequestGetStatus desde una función de devolución de llamada CompletionRoutine .
  • Si se produce un error en la llamada de un controlador a WdfRequestSend , WdfRequestGetStatus devuelve un valor de estado que el marco ha establecido para describir el error. El controlador puede llamar a WdfRequestGetStatus inmediatamente después de llamar a WdfRequestSend.
Si el controlador establece la marca de WDF_REQUEST_SEND_OPTION_SYNCHRONOUS para una solicitud al llamar a WdfRequestSend, el controlador puede llamar a WdfRequestGetStatus inmediatamente después de llamar a WdfRequestSend, si la llamada a WdfRequestSend se realiza correctamente o no.

Para obtener más información sobre la finalización de solicitudes, consulte Finalización de solicitudes de E/S.

Ejemplos

El ejemplo de código siguiente es del controlador de ejemplo KbFiltr . En este ejemplo se envía una solicitud de E/S a un destino de E/S. Si se produce un error en WdfRequestSend , en el ejemplo se usa el valor devuelto WdfRequestGetStatus como entrada para WdfRequestComplete.

VOID
KbFilter_ForwardRequest(
    IN WDFREQUEST Request,
    IN WDFIOTARGET Target
    )
{
    WDF_REQUEST_SEND_OPTIONS options;
    BOOLEAN ret;
    NTSTATUS status;

    WDF_REQUEST_SEND_OPTIONS_INIT(
                                  &options,
                                  WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET
                                  );

    ret = WdfRequestSend(
                         Request,
                         Target,
                         &options
                         );

    if (ret == FALSE) {
        status = WdfRequestGetStatus (Request);
        DebugPrint(("WdfRequestSend failed: 0x%x\n", status));
        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 (incluya Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Reglas de cumplimiento de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestGetStatusValid(kmdf)

Consulte también

CompletionRoutine

WdfRequestComplete

WdfRequestSend