Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um evento de dispositivo de imagem estática é uma ocorrência no nível do dispositivo sobre a qual o software de nível superior deve ser notificado, se esse software tiver solicitado tal notificação. O minidriver de modo de usuário é responsável por definir a maioria dos eventos do dispositivo e entregar notificações quando ocorre um evento. Em geral, os eventos indicam que o software de nível superior será necessário para executar alguma ação.
Um evento típico de dispositivo de imagem estática é a deteção de um botão sendo pressionado. Por exemplo, um scanner pode fornecer a um usuário botões separados para iniciar a digitalização de texto e fotografias. Quando um botão é pressionado, um software de nível superior será necessário para exibir ou armazenar a imagem. O monitor de eventos de imagem estática deteta que o evento ocorreu (usando a interface IStiDevice COM) e pode chamar um aplicativo de imagem estática que foi registrado anteriormente (usando a interface IStillImage COM).
Os eventos do dispositivo de imagem estática são representados por GUIDs. Em sti.h, a Microsoft define os seguintes eventos de dispositivo de imagem estática:
| GUID do evento | Propósito |
|---|---|
| GUID_DeviceArrivedLaunch | Um dispositivo de imagem estática acaba de ser anexado ao sistema. |
| GUID_ScanImage | Uma imagem deve ser digitalizada no computador. |
| GUID_ScanFaxImage | Uma imagem deve ser digitalizada no computador e, em seguida, enviada por fax. |
| GUID_ScanPrintImage | Uma imagem deve ser digitalizada no computador e, em seguida, impressa. |
| GUID_STIUserDefined1 | Foi pressionado um botão definido pelo utilizador. |
| GUID_STIUserDefined2 | Foi pressionado um botão definido pelo utilizador. |
| GUID_STIUserDefined3 | Foi pressionado um botão definido pelo utilizador. |
Os desenvolvedores de minidrivers de modo de usuário devem usar esses GUIDs de eventos predefinidos sempre que possível. Se esses GUIDs não forem apropriados, os GUIDs para eventos específicos do dispositivo deverão ser definidos.
Para definir um evento de dispositivo de imagem estática, você deve:
Especifique um(a) GUID para cada evento.
Inclua cada GUID no arquivo INF do driver de modo de usuário.
Dentro do arquivo INF do driver, cada especificação GUID deve incluir um asterisco (que significa "todos os aplicativos") ou uma lista de aplicativos específicos, indicando quais aplicativos devem ser iniciados quando o evento ocorre. O monitor de eventos de imagem estática usa essa lista para fornecer atribuições padrão de aplicativos a eventos. O usuário pode modificar essas atribuições com o Painel de Controle de Scanners e Câmeras.
Notificação de evento
O driver deve monitorar o dispositivo (usando E/S assíncrona ou sondagem) para determinar quando o evento associado a cada GUID ocorre. Dependendo das capacidades do dispositivo, o driver pode notificar os clientes sobre a ocorrência de eventos do dispositivo de forma assíncrona ou respondendo a uma solicitação para sondar o dispositivo. Todos os drivers que podem enviar notificações de eventos de dispositivos (por qualquer um dos métodos) devem ativar o sinalizador STI_GENCAP_NOTIFICATIONS na estrutura STI_DEV_CAPS do dispositivo. Os drivers que oferecem suporte à sondagem, e não à notificação assíncrona, também devem definir o sinalizador STI_GENCAP_POLLING_NEEDED na mesma estrutura. (Esses recursos também devem ser indicados usando a palavra-chave Capabilities em arquivos INF para dispositivos de imagem estática.)
Se um driver oferecer suporte à notificação assíncrona de eventos, o monitor de eventos chamará IStiUSD::SetNotificationHandle para solicitar notificações e fornecer um identificador de evento. Quando ocorre um evento de dispositivo, o driver deve notificar o monitor de eventos chamando SetEvent (consulte a documentação do SDK do Microsoft Windows), usando o identificador de evento como um argumento. O cliente pode então chamar IStiUSD::GetNotificationData para obter o GUID do evento.
Se a sondagem for necessária, o monitor de eventos chamará IStiUSD::GetStatus para sondar o driver, que por sua vez deve sondar o dispositivo e retornar os resultados em uma estrutura STI_DEVICE_STATUS .