Question

J'écris un service Windows qui doit gérer les lecteurs de cartes à puce.

Très souvent, lorsque je tente de se connecter à une carte à puce insérée, SCardConnect() échoue avec SCARD_E_SHARING_VIOLATION qui essentiellement des moyens:

  

La carte à puce ne peut pas être accessible en raison d'autres connexions en cours.

est juste.

Je suppose qu'au moins un autre essaie de processus pour accéder à la puce en même temps. Mais est-il un moyen de déterminer quels processus (s) il est?

Était-ce utile?

La solution

Sur votre place, j'essayer le Process Explorer pour regarder les descripteurs de fichiers ouverts par votre application si vous accédez aux lecteurs de cartes à puce. Pour ce faire, vous devez sélectionner votre processus et appuyez sur Ctrl-H (menu "Affichage" / "Low Voir le volet" / "Handes"). Une fois que vous connaissez le nom du périphérique des lecteurs de cartes à puce, vous serez en mesure de savoir d'autres processus qui utilisent l'appareil si vous recevez une erreur de SCARD_E_SHARING_VIOLATION. Vous devez simplement utiliser Ctrl-F (menu "Rechercher" / "Trouver Handle ou DLL ...") pour trouver la poignée de fichiers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top