Compartilhar via


Eventos de dispositivo de imagem ainda

Um evento de dispositivo de imagem ainda é uma ocorrência no nível do dispositivo sobre a qual o software de nível superior deve ser notificado, se esse software solicitou essa notificação. O minidriver no modo de usuário é responsável por definir a maioria dos eventos do dispositivo e fornecer 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 parada é a detecção de um botão de push sendo pressionado. Por exemplo, um scanner pode fornecer a um usuário botões separados para iniciar a verificação de texto e fotografias. Quando um botão é pressionado, software de nível superior será necessário para exibir ou armazenar a imagem. O monitor de eventos de imagem ainda detecta que o evento ocorreu (usando a interface COM IStiDevice) e pode chamar um aplicativo de imagem parada que foi registrado anteriormente (usando a interface COM IStillImage).

Eventos de dispositivo de imagem ainda são representados por GUIDs. Em sti.h, a Microsoft define os seguintes eventos de dispositivo de imagem ainda:

GUID do evento Finalidade
GUID_DeviceArrivedLaunch Um dispositivo de imagem parada acaba de ser anexado ao sistema.
GUID_ScanImage Uma imagem deve ser verificada no computador.
GUID_ScanFaxImage Uma imagem deve ser verificada no computador e, em seguida, enviada por fax.
GUID_ScanPrintImage Uma imagem deve ser examinada no computador e impressa.
GUID_STIUserDefined1 Um botão definível pelo usuário foi pressionado.
GUID_STIUserDefined2 Um botão definível pelo usuário foi pressionado.
GUID_STIUserDefined3 Um botão definível pelo usuário foi pressionado.

Os desenvolvedores de minidrivers no modo de usuário devem usar esses GUIDs de evento 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 parada, você deve:

  • Especifique um GUID para cada evento.

  • Inclua cada GUID no arquivo INF do driver do 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 ocorrer. O monitor de eventos de imagem ainda usa essa lista para fornecer atribuições padrão de aplicativos a eventos. O usuário pode modificar essas atribuições com os scanners e câmeras Painel de Controle.

Notificação de eventos

O driver deve monitorar o dispositivo (usando E/S assíncrona ou sondagem) para determinar quando o evento associado a cada GUID ocorre. Dependendo dos recursos 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 capazes de fornecer notificação de eventos de dispositivo (por qualquer método) devem definir o sinalizador STI_GENCAP_NOTIFICATIONS na estrutura STI_DEV_CAPS do dispositivo. Os drivers que dão 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 os recursos palavra-chave em arquivos INF para dispositivos de imagem ainda.)

Se um driver der 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 SDK do Microsoft Windows), usando o identificador de evento como um argumento. Em seguida, o cliente pode chamar IStiUSD::GetNotificationData para obter o GUID do evento.

Se a sondagem for necessária, o monitor do evento chamará IStiUSD::GetStatus para sondar o driver, que por sua vez deve sondar o dispositivo e retornar resultados em uma estrutura STI_DEVICE_STATUS .