Condividi tramite


Inizializzazione del minidriver WIA

Il primo passaggio nell'implementazione dell'interfaccia IWiaMiniDrv consiste nell'inizializzare il minidriver e creare un albero gerarchico degli elementi del driver. A tale scopo, il servizio WIA chiama il metodo IWiaMiniDrv::d rvInitializeWia ogni volta che un'applicazione client intende usare il dispositivo. Se due o più applicazioni usano simultaneamente il dispositivo, il servizio WIA chiama questo metodo per ogni applicazione. In questo metodo, il minidriver esegue in genere quanto segue:

  1. Inizializza i parametri passati dal servizio WIA.

  2. Salva l'interfaccia del dispositivo STI a cui fa riferimento pStiDevice. Questa operazione viene eseguita in modo che i metodi IStiDevice::LockDevice e IStiDevice::UnLockDevice possano essere usati per bloccare o sbloccare il dispositivo WIA.

  3. Memorizza nella cache bstrDeviceID ebstrRootFullItemName nelle variabili membro in modo che possano essere usate da altri metodi.

  4. Apre un handle al dispositivo. Questo passaggio è consigliato per le porte non condivise, ad esempio USB, SCSI e 1394.

  5. Compila l'albero degli elementi, come descritto in Creazione dell'albero degli elementi del driver WIA.

Il metodo IWiaMiniDrv::d rvInitializeWia può essere usato anche per creare e inizializzare matrici e strutture dinamiche usate dal driver. Ad esempio, una matrice di comandi ed eventi che supporta il driver può essere creata per un uso successivo dal metodo IWiaMiniDrv::d rvGetCapabilities .

Nota Il metodo IWiaMiniDrv::d rvGetCapabilities può essere chiamato prima che venga chiamato IWiaMiniDrv::d rvInitializeWia . Ciò può verificarsi quando il servizio WIA deve eseguire query sulle informazioni sugli eventi prima che esista un'applicazione per l'uso del dispositivo. Il metodo IWiaMiniDrv::d rvInitializeWia viene chiamato solo quando un'applicazione segnala la finalità di usare il dispositivo.

Tenere traccia delle connessioni applicazione

Come indicato in precedenza, quando un'applicazione intende comunicare con un dispositivo WIA, il servizio WIA chiama il metodo IWiaMiniDrv::d rvInitializeWia . Al termine dell'applicazione con il dispositivo e rilascia tutti i riferimenti WIA a esso, il servizio WIA chiama il metodo IWiaMiniDrv::d rvUnInitializeWiaa . Si noti che WIA supporta più connessioni applicazioni simultanee. Ciò significa che due o più applicazioni possono richiedere un'interfaccia WIA associata allo stesso dispositivo. Non significa, tuttavia, che il driver deve gestire richieste simultanee; il servizio WIA garantisce che venga inviata una sola richiesta al driver alla volta. Tuttavia, il servizio WIA può chiamare il metodo IWiaMiniDrv::d rvInitializeWia più volte prima di chiamare il metodo IWiaMiniDrv::drvUnInitializeWia .

Perché queste informazioni sono utili? Spesso sono presenti risorse che potrebbero essere necessarie quando le applicazioni li usano, ad esempio l'albero degli elementi del driver WIA, le librerie di filtro delle immagini e altri. Poiché queste risorse possono richiedere una grande quantità di memoria, è preferibile scaricarle quando non sono necessarie.

NotaIWiaMiniDrv::d rvInitializeWia e IWiaMiniDrv::d rvUnInitializeWia vengono usati solo per informare i driver delle connessioni applicazione. Il servizio WIA può chiamare altri metodi driver senza prima chiamare IWiaMiniDrv::d rvInitializeWia, il che significa che il servizio WIA non chiama necessariamente IWiaMiniDrv::d rvUnInitializeWia al termine. I metodi chiamati sono metodi informativi che non richiedono elementi WIA, ad esempio IWiaMiniDrv::d rvGetCapabilities e IWiaMiniDrv::d rvGetWiaFormatInfo.

Questa sezione contiene i seguenti argomenti:

Ordine di chiamata per funzioni minidriver

Caricamento e scaricamento di un minidriver WIA

Connessione e disconnessione di un'applicazione WIA

Creazione di report sullo stato del minidriver WIA