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