Analyse de base pour les scanneurs à plat
Une application WIA énumère l’élément racine et l’élément enfant de niveau supérieur dans l’arborescence des éléments du scanneur pour déterminer les fonctionnalités prises en charge du scanneur. L’application utilise ensuite cet élément enfant comme source d’analyse. Par exemple, les éléments du scanneur à plat sont utilisés pour l’analyse à partir du lit plat, tandis que les éléments du chargeur sont utilisés pour l’analyse à partir du chargeur de documents, et ainsi de suite.
Le comportement de programmation et d’analyse de l’élément à plat dans Windows Vista est identique au système de surcharge utilisé par Windows XP et Windows Me. Ce système de surcharge programme le premier élément enfant de l’arborescence d’éléments en y plaçant tous les indicateurs d’attribut WIA.
Une application effectue normalement les opérations suivantes lorsqu’elle programme le lit plat du scanneur, mais pas nécessairement dans cet ordre :
Énumérez les éléments WIA de niveau supérieur et recherchez les éléments marqués avec l’indicateur d’élément WiaItemTypeProgrammableDataSource et avec la propriété WIA_IPA_ITEM_CATEGORY définie sur WIA_CATEGORY_FLATBED.
Lisez les valeurs valides pour les propriétés WIA_IPA_TYMED et WIA_IPA_FORMAT .
Choisissez un transfert de mémoire ou un type de transfert de fichier en définissant la propriété WIA_IPA_TYMED. Pour plus d’informations sur les types de transferts disponibles, consultez Transferts de données. Pour les transferts basés sur IStream, WIA_IPA_TYMED est défini par défaut sur TYMED_FILE et ne doit pas être modifié.
Choisissez le format final des données en définissant la propriété WIA_IPA_FORMAT.
Choisissez les paramètres d’image, tels que WIA_IPA_DEPTH et WIA_IPA_DATATYPE.
Transférez les données à l’aide de cet élément WIA.
Le pilote effectue normalement les opérations suivantes lorsqu’il utilise le lit plat du scanneur pour analyser :
Appelez IWiaMiniDrv::d rvValidateItemProperties et IWiaMiniDrv::d rvReadItemProperties. Le pilote WIA doit valider tous les paramètres de propriété pendant la phase de définition des propriétés de l’application.
Appelez IWiaMiniDrv::d rvWriteItemProperties. Le contexte d’élément WIA transmis appartient à l’élément scanneur à plat afin que le pilote sache que l’application a l’intention d’utiliser le lit plat du scanneur pour l’analyse.
Appelez IWiaMiniDrv::d rvAcquireItemData. Le contexte d’élément WIA transmis appartient à l’élément de scanneur à plat, de sorte que le pilote peut facilement déterminer que l’application a l’intention d’effectuer une analyse à l’aide de la plaque à plat.
Programmez l’appareil et analysez à partir du plat à l’aide des propriétés d’élément à plat actuelles. Si le pilote WIA n’est pas en mode d’analyse à plat, il doit tenter de basculer vers ce mode pour l’analyse. Il n’existe aucun paramètre spécial pour que l’application bascule pour utiliser le lit plat. L’utilisation de l’élément à plat pour analyser est un contrat entre l’application et le pilote ; ils conviennent que le lit plat doit être utilisé pour le transfert de données.
Le pilote doit utiliser les propriétés WIA de l’élément de scanneur à plat comme paramètres à appliquer à la partie à plat du scanneur avant l’analyse. L’application WIA doit toujours approuver les en-têtes des données retournées par le pilote WIA. Par exemple, si un scanneur détermine qu’il ne peut pas analyser une image d’une largeur spécifiée et, par conséquent, arrondit la valeur à une largeur qu’il peut analyser, le pilote doit mettre à jour les en-têtes d’image avec les informations de largeur modifiées. Cette mise à jour garantit que des informations correctes sont disponibles pour l’application. Le pilote WIA doit tenter de mettre à jour les propriétés WIA avec les informations réelles retournées par l’appareil.
Analyse avancée pour les scanneurs à plat
L’analyse multirégion à partir du lit plat est possible via une configuration manuelle ou automatiquement à l’aide du filtre de segmentation WIA. Notez que le filtre de segmentation n’est pas différent d’une application dans ce qu’elle peut et ne peut pas faire. Les procédures décrites pour le filtre de segmentation peuvent être exécutées directement par l’application pour créer des éléments enfants pour de nouvelles régions d’analyse.