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.
Pour réduire les modifications apportées aux pilotes développés avant Windows Vista, les pilotes n’ont pas besoin d’implémenter de nouvelles interfaces pour prendre en charge le transfert de données IStream . Au lieu de cela, une nouvelle interface a été exposée via l’interface IWiaMiniDrvCallBack. Les pilotes peuvent appeler IWiaMiniDrvCallBack ::QueryInterface pour la nouvelle fonction de rappel IWiaTransfer , qui leur donnera accès aux flux de données et aux notifications d’état. L’interface IWiaTransfer est décrite dans la documentation du Kit de développement logiciel (SDK) Microsoft Windows.
Le code de transfert de données à l’intérieur du pilote est désormais plus simple, car tous les transferts sont gérés de la même façon, sans logique de branche de transfert de fichier ou de mémoire.
Les pilotes qui ne prennent pas en charge le modèle de transfert IStream effectuent généralement les étapes suivantes :
Vérifiez les indicateurs pour déterminer si la demande concerne un chargement ou un téléchargement.
Acquérir l’interface IWiaMiniDrvCallBack .
Recevoir un flux de destination à partir de la fonction de rappel.
Effectuez une boucle de transfert de données :
- Recevoir des données de l’appareil.
- Écrivez des données dans le flux de données.
Toutefois, pour les pilotes qui implémentent le nouveau modèle de transfert IStream, le service WIA n’appelle pas IWiaMiniDrv::drvWriteItemProperties, car l’acquisition de dossiers est prise en charge.
Dans l'acquisition de dossiers de fichiers, une demande de transfert unique est située sur l'élément parent, mais les propriétés réelles des éléments se trouvent sur chacun des sous-éléments transférés. La méthode IWiaMiniDrv ::d rvWriteItemProperties n’est pas appelée pour chaque élément enfant. Cette méthode ne peut donc pas être utilisée pour programmer les paramètres de l’appareil. Pour les pilotes qui prennent en charge les transferts de données IStream, le service WIA appelle IWiaMiniDrv::drvAcquireItemData à la place.
Note Cette modification affecte uniquement les pilotes qui prennent en charge les nouveaux transferts de données. Les anciens pilotes, qui ne prennent pas en charge les transferts de données IStream, ne sont pas affectés ; le service WIA continuera d’appeler la méthode IWiaMiniDrv::drvWriteItemProperties pour eux.
Dans les acquisitions de dossiers où le pilote effectue plusieurs appels à IWiaTransferCallback ::GetNextStream (décrit dans la documentation du Kit de développement logiciel (SDK) Microsoft Windows), le pilote ne peut avoir qu’un seul flux actif à la fois.
Le pilote doit appeler uniquement les méthodes IStream ::Write, IStream ::Seek et IStream ::SetSize (décrites dans la documentation du Kit de développement logiciel (SDK) Windows pendant une opération de téléchargement. Cette restriction facilite l’écriture du filtre. Le pilote ne doit pas s’attendre à ce que le flux de destination implémente d’autres méthodes.
Lorsque la propriété WIA_DPS_PAGE_SIZE est définie sur WIA_PAGE_AUTO (autrement dit, la détection automatique de la taille de page est activée), le pilote doit fournir des informations de dimension précises sur l’image uniquement une fois qu’il a terminé le transfert des données d’image. Pour les transferts basés sur le flux, le pilote doit mettre à jour les dimensions de l’image dans l’en-tête d’image à la fin du transfert. Au début d’une nouvelle session, la valeur de WIA_DPS_PAGE_SIZE propriété doit toujours être définie sur une valeur autre que WIA_PAGE_AUTO.