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 controladores UMDF nuevos deben escribirse con 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 con 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 que realiza la llamada.

Sintaxis

HRESULT ForwardToIoQueue(
  [in] IWDFIoQueue *pDestination
);

Parámetros

[in] pDestination

Puntero a la interfaz IWDFIoQueue del 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.

Comentarios

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 la solicitud se pueda cancelar, 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 Value
Finalización del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
Plataforma de destino Escritorio
Versión mínima de UMDF 1.5
Encabezado wudfddi.h (incluya Wudfddi.h)
Archivo DLL WUDFx.dll

Consulte también

IWDFIoQueue

IWDFIoQueue::RetrieveNextRequest

IWDFIoRequest

IWDFIoRequest::MarkCancelable

IWDFIoRequest::UnmarkCancelable