ScardTransmit SCARD_E_INVALID_PARAMETER winscard [Résolu]

Messages postés
109
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
4 février 2016
- - Dernière réponse : 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 !
Afficher la suite 
A voir également:

5 réponses

Meilleure réponse
Messages postés
109
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
4 février 2016
3
Merci
Bonjour

Dans mon cas il fallait remplacer pioRecvPci par NULL.

Merci pour votre aide ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_aymen87
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
0
Merci
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".

@++
Commenter la réponse de cs_patatalo
Messages postés
109
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
4 février 2016
0
Merci
Salut
sizeof() retourne 4, je n'arrive toujours pas à localiser le problème !
Commenter la réponse de cs_aymen87
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
0
Merci
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.

@++
Commenter la réponse de cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
0
Merci
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".

@++
Commenter la réponse de cs_patatalo