Création de composants Device-Specific pour les API d’acquisition d’images
Les API d’acquisition d’images, telles que TWAIN, nécessitent généralement des composants spécifiques à l’appareil, tels que des sources de données TWAIN. Ces composants spécifiques à l’appareil doivent utiliser l’interface COM IStillImage et l’interfaceCOM IStiDevice pour communiquer avec les pilotes de périphérique d’image fixe en mode utilisateur et le moniteur d’événements.
Les API d’acquisition d’images peuvent appeler IStillImage::GetDeviceValue et IStillImage::SetDeviceValue pour lire et écrire des entrées de Registre pour les appareils image fixe. Par exemple, le nom de la source de données TWAIN de chaque appareil d’image fixe est stocké dans le Registre.
Étant donné que l’API TWAIN ne permet pas à une application de spécifier l’appareil actif lors de l’appel d’une source de données, la source de données appelle généralement IStillImage::GetDeviceList pour obtenir la liste de tous les appareils d’image fixe, puis recherche la liste pour trouver l’appareil approprié, généralement en fonction des noms du fabricant et du modèle. Les noms de texte du fabricant et du modèle sont obtenus à partir du fichier d’informations d’installation (INF). Étant donné que TWAIN a une limite de 32 caractères pour les noms de sources de données et que WIA ajoute « WIA- » aux chaînes pour construire les noms compatibles, le texte du fichier INF ne doit pas comporter plus de 28 caractères. Sinon, les applications compatibles TWAIN qui effectuent une comparaison sur l’ensemble de la chaîne, et pas seulement sur les 32 premiers caractères, risquent de ne pas pouvoir trouver automatiquement l’appareil à l’origine du lancement de l’application.
Pour accéder à un appareil, le logiciel d’acquisition d’images appelle IStillImage::CreateDevice pour créer un instance de l’objet COM qui définit l’interface IStiDevice. L’interface IStiDevice fournit plusieurs méthodes pour effectuer des opérations d’E/S d’appareil. Lors de la création de l’objet instance, le logiciel d’acquisition d’images doit spécifier les modes de transfert « données ».
Le logiciel d’acquisition d’images peut appeler IStiDevice::Subscribe pour demander au moniteur d’événements de fournir une notification des événements d’appareil image fixe. Une fois la notification reçue, IStiDevice::GetLastNotificationData peut être appelé pour déterminer le type d’événement. IStiDevice::UnSubscribe doit être appelé lorsque les notifications ne sont plus nécessaires.
Lorsque le logiciel d’acquisition d’images a terminé d’utiliser l’interface IStiDevice , il doit appeler IStiDevice::Release.