Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un evento de dispositivo de imagen fija es un suceso a nivel de dispositivo sobre el cual se debe notificar al software de nivel superior, si ese software ha solicitado dicha notificación. El minidriver en modo de usuario es responsable de definir la mayoría de los eventos del dispositivo y entregar notificaciones cuando se produce un evento. En general, los eventos indican que se va a requerir software de nivel superior para realizar alguna acción.
Un evento típico de un dispositivo de imagen fija es la detección de un botón pulsador que se presiona. Por ejemplo, un escáner podría proporcionar a un usuario botones independientes para iniciar el examen de texto y fotografías. Cuando se presiona un botón, se necesitará software de nivel superior para mostrar o almacenar la imagen. El monitor de eventos de imagen fija detecta que se ha producido el evento (mediante la interfaz COM IStiDevice) y puede llamar a una aplicación de imagen fija que se registró anteriormente (mediante la interfaz COM IStillImage).
Los eventos de dispositivos de imagen fija están representados por GUID. En sti.h, Microsoft define los siguientes eventos de dispositivos de imágenes fijas:
| GUID de evento | Propósito |
|---|---|
| GUID_DeviceArrivedLaunch | Un dispositivo de imágenes fijas acaba de ser conectado al sistema. |
| GUID_ScanImage | Se debe escanear una imagen en el ordenador. |
| GUID_ScanFaxImage | Se debe escanear una imagen en el equipo y, a continuación, enviar por fax. |
| GUID_ScanPrintImage | Se debe escanear una imagen en el ordenador y, a continuación, imprimirla. |
| GUID_STIUserDefined1 | Se ha presionado un botón definible por el usuario. |
| GUID_STIUserDefined2 | Se ha presionado un botón definible por el usuario. |
| GUID_STIUserDefined3 | Se ha presionado un botón definible por el usuario. |
Los desarrolladores de minicontroladores en modo de usuario deben usar estos GUID de eventos predefinidos siempre que sea posible. Si estos GUID no son adecuados, se deben definir GUID para eventos específicos del dispositivo.
Para definir un evento de dispositivo de imagen fija, debe:
Especifique un GUID para cada evento.
Incluya cada GUID en el archivo INF del controlador en modo de usuario.
Dentro del archivo INF del controlador, cada especificación GUID debe incluir un asterisco (lo que significa "todas las aplicaciones") o una lista de aplicaciones específicas, lo que indica qué aplicaciones deben iniciarse cuando se produce el evento. El monitor de eventos still image usa esta lista para proporcionar asignaciones predeterminadas de aplicaciones a eventos. El usuario puede modificar estas asignaciones con el Panel de control escáneres y cámaras.
Notificación de evento
El controlador debe supervisar el dispositivo (mediante E/S asincrónica o sondeo) para determinar cuándo se produce el evento asociado a cada GUID. En función de las funcionalidades del dispositivo, el controlador puede notificar a los clientes la aparición de eventos de dispositivo de forma asincrónica o respondiendo a una solicitud para sondear el dispositivo. Todos los controladores que son capaces de entregar notificaciones de eventos de dispositivo (por cualquiera de los métodos) deben establecer la marca STI_GENCAP_NOTIFICATIONS en la estructura STI_DEV_CAPS del dispositivo. Los controladores que admiten el sondeo y no la notificación asincrónica también deben establecer la marca STI_GENCAP_POLLING_NEEDED en la misma estructura. (Estas funcionalidades también deben indicarse mediante la palabra clave Capabilities en los archivos INF para dispositivos de imagen fija.)
Si un controlador admite notificaciones asincrónicas de eventos, el monitor de eventos llama a IStiUSD::SetNotificationHandle para solicitar notificaciones y proporcionar un identificador de eventos. Cuando se produce un evento de dispositivo, el controlador debe notificar al monitor de eventos llamando a SetEvent (consulte la documentación del SDK de Microsoft Windows), con el identificador de eventos como argumento. A continuación, el cliente puede llamar a IStiUSD::GetNotificationData para obtener el GUID del evento.
Si se requiere sondeo, el monitor de eventos llama a IStiUSD::GetStatus para sondear el controlador, el cual, a su vez, debe sondear el dispositivo y retornar los resultados en una estructura STI_DEVICE_STATUS.