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 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 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 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 envío 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 va a configurar la cola de E/S predeterminada; FALSE indica que se va a crear una cola de E/S secundaria.
[in] DispatchType
Valor WDF_IO_QUEUE_DISPATCH_TYPE tipo que 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 la distribución 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 IWDFIoQueue del objeto de cola de E/S recién creado o del 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 siguientes maneras:
|
CreateIoQueue también podría devolver otros valores HRESULT.
Comentarios
La interfaz IUnknown que el controlador proporciona 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 a la que apunta pCallbackInterface .
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 . Opcionalmente, el objeto de devolución de llamada de cola del controlador puede implementar e indicar la compatibilidad con IQueueCallbackStateChange solo para una cola manual. El objeto de devolución de llamada de cola del controlador no debe implementar e indicar la compatibilidad de 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 | 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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de