ScardTransmit SCARD_E_INVALID_PARAMETER winscard

Résolu
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016 - 27 juil. 2011 à 13:06
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016 - 28 juil. 2011 à 12:02
Bonjour

Je suis en train de développer une application c en utilisant Visual Studio 2008 pour écrire sur une smartcard ISO-7816.

Au niveau de la fonction SCardTransmit le code d'erreur de retour est -2146435068 qui veut dire SCARD _INVALID_PARAMETER.

Pourtant je crois passer en paramètre des types cohérents.
Ci dessous est mon code

BYTE commande[] = {0x00,0xb4,0x03,0x00};
LPSCARD_IO_REQUEST pioRecvPci;
DWORD cbSendLength,num_rec;
BYTE buff_rec[10];

[...]

//Établissement du contexte + connexion carte ... on été déjà effectué avec succès
[...]
cbSendLength=sizeof(commande); CardFlag = SCardTransmit(hCardHandle,SCARD_PCI_T0,commande,cbSendLength,pioRecvPci,buff_rec,&num_rec );

J'ai essayer quelque casting mais cela n'a pas marché aussi.

y aurait il quelqu'un qui puisse m'aider ?
Merci beaucoup !

5 réponses

cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
28 juil. 2011 à 12:02
Bonjour

Dans mon cas il fallait remplacer pioRecvPci par NULL.

Merci pour votre aide ;)
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
27 juil. 2011 à 14:13
salut,

verifie ce que retourne sizeof(commande).

BYTE commande[4] = {0x00,0xb4,0x03,0x00};

devrait retourner 4.

BYTE commande[]

je ne suis pas sur, c'est peut-être 0 et il faudrait utiliser "length".

@++
0
cs_aymen87 Messages postés 109 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 4 février 2016
27 juil. 2011 à 14:36
Salut
sizeof() retourne 4, je n'arrive toujours pas à localiser le problème !
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
27 juil. 2011 à 23:06
re,

The cbSendLength parameter must be set to the size of the T=0 header information (CLA, INS, P1, and P2) plus a byte that contains the length of the data to be transferred (n), plus the size of data to be sent. In this example, this is n+5.

c'est ici.

@++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
28 juil. 2011 à 08:38
re,


A priori, il faut bien envoyer une taille = 4 dans ton cas, par contre, num_rec n'est pas initialisé, de même que pioRecvPci alors que tu reclames le remplissage de le structure je crois.

SCARD_IO_REQUEST pioRecvPc;

et transmettre "&pioRecvPci".

@++
0
Rejoignez-nous