Método IWDFDevice::CreateIoQueue (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 CreateIoQueue configura la cola de E/S predeterminada asociada a un dispositivo o crea una cola de E/S secundaria para el dispositivo.
Sintaxis
HRESULT CreateIoQueue(
[in, optional] IUnknown *pCallbackInterface,
[in] BOOL bDefaultQueue,
[in] WDF_IO_QUEUE_DISPATCH_TYPE DispatchType,
[in] BOOL bPowerManaged,
[in] BOOL bAllowZeroLengthRequests,
[out] IWDFIoQueue **ppIoQueue
);
Parámetros
[in, optional] pCallbackInterface
Puntero a la interfaz de IUnknown que usa el marco para determinar las funciones de devolución de llamada de eventos a las que se suscribe el controlador en la cola. Estas son las funciones a las que llama el marco cuando se producen los eventos pertinentes.
Para las versiones 1.9 y posteriores de UMDF, este parámetro es necesario para las colas de E/S que usan el método de distribución secuencial o paralelo , y es opcional (puede ser NULL) para las colas de E/S que usan el método de distribución manual. Para las versiones de UMDF anteriores a la 1.9, este parámetro es necesario para todos los métodos de distribución.
[in] bDefaultQueue
Valor BOOL que especifica si se debe configurar la cola de E/S predeterminada o crear una cola de E/S secundaria para el dispositivo. TRUE indica que se configura la cola de E/S predeterminada; FALSE indica que se crea una cola de E/S secundaria.
[in] DispatchType
Valor de tipo WDF_IO_QUEUE_DISPATCH_TYPEque identifica cómo el controlador debe recibir solicitudes de la cola de E/S.
[in] bPowerManaged
Valor BOOL que especifica si la cola de E/S está administrada por energía. TRUE indica que el marco coordina automáticamente el envío de la cola de E/S con Plug and Play (PnP) y el estado de alimentación del dispositivo; FALSE indica que no hay distribución coordinada automáticamente.
[in] bAllowZeroLengthRequests
Valor BOOL que especifica si el marco coloca solicitudes de E/S de longitud cero directamente en la cola de E/S para que el controlador controle. TRUE indica que el controlador debe recibir solicitudes de lectura y escritura que tienen búferes de longitud cero, es decir, el marco coloca automáticamente estos tipos de solicitud directamente en la cola de E/S para el controlador. FALSE indica que el marco completa las solicitudes de E/S de longitud cero en lugar de colocarlas en la cola de E/S.
[out] ppIoQueue
Puntero a una variable que recibe un puntero a la interfaz de IWDFIoQueue para el objeto de cola de E/S recién creado o el objeto de cola de E/S predeterminado.
Valor devuelto
CreateIoQueue devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
|
La cola de E/S se creó correctamente. |
|
La cola de E/S se configura de una de las maneras siguientes:
|
CreateIoQueue también puede devolver otros valores HRESULT.
Observaciones
La interfaz IUnknown que proporciona el controlador para el parámetro pCallbackInterface puede admitir varias funciones de devolución de llamada de cola. El marco llama al método QueryInterface en la interfaz IUnknown proporcionada varias veces para recuperar los métodos de interfaz que admite el controlador. Cuando las aplicaciones realizan acciones relacionadas con los métodos de las interfaces admitidas (por ejemplo, una solicitud de lectura de E/S), el marco llama a los métodos (por ejemplo, el método IQueueCallbackRead::OnRead) para notificar al controlador. El marco llama a QueryInterface para las interfaces siguientes:
IQueueCallbackDefaultIoHandler
Cuando el controlador pasa WdfIoQueueDispatchSequential o WdfIoQueueDispatchParallel para el parámetro DispatchType de CreateIoQueue para crear una cola nomanual, createIoQueue solo puede devolver S_OK si el objeto de devolución de llamada de cola del controlador implementa al menos una de las interfaces anteriores e indica la compatibilidad de dichas interfaces a través de la interfaz IUnknown que pCallbackInterface apunta.
Cuando el controlador pasa WdfIoQueueDispatchManual para DispatchType para crear una cola manual, CreateIoQueue solo puede devolver S_OK si el objeto de devolución de llamada de cola del controlador no implementa ni indica compatibilidad con ninguna de las interfaces de devolución de llamada anteriores. Para obtener más información sobre los objetos de devolución de llamada del controlador, vea Crear objetos de devolución de llamada.
El marco también llama a QueryInterface en la interfaz IUnknown proporcionada para determinar si el controlador admite cualquiera de las interfaces siguientes:
El marco también llama a QueryInterface en la interfaz IUnknown proporcionada para determinar si el controlador admite la interfaz IQueueCallbackStateChange. El objeto de devolución de llamada de cola del controlador puede implementar e indicar compatibilidad con IQueueCallbackStateChange solo para una cola manual. El objeto de devolución de llamada de cola del controlador no debe implementar e indicar compatibilidad con IQueueCallbackStateChange para una cola secuencial o paralela.
Ejemplos
Para obtener un ejemplo de código de cómo usar el método CreateIoQueue, vea IWDFDriver::CreateDevice.
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 |