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


Метод 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 (include Wudfddi.h)
DLL WUDFx.dll

См. также

IWDFIoQueue

IWDFIoQueue::RetrieveNextRequest

IWDFIoRequest

IWDFIoRequest::MarkCancelable

IWDFIoRequest::UnmarkCancelable