Partager via


Annulation du gestionnaire d’erreurs WIA des boîtes de dialogue sans mode

Une grande partie de la complexité du gestionnaire d’erreurs tourne autour de la façon dont l’annulation et le licenciement des boîtes de dialogue sans mode sont gérées.

En particulier, le code du proxy WIA garantit qu’un gestionnaire d’erreurs de niveau inférieur (autrement dit un gestionnaire autre que le gestionnaire d’erreurs de cette application) a la possibilité de communiquer une demande d’annulation à partir d’un dialogue sans mode au pilote ; Cela garantit qu’un gestionnaire de niveau inférieur a la possibilité d’ignorer sa boîte de dialogue sans mode.

Pour permettre à un gestionnaire d’erreurs d’annuler une opération de transfert de données à partir d’une boîte de dialogue sans mode, un pilote doit continuer à envoyer des messages WIA_TRANSFER_MSG_DEVICE_STATUS avec le même code hrErrorStatus , en mettant éventuellement à jour le paramètre lPercentComplete pour permettre à une interface utilisateur de gestionnaire d’erreurs d’afficher la progression. Par exemple, si un pilote peut donner une estimation de la durée de « réchauffement » nécessaire, il peut envoyer un certain nombre de messages d’appareil avec hrErrorStatus défini sur WIA_STATUS_WARMING_UP. Cela permet au gestionnaire d’erreurs d’afficher une boîte de dialogue de progression et de donner à l’utilisateur la possibilité d’annuler le transfert à partir de cette boîte de dialogue. Le paramètre lPercentComplete passé dans IWiaErrorHandler::ReportStatus est exactement le même paramètre lPercentComplete que le pilote définit dans la méthode IWiaTransferCallback::WiaTransferParams . Pour obtenir un exemple de cela, consultez le pilote monstre WIA étendu sur le CD WDK.

Pour permettre à un gestionnaire d’erreurs d’ignorer une boîte de dialogue sans mode, Microsoft a introduit l’appareil status code WIA_STATUS_CLEAR. Ce message est envoyé par le proxy WIA au gestionnaire d’erreurs qui affiche actuellement une interface utilisateur sans mode lorsque le proxy WIA reçoit un message d’appareil différent de celui qui s’affiche actuellement. Le proxy envoie également le message WIA_STATUS_CLEAR lorsque :

Le pilote envoie le message WIA_TRANSFER_MESSAGE_STATUS,

lors des appels à la méthode IWiaTransferCallback::GetNextStream

à la fin du flux/transfert (s’il existe actuellement un gestionnaire d’erreurs affichant une interface utilisateur sans mode).

Les pilotes ne doivent pas envoyer le message WIA_STATUS_CLEAR eux-mêmes.

L’interface IWiaTransferCallback est décrite dans la documentation Microsoft Windows SDK.