Initialisation du minidriver WIA
La première étape de l’implémentation de l’interface IWiaMiniDrv consiste à initialiser le minidriver et à créer une arborescence hiérarchique d’éléments de pilote. Pour ce faire, le service WIA appelle la méthode IWiaMiniDrv::d rvInitializeWia chaque fois qu’une application cliente a l’intention d’utiliser l’appareil. Si plusieurs applications utilisent simultanément l’appareil, le service WIA appelle cette méthode pour chaque application. Dans cette méthode, le minidriver effectue généralement les opérations suivantes :
Initialise les paramètres transmis à partir du service WIA.
Enregistre l’interface d’appareil STI pointée vers pStiDevice. Cela permet d’utiliser les méthodes IStiDevice::LockDevice et IStiDevice::UnLockDevice pour verrouiller ou déverrouiller l’appareil WIA.
Met en cache bstrDeviceID et bstrRootFullItemName dans les variables membres afin qu’ils puissent être utilisés par d’autres méthodes.
Ouvre un handle sur l’appareil. (Cette étape est recommandée pour les ports non partagés tels que USB, SCSI et 1394.)
Génère l’arborescence des éléments, comme décrit dans Création de l’arborescence d’éléments du pilote WIA.
La méthode IWiaMiniDrv::d rvInitializeWia peut également être utilisée pour créer et initialiser des structures et des tableaux dynamiques utilisés par le pilote. Par exemple, un tableau de commandes et d’événements pris en charge par le pilote peut être créé pour une utilisation ultérieure par la méthode IWiaMiniDrv::d rvGetCapabilities .
Note La méthode IWiaMiniDrv::d rvGetCapabilities peut être appelée avant l’appel de IWiaMiniDrv::d rvInitializeWia . Cela peut se produire lorsque le service WIA doit interroger les informations d’événement avant qu’une application n’existe pour utiliser l’appareil. La méthode IWiaMiniDrv::d rvInitializeWia est appelée uniquement lorsqu’une application signale son intention d’utiliser l’appareil.
Suivi des connexions d’application
Comme indiqué précédemment, lorsqu’une application a l’intention de communiquer avec un appareil WIA, le service WIA appelle la méthode IWiaMiniDrv::d rvInitializeWia du pilote approprié. Lorsque l’application a terminé l’appareil et libère toutes les références WIA à celui-ci, le service WIA appelle la méthode IWiaMiniDrv::d rvUnInitializeWia du pilote approprié. Notez que WIA prend en charge plusieurs connexions d’applications simultanées. Cela signifie que deux applications ou plus peuvent demander une interface WIA associée au même appareil. Cela ne signifie pas, cependant, que le pilote doit gérer les requêtes simultanées ; le service WIA garantit qu’une seule requête est envoyée au pilote à la fois. Toutefois, le service WIA peut appeler la méthode IWiaMiniDrv::d rvInitializeWia plusieurs fois avant d’appeler la méthode IWiaMiniDrv::d rvUnInitializeWia .
Pourquoi ces informations sont-elles utiles ? Il existe souvent des ressources dont les pilotes peuvent avoir besoin lorsque les applications les utilisent, telles que l’arborescence des éléments du pilote WIA, les bibliothèques de filtrage d’images, etc. Étant donné que ces ressources peuvent prendre une grande quantité de mémoire, il est préférable de les décharger lorsqu’elles ne sont pas nécessaires.
Note Les méthodes IWiaMiniDrv::d rvInitializeWia et IWiaMiniDrv::d rvUnInitializeWia sont utilisées uniquement pour informer les pilotes des connexions d’application. Le service WIA peut appeler d’autres méthodes de pilote sans appeler d’abord IWiaMiniDrv::d rvInitializeWia, ce qui signifie que le service WIA n’appelle pas nécessairement IWiaMiniDrv::d rvUnInitializeWia lorsqu’il est terminé. Les méthodes appelées sont des méthodes d’information qui ne nécessitent pas d’éléments WIA, telles que IWiaMiniDrv::d rvGetCapabilities et IWiaMiniDrv::d rvGetWiaFormatInfo.
Cette section contient les rubriques suivantes :
Ordre d’appel pour les fonctions mini-driver
Chargement et déchargement d’un minidriver WIA