Метод 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 |