Compartir a través de


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, consulte la sección Comentarios siguiente.

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

Observaciones

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 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 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 siguiente ejemplo de código procede 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 WdfRequestGetStatus valor devuelto 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 Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.0
versión mínima de UMDF 2.0
encabezado de wdfrequest.h (incluya Wdf.h)
biblioteca de 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