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


Функция WdfIoQueueRetrieveNextRequest (wdfio.h)

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

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

Синтаксис

NTSTATUS WdfIoQueueRetrieveNextRequest(
  [in]  WDFQUEUE   Queue,
  [out] WDFREQUEST *OutRequest
);

Параметры

[in] Queue

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

[out] OutRequest

Указатель на расположение, которое получает дескриптор объекта запроса платформы. Если очередь пуста или получен последний запрос, этот параметр получает значение NULL.

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

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

Код возврата Описание
STATUS_INVALID_PARAMETER
Драйвер предоставил недопустимый дескриптор.
STATUS_NO_MORE_ENTRIES
Платформа достигла конца очереди ввода-вывода.
STATUS_INVALID_DEVICE_STATE
Указанная очередь ввода-вывода настраивается для метода параллельной диспетчеризации.
STATUS_WDF_PAUSED
Указанная очередь ввода-вывода управляется питанием , а ее устройство находится в состоянии низкого энергопотребления, или указанная очередь остановлена.
 

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

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

Комментарии

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

После вызова WdfIoQueueRetrieveNextRequest для получения запроса ввода-вывода драйвер владеет запросом и должен каким-то образом обработать запрос ввода-вывода .

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

Примеры

В следующем примере кода получается дескриптор для следующего объекта запроса, содержащегося в очереди ввода-вывода устройства.

NTSTATUS  status;
WDFREQUEST  request;

status = WdfIoQueueRetrieveNextRequest(
                                       pDeviceContext->ReadQueue,
                                       &request
                                       );

Требования

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

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

WdfIoQueueRetrieveFoundRequest

WdfIoQueueRetrieveRequestByFileObject