Поделиться через


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

[Относится к KMDF и UMDF]

Метод WdfRequestRequeue возвращает запрос ввода-вывода руководителю очереди ввода-вывода, из которой он был доставлен драйверу.

Синтаксис

NTSTATUS WdfRequestRequeue(
  [in] WDFREQUEST Request
);

Параметры

[in] Request

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

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

WdfRequestRequeue возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть одно из следующих значений:

Код возврата Описание
STATUS_INVALID_PARAMETER
Входной параметр недопустим.
STATUS_INVALID_DEVICE_REQUEST
Это значение возвращается, если происходит одно из следующих действий:
  • Указанный запрос ввода-вывода не поступил из очереди ввода-вывода.
  • Драйвер не владеет запросом ввода-вывода.
  • Запрос можно отменить.
  • Метод диспетчеризации очереди не выполняется вручную.
 

Этот метод также может возвращать другие значения NTSTATUS.

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

Комментарии

Драйвер может вызывать WdfRequestRequeue , только если использует метод ручной диспетчеризации для очереди ввода-вывода.

Если драйвер вызывает WdfRequestRequeue после вызова WdfIoQueuePurge, повторная попытка может завершиться до завершения очистки. В kmdf версии 1.9 и более ранних эта последовательность приводит к сбою операционной системы. Эта проблема устранена в KMDF версии 1.11 и более поздних.

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

Примеры

Следующий пример кода возвращает указанный запрос ввода-вывода в очередь, из которой драйвер получил запрос.

NTSTATUS status;

status = WdfRequestRequeue(request);

Требования

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