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


Метод IWDFIoRequest::ForwardToIoQueue (wudfddi.h)

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

Метод ForwardToIoQueue перенаправит (то есть повторно отправляет) запрос ввода-вывода в одну из очередей ввода-вывода вызывающего драйвера.

Синтаксис

HRESULT ForwardToIoQueue(
  [in] IWDFIoQueue *pDestination
);

Параметры

[in] pDestination

Указатель на интерфейс IWDFIoQueue для целевого объекта очереди.

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

ForwardToIoQueue возвращает S_OK, если операция выполнена успешно. В противном случае этот метод возвращает один из кодов ошибок, определенных в Winerror.h.

Комментарии

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

Исходная и целевая очереди не могут быть одинаковыми. Другими словами, драйвер не может вызвать ForwardToIoQueue для возврата запроса в очередь, из которую он поступил. Чтобы вернуть запрос ввода-вывода в очередь ввода-вывода, из которую он поступил, драйвер может вызвать IWDFIoRequest2::Requeue.

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

Кроме того, метод ForwardToIoQueue не может перезапустить запрос, полученный драйвером путем вызова метода IWDFIoQueue::RetrieveNextRequest .

Запрос не может быть отменен. Если драйвер ранее вызывал метод IWDFIoRequest::MarkCancelable для отмены запроса, драйвер должен вызвать метод IWDFIoRequest::UnmarkCancelable перед вызовомForwardToIoQueue.

Примеры

В следующем примере кода показано, как перенаправить запрос в другую очередь, если буфера запроса недостаточно для хранения необходимых сведений.

HRESULT hr;
 if (OutputBufferSizeInBytes < sizeof(SWITCH_STATE)) {
    hr = HRESULT_FROM_NT(ERROR_INSUFFICIENT_BUFFER);
 }
 else {
     hr = FxRequest->ForwardToIoQueue(
                          m_Device->GetSwitchChangeQueue()
                          );
     if (SUCCEEDED(hr)) {
         completeRequest = false;
     }
  }

Требования

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

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

IWDFIoQueue

IWDFIoQueue::RetrieveNextRequest

IWDFIoRequest

IWDFIoRequest::MarkCancelable

IWDFIoRequest::UnmarkCancelable