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


Метод IWDFIoRequest2::Requeue (wudfddi.h)

[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с помощью UMDF.]

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

Синтаксис

HRESULT Requeue();

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

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

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

Этот метод может возвращать одно из других значений, содержащихся в Winerror.h.

Комментарии

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

Примеры

В следующем примере кода показан сегмент функции обратного вызова IQueueCallbackStateChange::OnStateChange . Сегмент получает запрос ввода-вывода из операции ввода-вывода, а затем возвращает запрос в очередь.

void 
CMyQueue::OnStateChange(
    __in IWDFIoQueue* pWdfQueue,
    __in WDF_IO_QUEUE_STATE 
    )
{
    HRESULT hr;
    IWDFIoRequest* Request;
...
    //
    // Get the IWDFIoRequest interface of the next request.
    //
    hr = pWdfQueue->RetrieveNextRequest(&Request);
...
    //
    // Declare an IWDFIoRequest2 interface pointer and obtain the
    // IWDFIoRequest2 interface from the IWDFIoRequest interface.
    //
    CComQIPtr<IWDFIoRequest2> r2 = Request;

    //
    // Add code here to determine whether to process or requeue the request.
    //
...
    //
    // Requeue the request.
    //
    hr = r2->Requeue();
    if (FAILED(hr)) goto Error;
...
}

Требования

Требование Значение
Дата окончания поддержки Недоступно в UMDF 2.0 и более поздних версиях.
Целевая платформа Персональный компьютер
Минимальная версия UMDF 1,9
Верхняя часть wudfddi.h (включая Wudfddi.h)
DLL WUDFx.dll

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

IWDFIoQueue::RetrieveNextRequest

IWDFIoRequest2