Ordine di chiamata per le funzioni minidriver
Quando viene avviato un minidriver, chiama alcuni dei punti di ingresso di STI meno recenti, ad esempio IStiUSD::Initialize e IStiUSD::GetStatus. Non appena la prima applicazione tenta di comunicare con il dispositivo, il servizio WIA chiama IWiaMiniDrv::d rvInitializeWia. In questa funzione il minidriver deve costruire l'albero degli elementi.
Il servizio WIA chiama quindi IWiaMiniDrv::d rvInitItemProperties per ogni elemento nell'albero. Il minidriver deve creare tutte le proprietà rilevanti per l'elemento. In alcune situazioni, potrebbe essere opportuno creare una proprietà vuota e compilarne i dati in un secondo momento. Ad esempio, per prestazioni migliori, le anteprime delle immagini sulle fotocamere devono essere lette solo quando il servizio WIA richiede in modo specifico, come descritto di seguito.
La funzione successiva da chiamare dipende dall'applicazione e dal tipo di dispositivo. In genere, l'operazione più comune di un'applicazione consiste nel trasferire i dati. Per gli scanner, l'applicazione configura prima le proprietà ,ad esempio il tipo di dati e l'extent, che definiscono l'immagine che vuole ottenere dal dispositivo. Il servizio WIA chiama IWiaMiniDrv::d rvValidateItemProperties quando l'applicazione modifica le proprietà. Il minidriver deve verificare che le proprietà siano valide, comunicando con il dispositivo, se necessario. Il minidriver dovrebbe in genere evitare di impostare le proprietà in tale funzione, perché un'altra applicazione potrebbe impostare le proprietà su valori diversi prima che venga eseguito il trasferimento dei dati.
Per trasferire i dati, il servizio WIA chiama IWiaMiniDrv::d rvLockWiaDevice, IWiaMiniDrv::d rvWriteItemProperties, IWiaMiniDrv::d rvAcquireItemData e IWiaMiniDrv::d rvUnLockWiaDevice, in tale ordine. Le chiamate per bloccare e sbloccare il dispositivo garantiscono che nessun'altra applicazione accesa al dispositivo durante il trasferimento. Per gli scanner, IWiaMiniDrv::d rvWriteItemProperties deve inviare proprietà come posizione, extent e risoluzione al dispositivo. I driver della fotocamera in genere non devono inviare alcuna proprietà al dispositivo. IWiaMiniDrv::d rvAcquireItemData deve recuperare i dati dell'immagine dal dispositivo e inviarli all'applicazione tramite il servizio WIA, usando l'interfaccia COM IWiaMiniDrvCallback.
Per le fotocamere, se un'applicazione vuole visualizzare anteprime per le immagini, il servizio WIA chiama IWiaMiniDrv::d rvReadItemProperties in ogni immagine. Il minidriver deve leggere l'anteprima a quel punto e memorizzarla nella cache nel contesto dell'elemento del driver. È importante memorizzare nella cache l'anteprima, perché più applicazioni potrebbero richiedere l'anteprima, generando più chiamate a IWiaMiniDrv::d rvReadItemProperties. Se il minidriver legge l'anteprima ogni volta che un'applicazione lo richiede, le prestazioni subiscono.
Un'altra considerazione speciale per le fotocamere è le proprietà degli elementi radice che influiscono sulle impostazioni della fotocamera (ad esempio, velocità dell'otturatore). Quando l'applicazione modifica queste proprietà, il servizio WIA chiama IWiaMiniDrv::d rvValidateItemProperties. Il minidriver può comunicare con la fotocamera, se necessario, per convalidare le impostazioni della proprietà. Questa funzione, tuttavia, non è la posizione migliore per modificare le impostazioni nella fotocamera, perché un'altra applicazione può anche modificare le proprietà. Il minidriver deve aggiornare tutte le impostazioni della fotocamera dalle proprietà dell'elemento radice quando viene chiamata la funzione IWiaMiniDrv::d rvDeviceCommand per acquisire una nuova immagine.