Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il blocco per la parte STI di un driver WIA richiede particolare attenzione. Anche se un'applicazione può accedere direttamente alle interfacce STI pubblicate, tale accesso diretto al dispositivo può essere usato in modo improprio. Le tecniche di blocco implementate in modo non corretto possono lasciare aperto un dispositivo a un attacco Denial of Service (DoS).
Per le applicazioni STI
L'elenco seguente contiene precauzioni e linee guida da seguire quando si usano applicazioni STI:
Non bloccare i blocchi per periodi di tempo prolungati.
Se non è necessario l'accesso diretto al dispositivo, potrebbe essere possibile ottenere le stesse informazioni usando metodi di interfaccia WIA. Questo è preferibile perché il servizio WIA controlla quindi il blocco per te.
I driver TWAIN che usano STI usano il metodo IStiUSD::LockDevice per controllare l'accesso al dispositivo. Quando un driver TWAIN utilizza STI, il driver TWAIN è responsabile della gestione dei tempi di blocco.
È possibile crearlo in modo che implementi solo i metodi di interfaccia IStiUSD . Lo svantaggio di questo approccio è che un'applicazione può chiamare direttamente IStiUSD::LockDevice , bloccando così il dispositivo per l'uso esclusivo dall'applicazione. Windows Hardware Quality Lab non certifica i driver che usano questa tecnica; tali driver possono essere installati solo come driver non firmati.
Per i driver WIA
L'elenco seguente contiene precauzioni e linee guida da seguire quando si lavora con i driver WIA:
Monitorare l'attività del dispositivo durante lunghi periodi di blocco. Se non è presente alcuna attività, il driver deve sbloccare il dispositivo e consentire ad altri client di connettersi. Il driver non deve sbloccare il dispositivo, ad esempio se esegue la scansione di un'immagine molto grande o se richiede un tempo insolitamente lungo per acquisire un'immagine. In questo modo viene interrotta la sessione corrente. A seconda del dispositivo e del bus su cui opera, un'immagine molto grande può essere ovunque da 10 megabyte a più di un gigabyte e un lungo periodo di tempo può essere ovunque da 500 millisecondi a più di un minuto. È consigliabile eseguire il benchmark del dispositivo e del bus su cui opera in modo da conoscere i valori specifici per il dispositivo.
Le applicazioni che usano WIA non accedono ai metodi di blocco del driver, IWiaMiniDrv::d rvLockWiaDevice e IWiaMiniDrv::d rvUnLockWiaDevice. Solo il servizio WIA chiama questi metodi di blocco, il servizio WIA propaga le chiamate di blocco a IStiUSD usando il metodo IStiUSD::LockDevice .
Se un'applicazione blocca esclusivamente un dispositivo WIA usando il metodo IStiUSD::LockDevice , il servizio WIA non può accedere al dispositivo finché tale applicazione non chiama il metodo IStiUSD::UnLockDevice . Se il servizio WIA non può bloccare il dispositivo, il dispositivo non sarà disponibile per applicazioni o driver che si basano sul servizio WIA.
Il metodo IWiaMiniDrv::d rvLockWiaDevice deve sempre chiamare il metodo IStiDevice::LockDevice e il metodo IWiaMiniDrv::d rvUnLockWiaDevice deve sempre chiamare il metodo IStiDevice::UnLockDevice . Ciò garantisce che il servizio WIA esegua una corretta gestione dei blocchi per il dispositivo. L'interfaccia IStiDevice viene passata al driver nelle chiamate al metodo IWiaMiniDrv::d rvInitializeWia . Questa interfaccia deve essere memorizzata nella cache e usata per chiamare il metodo IStiDevice::LockDevice . Questo metodo chiama il metodo IStiUSD::LockDevice del driver.
Se viene usato un valore BOOL per controllare il blocco, proteggere questo valore da più thread. Quando due driver tentano di bloccare un singolo dispositivo contemporaneamente, solo un driver può avere esito positivo.