Smardcard Programmier Problem.
-
Hallo @ all,
habe ein kleines Problemm bei der Programmierung einem Smardcard lese Gerät,
das problem liegt beim Senden der datena uf die Karte.Das Modell = ST-1044U
der Quellcode
#include "stdafx.h" #include "winscard.h" #include "winsmcrd.h" #include "SCardErr.h" #include <stdio.h> #include <iostream> #include <string.h> UINT i; TCHAR s[1000], ss[80]; LONG lResult, xResult; SCARDCONTEXT hCtx; CHAR mszReaders[1024]; DWORD cchReaders; SCARDHANDLE hCard; DWORD dwActiveProtocol; SCARD_IO_REQUEST ioReqS, ioReqR; const unsigned char *pSndBuf; unsigned char *pRcvBuf, cSndBuf[13], cRcvBuf[80]; DWORD dwRcvLen, dwSndLen; void Send(){ //////////////////////////////////////////////////////////////////////////////// // Send data to the smartcard cSndBuf [0] = 0x00; cSndBuf [1] = 0xA4; cSndBuf [2] = 0x04; cSndBuf [3] = 0x00; cSndBuf [4] = 0x08; cSndBuf [5] = 0xD2; cSndBuf [6] = 0x76; cSndBuf [7] = 0x00; cSndBuf [8] = 0x00; cSndBuf [9] = 0x05; cSndBuf[10] = 0x10; cSndBuf[11] = 0x00; cSndBuf[12] = 0x06; pSndBuf = &cSndBuf[0]; pRcvBuf = &cRcvBuf[0]; dwRcvLen = sizeof(cRcvBuf); dwSndLen = sizeof(cSndBuf); ioReqS.dwProtocol = SCARD_PROTOCOL_T0; ioReqS.cbPciLength = sizeof(SCARD_IO_REQUEST); ioReqR.dwProtocol = SCARD_PROTOCOL_T0; ioReqR.cbPciLength = sizeof(SCARD_IO_REQUEST); lResult = SCardTransmit(hCard, &ioReqS, pSndBuf, dwSndLen, &ioReqR, pRcvBuf, &dwRcvLen); if (SCARD_S_SUCCESS != lResult) { printf("SCardTransmit-> ERROR!!!\n"); printf ("hCard=%li r=%x c=%i \n", hCard, lResult, dwRcvLen); lResult = SCardDisconnect (hCard, SCARD_RESET_CARD); lResult = SCardReleaseContext (hCtx); } else { printf("SCardTransmit -> OK\n"); s[0] ='\0'; for (i=0;i<dwRcvLen;i++) { sprintf (ss, "%02x ", cRcvBuf[i]); strcat (s, ss); } printf ("Response: %s\n", s); } } int main() { Establish(); ListReader(); Connect(); ATR(); Send(); Disconnect(); Realease(); system("PAUSE"); return 0; }
Vielleicht könnt ihr mir ja sagen wie ich das hinbekomme das er Werte auf die Karte schriebt.
Mfg