Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La couche de compatibilité permet à une application Windows Vista d’appeler IWiaTransfer::Download (décrit dans la documentation du Kit de développement logiciel (SDK) Microsoft Windows) sur un pilote hérité. La couche de compatibilité doit implémenter le code de transfert de dossiers ainsi que les conversions de format. La couche de compatibilité implémente du code spécial pour les transferts de flux afin de s’assurer qu’il est toujours possible de transférer plusieurs pages à partir d’un pilote hérité. Une application Windows Vista doit toujours être en mesure de demander plusieurs pages pendant une analyse à partir de l’élément de flux, même avec un transfert TYMED_FILE. Le diagramme suivant illustre un pilote hérité avec une application Windows Vista.
L’objet de rappel ancien au sein du service WIA convertit les messages de transfert anciens et les données en messages de transfert Windows Vista et écrit des données dans le flux donné.
Une application Windows Vista s’attend uniquement à TYMED_FILE et TYMED_MULTIPAGE_FILE afin que la couche de compatibilité soit chargée de s’assurer que les TYMED_CALLBACK et les TYMED_MULTIPAGE_CALLBACK ne sont pas exposés à une application Windows Vista à partir d’un pilote hérité.
La façon la plus simple d’implémenter cette partie de la couche de compatibilité a été de toujours appeler le pilote hérité, avec TYMED_FILE et TYMED_MULTIPAGE_FILE configurés. L’inconvénient de cette opération est que le pilote aurait toujours dû analyser l’image entière, avant que les données puissent être réécrites dans le flux de l’application. Par conséquent, la couche de compatibilité utilise TYMED_CALLBACK lorsqu’une application Windows Vista demande une analyse du format WiaImgFmt_BMP (la propriété WIA_IPA_FORMAT définie sur WiaImgFmt_BMP). Cela permet à la couche de compatibilité d’écrire la bande arrière des données par bande.
Toutefois, un pilote hérité ne prend pas en charge WiaImgFmt_BMP, mais WiaImgFmt_MEMORYBMP pour TYMED_CALLBACK. Par conséquent, l’objet de rappel de conversion doit également créer l’en-tête de fichier BMP et réécrire cet en-tête de fichier dans l’application. Parfois, cela est facile, par exemple lorsque l’en-tête de fichier BMP peut être construit directement à partir de l’en-tête d’informations BMP. Toutefois, il existe des cas où la hauteur de l’en-tête d’informations BMP est définie sur 0. Dans ce cas, la couche de compatibilité WIA doit attendre que toutes les données ont été transférées avant de pouvoir écrire l’en-tête de fichier BMP et mettre à jour l’en-tête d’informations BMP.
La raison pour laquelle les transferts TYMED, autres que simplement TYMED_CALLBACK, sont effectués à partir d’un pilote hérité est que les formats multipage ne sont généralement pris en charge que par TYMED_MULTIPAGE_FILE, et les pilotes prennent généralement en charge plus de formats pour TYMED_FILE que pour TYMED_CALLBACK..
Pendant un transfert TYMED_FILE, la couche de compatibilité attend que le transfert soit terminé avant d’écrire les données dans le flux de l’application. Pour ce faire, mappez le fichier à la mémoire et écrivez toutes les données de la mémoire dans une seule requête d’écriture.
Pendant un transfert TYMED_CALLBACK, la couche de compatibilité réécrit dans le flux de l'application chaque fois qu’elle reçoit un message de transfert IT_MSG_DATA du pilote hérité.
La couche de compatibilité contient également un code spécial pour les transferts FEEDER. Ce code garantit que le module de compatibilité peut transférer plusieurs pages à partir de l’ADF même si le TYMED n’est pas TYMED_MULTIPAGE_FILE. Pour ce faire, la couche de compatibilité appelle plusieurs fois le pilote, en demandant à chaque fois une seule page. Cette solution garantit que chaque pilote hérité sera en mesure de gérer les transferts de plusieurs pages à partir de l’éditeur de flux lorsqu’il est appelé par une application Windows Vista.
Un pilote ancien peut envoyer des messages « hors bande » pendant les transferts (par exemple, pour l'aperçu). Ces messages sont ignorés, car ils ne s’intègrent pas dans le modèle de transfert basé sur le flux.
Pour plus d’informations sur les constantes TYMED, consultez Présentation de TYMED.