Ajouter la prise en charge du chargeur de documents
Important
Cet article contient des informations qui s’appliquent aux systèmes d’exploitation Windows obsolètes.
Un chargeur de documents est une unité attachée ou intégrée à un scanneur qui alimente automatiquement les documents papier en position de numérisation. Pour un scanneur avec un chargeur de documents, la fonctionnalité est exposée et contrôlée par l’ajout des propriétés contenues dans la liste suivante. Pour Windows Me et Windows XP, les propriétés suivantes se trouvent sur l’élément racine :
Pour Windows Me et Windows XP, les propriétés facultatives suivantes du chargeur de documents se trouvent sur l’élément enfant :
Si un appareil a un lit plat, un chargeur de documents et un duplexeur, le pilote signale la propriété WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES en tant que FEED | FLAT | DUP
. Assurez-vous que les valeurs valides pour WIA_DPS_DOCUMENT_HANDLING_SELECT sont correctement définies.
Par exemple, supposons qu’une application a l’intention d’effectuer une analyse duplex de trois pages à partir du chargeur de documents. Pour ce faire, l’application définit la propriété WIA_DPS_DOCUMENT_HANDLING_SELECT sur (FEEDER | DUPLEX) et définit la propriété WIA_DPS_PAGES sur 3. Si l’application a l’intention d’analyser d’abord l’avant de la page, elle doit définir la propriété WIA_DPS_DOCUMENT_HANDLING_SELECT sur FEEDER | DUPLEX | FRONT_FIRST
. Une fois cette opération effectuée, l’application doit accéder à l’élément enfant à partir duquel elle doit demander un transfert de données. Le minidriver signale l’avant de la première page du chargeur en tant que page 1, l’arrière de cette page comme page 2 et l’avant de la deuxième page dans le chargeur en tant que page trois.
Il est important de se rappeler que si l’appareil dispose d’un chargeur de documents, il doit prendre en charge les propriétés du chargeur de documents.
Acquisition de données à partir d’un chargeur de documents
Quelques modifications doivent être apportées à l’implémentation de la méthode IWiaMiniDrv ::d rvAcquireItemData lorsque le scanneur acquiert des images à partir d’un chargeur de documents.
Une application lit la propriété WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES pour déterminer si le scanneur prend en charge la numérisation à l’aide du chargeur de documents.
Une application lit la propriété WIA_DPS_DOCUMENT_HANDLING_SELECT pour déterminer si le scanneur est configuré pour la numérisation à l’aide du chargeur de documents.
Une application détermine s’il existe du papier dans le chargeur de documents en lisant WIA_DPS_DOCUMENT_HANDLING_STATUS. S’il n’y a pas de papier dans le chargeur, définissez le WIA_DPS_DOCUMENT_HANDLING_STATUS sur le code de status approprié et retournez WIA_ERROR_PAPER_EMPTY à partir de IWiaMiniDrv ::d rvAcquireItemData immédiatement après l’acquisition.
Vérifiez la propriété WIA_DPS_PAGES pour déterminer le comportement d’analyse. Si cette propriété a la valeur zéro, analysez toutes les pages jusqu’à ce que le chargeur soit vide. S’il est positif, analysez uniquement le nombre de pages indiqué par la valeur contenue dans la propriété WIA_DPS_PAGES.
Analysez le nombre de pages demandé en contrôlant une boucle, en analysant continuellement et en envoyant des données (une page à la fois) à l’application WIA en appelant la méthode IWiaMiniDrvCallBack ::MiniDrvCallback . L’exemple de code suivant montre comment cela peut fonctionner :
for(int x=1; x=Pagecount; x++) { \\ Tell scanner to scan an image. \\ Receive image data from scanner. \\ Send the just-scanned image to the registered application. }
Si WIA_IPA_TYMED est défini sur TYMED_CALLBACK ou TYMED_MULTIPAGE_CALLBACK, un message supplémentaire (IT_MSG_NEW_PAGE) doit être envoyé après l’analyse d’une page et avant l’analyse de la page suivante. Pour ce faire, appelez la fonction d’utilitaire de service WIA wiasSendEndOfPage .
Le nombre de pages retournées par un pilote de chargeur de documents dépend du paramètre de la propriété WIA_DPS_PAGES.
Si WIA_DPS_PAGES est égal à zéro
Si le scanneur ne parvient pas à analyser la première page, retournez immédiatement un code d’erreur. Cela inclut les bourrages de papier et lorsque le scanneur est à court de papier.
Si le scanneur analyse correctement la première page et est en mesure de poursuivre l’analyse, mais qu’il est à court de papier, retournez le code de réussite WIA_STATUS_END_OF_MEDIA. Cela indique à l’application que le transfert a réussi, mais que le scanneur est à court de papier. Certaines applications répondent aux WIA_ERROR_PAPER_EMPTY de la même façon qu’elles le feraient pour WIA_STATUS_END_OF_MEDIA.
Si le scanneur analyse correctement la première page et est en mesure de poursuivre l’analyse, mais qu’il rencontre une erreur qui n’entraîne pas de perte de données, retournez WIA_STATUS_END_OF_MEDIA. Cela permet à l’application de récupérer et d’enregistrer toutes les pages analysées avant que l’erreur ne se produise. Toutes les analyses suivantes doivent retourner un code d’erreur immédiatement jusqu’à ce que le scanneur ait correctement récupéré de la défaillance.
Si le scanneur analyse correctement la première page et est en mesure de poursuivre l’analyse, mais qu’il rencontre une erreur qui entraîne une perte de données, retournez immédiatement un code d’erreur.
Si WIA_DPS_PAGES est positif
Toutes les règles pour lesquelles WIA_DPS_PAGES est égal à zéro s’appliquent.
Si le scanneur est à court de papier avant l’analyse du nombre de pages demandé, retournez WIA_STATUS_END_OF_MEDIA. Cela permet à l’application de fermer la session d’analyse, en conservant ainsi le nombre de pages qu’elle a déjà analysées avec succès. Certaines applications répondent à WIA_ERROR_PAPER_EMPTY de la même façon qu’à WIA_STATUS_END_OF_MEDIA.