Buon giorno a tutti, devo includere la gestione delle smart card nel mio progetto ma sono completamente ignorante sulla cosa. Ho tutto quello che mi serve: Lettore GemPC410, card di prova, un manuale sulla programmazione delle smart card di ugo chirico e il software per programmarci sopra scritto sempre da ugo chirico. Nel mio progetto avrei bisogno di leggere/scrivere le informazioni sulla card ma non saprei da dove partire. Esempio: ho intercettato l'evento click di un button e volevo farmi ritornare le informazioni della card da visualizzare in una AfxMessageBox....il problema è che ho iniziato a scrivere del codice ma non so effettivamente quando giusto sia. Non c'è nessuno che ha fatto delle cose simili? o per lo meno ha del codice, dei link, qualcosa da potermi indicare per avere un riferimento?Al momento mi sto arrampicando sugli specchi![]()
Vi posto quello che ho provato a scrivere ma premetto che sarà tutto sbagliato e comunque non è completo....
mi sono fermata qui....Aiuto per favore Graziecodice://Mi restituisce l'handle alla sessione aperta SCARDCONTEXT hContext; long nRes; nRes = SCardEstablishContext(SCARD_SCOPE_USER, NULL, NULL, &hContext); if(nRes != SCARD_S_SUCCESS) return; //Apro la connessione con la SmartCard SCARDHANDLE hCard; LPCTSTR lpszReaderName = _T("Ugo's Virtual Smart Card Reader"); DWORD dwSharedMode = SCARD_SHARE_SHARED; DWORD dwPreferredProtocol = SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1; DWORD dwActiveProtocol = SCARD_PROTOCOL_T1; nRes = SCardConnect( hContext, lpszReaderName, dwSharedMode, dwPreferredProtocol, &hCard, &dwActiveProtocol ); if(nRes != SCARD_S_SUCCESS) return; typedef struct APDU { BYTE cla; //classe BYTE ins; //istruzione BYTE p1; //P1 BYTE p2; //P2 BYTE lc; //lunghezza del campo data BYTE data[256]; //Dati BYTE le; //lunghezza del response }APDU; //Lunghezza dei dati da inviare DWORD dwSendLength; //Buffer contenente l'APDU BYTE pbtAPDU[262]; //Lunghezza del campo response DWORD dwRecvLength; //Buffer contenente il campo response BYTE btRecvBuffer[256]; APDU* apdu; apdu = new APDU; apdu->cla = 0x00; apdu->ins = 0xCA; apdu->p1 = 0x00; apdu->p2 = 0x81; apdu->lc = 0x00; apdu->le = 0x00; pbtAPDU[0] = apdu->cla; pbtAPDU[1] = apdu->ins; pbtAPDU[2] = apdu->p1; pbtAPDU[3] = apdu->p2; pbtAPDU[4] = apdu->lc;![]()

Rispondi quotando