Eventi del dispositivo di immagine ancora
Un evento di dispositivo ancora immagine è un'occorrenza a livello di dispositivo che il software di livello superiore deve ricevere una notifica, se tale software ha richiesto tale notifica. Il minidriver in modalità utente è responsabile della definizione della maggior parte degli eventi del dispositivo e della distribuzione di notifiche quando si verifica un evento. In generale, gli eventi indicano che il software di livello superiore sarà necessario per eseguire alcune azioni.
Un evento tipico del dispositivo ancora immagine è il rilevamento di un pulsante push premuto. Ad esempio, uno scanner potrebbe fornire un utente con pulsanti separati per avviare l'analisi di testo e fotografie. Quando viene premuto un pulsante, sarà necessario un software di livello superiore per visualizzare o archiviare l'immagine. Il monitoraggio eventi immagine ancora rileva che l'evento si è verificato (usando l'interfaccia COM IStiDevice) e può chiamare un'applicazione immagine ancora registrata in precedenza (usando l'interfaccia COM IStillImage).
Gli eventi del dispositivo immagine ancora sono rappresentati da GUID. In sti.h, Microsoft definisce gli eventi del dispositivo ancora immagine seguenti:
GUID evento | Scopo |
---|---|
GUID_DeviceArrivedLaunch | Un dispositivo ancora immagine è stato appena collegato al sistema. |
GUID_ScanImage | Un'immagine deve essere analizzata nel computer. |
GUID_ScanFaxImage | Un'immagine deve essere analizzata nel computer e quindi faxata. |
GUID_ScanPrintImage | Un'immagine deve essere analizzata nel computer e quindi stampata. |
GUID_STIUserDefined1 | È stato premuto un pulsante definibile dall'utente. |
GUID_STIUserDefined2 | È stato premuto un pulsante definibile dall'utente. |
GUID_STIUserDefined3 | È stato premuto un pulsante definibile dall'utente. |
Gli sviluppatori di minidriver in modalità utente devono usare questi GUID evento predefiniti ogni volta che possibile. Se questi GUID non sono appropriati, i GUID per gli eventi specifici del dispositivo devono essere definiti.
Per definire un evento del dispositivo ancora immagine, è necessario:
Specificare un GUID per ogni evento.
Includere ogni GUID nel file INF in modalità utente.
All'interno del file INF del driver, ogni specifica GUID deve includere un asterisco (ovvero "tutte le applicazioni") o un elenco di applicazioni specifiche, che indica quali applicazioni devono essere avviate al momento dell'evento. Il monitoraggio eventi dell'immagine continua usa questo elenco per fornire assegnazioni predefinite di applicazioni agli eventi. L'utente può modificare queste assegnazioni con scanner e fotocamere Pannello di controllo.
Notifica dell'evento
Il driver deve monitorare il dispositivo (usando I/O asincrono o polling) per determinare quando si verifica l'evento associato a ogni GUID. A seconda delle funzionalità del dispositivo, il driver può notificare ai client l'occorrenza di eventi del dispositivo in modo asincrono o rispondendo a una richiesta di polling del dispositivo. Tutti i driver che sono in grado di inviare notifiche di eventi del dispositivo (in entrambi i metodi) devono impostare il flag di STI_GENCAP_NOTIFICATIONS nella struttura di STI_DEV_CAPS del dispositivo. I driver che supportano il polling e non la notifica asincrona, devono anche impostare il flag di STI_GENCAP_POLLING_NEEDED nella stessa struttura. Queste funzionalità devono essere indicate anche usando la parola chiave Funzionalità nei file INF per dispositivi ancora immagine.
Se un driver supporta la notifica asincrona degli eventi, il monitoraggio eventi chiama IStiUSD::SetNotificationHandle per richiedere notifiche e fornire un handle eventi. Quando si verifica un evento del dispositivo, il driver deve notificare al monitoraggio eventi chiamando SetEvent (vedere la documentazione di Microsoft Windows SDK), usando l'handle eventi come argomento. Il client può quindi chiamare IStiUSD::GetNotificationData per ottenere il GUID dell'evento.
Se è necessario eseguire il polling, il monitoraggio eventi chiama IStiUSD::GetStatus per eseguire il polling del driver, che deve a sua volta eseguire il polling del dispositivo e restituire risultati in una struttura STI_DEVICE_STATUS .