Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Le interfacce delle immagini statiche definiscono due modalità di trasferimento: modalità di stato e modalità dati. Quando un client dell'interfaccia COM IStillImage chiama IStillImage::CreateDevice per ottenere l'accesso a un dispositivo di immagine fissa, specifica una o entrambe le modalità di trasferimento. Più client possono aprire un dispositivo in modalità di stato, ma è consentito aprire un dispositivo in modalità dati solo un client alla volta.
Il monitor eventi immagine fissa apre i dispositivi in modalità di stato. In genere, ma non sempre, le API di acquisizione delle immagini aprono i dispositivi in modalità dati.
Dopo che un client ha aperto un dispositivo in modalità dati, il monitor eventi archivia i successivi eventi del dispositivo di immagini fisse in una coda interna. Se il client chiama IStiDevice::Subscribe, può leggere gli eventi dalla coda chiamando IStiDevice::GetLastNotificationData. Dopo che il client chiude il dispositivo, gli eventi ricevuti successivamente causano un nuovo tentativo di avvio di un'applicazione registrata da parte del monitoraggio eventi.
I significati delle due modalità di trasferimento dipendono interamente dal minidriver in modalità utente del dispositivo. Le interfacce IStillImage e IStiDevice consentono di chiamare tutti i metodi in entrambe le modalità.
Un minidriver può determinare la modalità in cui è stata aperta chiamando IStiDevice::GetLastNotificationData. I minidriver devono impedire a un client di eseguire trasferimenti di dati se il client ha richiesto solo la modalità di stato quando si ottiene l'accesso al dispositivo.
È importante notare che i dispositivi vengono in genere aperti in modalità di stato per un periodo di tempo relativamente lungo (ad esempio, il monitoraggio eventi controlla gli eventi del dispositivo), mentre vengono aperti in modalità dati per un tempo relativamente breve (ad esempio, per leggere in un'immagine). Anche se l'architettura dell'immagine continua consente a un solo client alla volta di aprire un dispositivo in modalità dati, potrebbe essere necessario che un driver inserisca ulteriori restrizioni sull'accesso al dispositivo.
Ad esempio, se stai scrivendo un driver per un dispositivo connesso a una porta seriale, potresti voler chiamare CreateFile dall'interno del metodo IStiUSD::LockDevice del driver se il dispositivo è stato aperto in modalità stato. Ciò impedirà ad altre applicazioni di usare la porta (che potrebbe supportare altri dispositivi) mentre le informazioni sullo stato vengono ottenute dal dispositivo.
Per i dispositivi connessi a porte dedicate, ad esempio dispositivi bus SCSI o USB, è in genere consentito chiamare CreateFile dall'interno di IStiUSD::Initialize se è specificata la modalità di stato, perché il dispositivo e la porta saranno sempre dedicati a un client.
Quando un dispositivo viene aperto in modalità dati, CreateFile viene in genere chiamato da IStiUSD:Initialize, indipendentemente dal tipo di bus.