Método IWDFIoRequest::ForwardToIoQueue (wudfddi.h)
[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los nuevos controladores UMDF deben escribirse mediante UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción a UMDF.]
El método ForwardToIoQueue reenvía (es decir, requeues) una solicitud de E/S a una de las colas de E/S del controlador de llamada.
Sintaxis
HRESULT ForwardToIoQueue(
[in] IWDFIoQueue *pDestination
);
Parámetros
[in] pDestination
Puntero a la interfaz IWDFIoQueue para el objeto de cola de destino.
Valor devuelto
forwardToIoQueue devuelve S_OK si la operación se realiza correctamente. De lo contrario, este método devuelve uno de los códigos de error definidos en Winerror.h.
Observaciones
El controlador debe poseer la solicitud de E/S y debe haber obtenido la solicitud de una de sus colas de E/S.
Las colas de origen y destino no pueden ser las mismas. En otras palabras, el controlador no puede llamar a ForwardToIoQueue para devolver una solicitud a la cola de la que procede. Para devolver una solicitud de E/S a la cola de E/S de la que procede, el controlador puede llamar a IWDFIoRequest2::Requeue.
Las colas de origen y destino deben pertenecer al mismo dispositivo.
Además, el método ForwardToIoQueue no puede volver a poner en cola una solicitud que el controlador obtuvo llamando al método IWDFIoQueue::RetrieveNextRequest.
No se puede cancelar la solicitud. Si el controlador llamó anteriormente al método IWDFIoRequest::MarkCancelable para que se pueda cancelar la solicitud, el controlador debe llamar al método IWDFIoRequest::UnmarkCancelable antes de llamar a ForwardToIoQueue.
Ejemplos
En el ejemplo de código siguiente se muestra cómo reenviar una solicitud a otra cola si el búfer de la solicitud no es suficiente para contener la información necesaria.
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;
}
}
Requisitos
Requisito | Valor |
---|---|
fin del soporte técnico | No disponible en UMDF 2.0 y versiones posteriores. |
de la plataforma de destino de | Escritorio |
versión mínima de UMDF | 1.5 |
encabezado de | wudfddi.h (incluya Wudfddi.h) |
DLL de | WUDFx.dll |