Функция WdfRequestGetStatus (wdfrequest.h)

[Применимо к KMDF и UMDF]

Метод WdfRequestGetStatus возвращает состояние запроса ввода-вывода.

Синтаксис

NTSTATUS WdfRequestGetStatus(
  [in] WDFREQUEST Request
);

Параметры

[in] Request

Дескриптор объекта запроса платформы.

Возвращаемое значение

WdfRequestGetStatus возвращает значение NTSTATUS. Дополнительные сведения о том, какое значение может быть возвращено, см. в следующем разделе Примечаний.

Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Комментарии

Метод WdfRequestGetStatus возвращает одно из следующих результатов:

  • Если вызов драйвера к WdfRequestSend завершается успешно, WdfRequestGetStatus возвращает значение состояния, заданное драйвером, вызывающим WdfRequestComplete для выполнения указанного запроса. Драйвер обычно вызывает WdfRequestGetStatus из функции обратного вызова CompletionRoutine .
  • Если вызов драйвера к WdfRequestSend завершается сбоем, WdfRequestGetStatus возвращает значение состояния, заданное платформой для описания сбоя. Драйвер может вызывать WdfRequestGetStatus сразу после вызова WdfRequestSend.
Если драйвер устанавливает флаг WDF_REQUEST_SEND_OPTION_SYNCHRONOUS для запроса при вызове WdfRequestSend, драйвер может вызвать WdfRequestGetStatus сразу после вызова WdfRequestSend, независимо от того, успешно или сбой вызова WdfRequestSend .

Дополнительные сведения о завершении запроса см. в разделе Завершение запросов ввода-вывода.

Примеры

Следующий пример кода получен из примера драйвера KbFiltr . В этом примере запрос ввода-вывода отправляется целевому объекту ввода-вывода. Если WdfRequestSend завершается ошибкой , в примере используется возвращаемое значение WdfRequestGetStatus в качестве входных данных для 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;
}

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfrequest.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestGetStatusValid(kmdf)

См. также раздел

CompletionRoutine

WdfRequestComplete

WdfRequestSend