Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3006 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Problème avec la fonction SCardTransmit

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec la fonction SCardTransmit

n°1922698
tonysenshi​13
Posté le 09-09-2009 à 16:48:12  profilanswer
 

Bonjour,  
 
je souhaite développer un logiciel Windows qui permettra de communiquer avec les cartes SIM, via des commandes APDU.
Je voudrais le faire en Java, mais en appelant les fonctions de winscard.dll via la Java Native Interface (j'ai fait le choix de rester en Java malgré cette difficulté).
 
J'ai implémenté les fonctions SCardEstablishContext, SCardConnectW, SCardStatus, SCardReleaseContext, SCardDisconnect via cette technique, et elles fonctionnent toutes.
Je détaille ma manière de procéder pour pouvoir vous dire à quelle étape j'ai un problème :
 
But : Créer une dll JNI que Java pourra appeler, qui va elle-même communiquer avec la dll native Winscard.dll.
 
1) Je crée un fichier .java dans lequel je déclare les méthodes de la dll. Je compile. (Dans cette classe il y a aussi System.loadLibrary("MaDllJni" ) )
 
2) Je génère le header en utilisant une instruction jni à partir du fichier .class créé en 1).
 
3) Je crée un .c qui implémente les méthodes que l'on veut avec des macros JNI (JNI EXPORT etc...). Compilation, on a un fichier.o
 
4) On crée un fichier .def avec la commande dlltool -k MaDllJni.o -z MaDllJni.def . J'enlève les alias du fichier (c'est écrit en suivant ce tutorial : http://johannes-fetz.blogspot.com/ [...] jni.html).
 
5) Je crée la dll avec gcc -shared -o MaDllJni.dll  -I"C:\Program Files\Java\jdk1.6.0_16\include" -I"C:\Program Files\Java\jdk1.6.0_16\include\win32" MaDllJni.def MaDllJni.o
 
6) Ensuite je crée un fichier .java contenant une méthode main, et je lance tout sous Eclipse.
 
 
Cela marche avec quasiment toutes les méthodes, sauf une, et la plus importante... : SCardtransmit, qui permet d'envoyer les commandes APDU à la carte...
Le problème se situe au niveau du second argument (du type SCARD_IO_REQUEST). L'aide Windows conseille de mettre SCARD_PCI_T0. Cependant un problème se produit lors de l'étape 5 avec un "undefined reference to 'SCARD_PCI_T0'" alors que tout est censé être déclaré dans winscard.h ...  
Plus précisemment le problème semble être lié à g_rgSCardT0Pci (élément figurant dans la winscard.dll après l'avoir parcourue...) et qui participe à la définition de SCARD_PCI_T0.
 
Ca fait plusieurs jours que je cherche une solution, mais je rame complètement.
 
Pour info je développe sous windows avec les compilateurs de MinGw dernière version.
Désolé d'avance si mes propos sont confus, mais je suis loin d'être un pro en programmation..
 
Avez-vous des idées ?
 
Merci..

mood
Publicité
Posté le 09-09-2009 à 16:48:12  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Problème avec la fonction SCardTransmit

 

Sujets relatifs
Opacité d'une image en fonction de l'avancement d'un preloadProbleme de poistionement site et apparence
[Résolu] problème de CSS sur un menuProbleme de requete SELECT sur msSQL
Problème JqueryProblème livre d'or php5
Problème nl2br ? [résolu][XML] probleme de compilation dans libxml2
Probleme insertion données Fichier ExcelProblème import données dans table liée SQL sous Access
Plus de sujets relatifs à : Problème avec la fonction SCardTransmit


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR