Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Citac licnih karti celikapi.h

[es] :: C/C++ programiranje :: Citac licnih karti celikapi.h

Strane: 1 2 3 4

[ Pregleda: 20873 | Odgovora: 78 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

miki78ns
Austria

Član broj: 161690
Poruke: 141
*.ptt.rs.

Sajt: www.bestmysecurity.com/an..


Profil

icon Citac licnih karti celikapi.h12.08.2009. u 15:04 - pre 1956 dana i 2h

Pokusavam napraviti aplikaciju koja cita podatke sa novih licnih karti da bih kasnije moglo da se implementira u neke druge programe. Sva upustva, header fajl , dll se nalaze na
http://www.mup.sr.gov.yu/domino/dokumenta.nsf/aplikacijalkl
Kompajlirao sam nejavlja gresku ali kad pokrenem program javlja mi neki error kao na slici u dodatku.
Jos par pitanja:
1. prototip funkcije EID_API int WINAPI EidStartup(int nApiVersion);
Argument nApiVersion tipa int predstavlja verziju apija cije se funkcije pozivaju, da li to znaci da je nApiVersion=1.01

2. prototip funkcije: EID_API int WINAPI EidBeginRead(LPCSTR szReader);
Argument szReader tipa LPCSTR koji treba da bude ime smart kard citaca koji se koristi.
Ja imam MSI StarReader 74-in-1 sta se tu smatra pod imenom citaca?


#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <cmath>
#include <cstdlib>
#include "CelikApi.h"

#if defined DLL_EXPORT
#define DECLDIR __declspec(dllexport)
#else
#define DECLDIR __declspec(dllimport)
#endif

extern "C"
{
DECLDIR int EidStartup( int );
//DECLDIR void Function( void );
}

using namespace std;
typedef int (*EidStartupFunc)(int);
typedef int (*EidBeginReadFunc)(LPCSTR);
typedef int (*EidCleanupFunc)();
typedef int (*EidEndReadFunc)();
typedef PEID_DOCUMENT_DATA (*EidReadDocumentDataFunc)(PEID_DOCUMENT_DATA);
typedef PEID_FIXED_PERSONAL_DATA (*EidReadFixedPersonalDataFunc)(PEID_FIXED_PERSONAL_DATA);
typedef PEID_VARIABLE_PERSONAL_DATA (*EidReadVariablePersonalDataFunc)(PEID_VARIABLE_PERSONAL_DATA);
typedef PEID_PORTRAIT (*EidReadPortraitFunc)(PEID_PORTRAIT);
HINSTANCE hinetDLL;


int main()
{
EidStartupFunc _EidStartup;
EidBeginReadFunc _EidBeginRead;
EidCleanupFunc _EidCleanup;
EidEndReadFunc _EidEndRead;
EidReadDocumentDataFunc _EidReadDocumentData;
EidReadFixedPersonalDataFunc _EidReadFixedPersonalData;
EidReadVariablePersonalDataFunc _EidReadVariablePersonalData;
EidReadPortraitFunc _EidReadPortrait;

hinetDLL = LoadLibrary(TEXT("CelikApi.dll"));
_EidStartup = (EidStartupFunc)GetProcAddress(hinetDLL,"EidStartup()");
_EidBeginRead = (EidBeginReadFunc)GetProcAddress(hinetDLL,"EidBeginRead()");
_EidReadDocumentData = (EidReadDocumentDataFunc)GetProcAddress(hinetDLL,"EidReadDocumentData()");
_EidReadFixedPersonalData = (EidReadFixedPersonalDataFunc)GetProcAddress(hinetDLL,"EidReadFixedPersonalData()");
_EidReadVariablePersonalData = (EidReadVariablePersonalDataFunc)GetProcAddress(hinetDLL,"EidReadVariablePersonalData()");
_EidReadPortrait = (EidReadPortraitFunc)GetProcAddress(hinetDLL,"EidReadPortrait()");
_EidCleanup = (EidCleanupFunc)GetProcAddress(hinetDLL,"EidCleanup()");
_EidEndRead = (EidEndReadFunc)GetProcAddress(hinetDLL,"EidEndRead()");

cout << _EidStartup << endl;
cout << _EidBeginRead << endl;
cout << _EidEndRead << endl;
cout << _EidCleanup << endl;
system("PAUSE");
return 0;
FreeLibrary(hinetDLL);
}


[Ovu poruku je menjao miki78ns dana 13.08.2009. u 21:36 GMT+1]

[Ovu poruku je menjao miki78ns dana 13.08.2009. u 22:17 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1153
*.netset.co.yu.



Profil

icon Re: Citac licnih karti celikapi.h12.08.2009. u 15:46 - pre 1956 dana i 1h
Nisam radio sa pozivanjem funkcija preko LoadLibrary, pa nagađam, možda oni typedef-ovi moraju da stoje unutar extern "C" bloka. Slika koju si dao nije preterano informativna. Da li aplikacija puca na isti način i ako statički linkuješ dll?

1. Broj 1 je trenutno jedina prihvatljiva vrednost. Nema nikakvo značenje preko toga što je to broj 1. Možeš eventualno da ga posmatraš ne kao verziju API-ja, nego kao verziju interfejsa API-ja. Ako se recimo neka struktura bude menjala onda bi promenom ovog broja koristio te proširene strukture.

2. String se koristi ako imaš više čitača instaliranih, jer onda moraš da biraš čitač. Ako imaš samo jedan čitač onda stavi prazan string, koji znači "gledaj prvi sa spiska". Prihvatljivi su oni stringovi čija se imena ključeva (foldera) u registru nalaze na mestu HKLM\SOFTWARE\Microsoft\Cryptography\Calais\Readers. Programerski se do ovih stringova dolazi funkcijama Card Managera (SCardEstablishContext, SCardListReaders, SCardFreeMemory, SCardReleaseContext).
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


Profil

icon Re: Citac licnih karti celikapi.h13.08.2009. u 16:56 - pre 1955 dana
Laptopovi

Tvoj kod je neispravan. Nepravilno si deklarisao tip funkcije i pogresno koristis GetProcAddress. GetProcAddress trazi SAMO ime funkcije bez zagrada.

Ispravna deklaracije bilo koje funkcije trazi i calling-convention koju ti nisi naveo:

Ovo :

Code:

typedef int (* EidStartupFunc)(int);
typedef int (*EidBeginReadFunc)(LPCSTR);
typedef int (*EidCleanupFunc)();
typedef int (*EidEndReadFunc)();
////..... itd


Treba da izgleda ovako:

Code:

typedef int (WINAPI * EidStartupFunc)(int);
typedef int (WINAPI * EidBeginReadFunc)(LPCSTR);
typedef int (WINAPI * EidCleanupFunc)();
typedef int (WINAPI * EidEndReadFunc)();
///.... itd



Dalje umesto ovog:

Code:

_EidBeginRead = (EidBeginReadFunc)GetProcAddress(hinetDLL,"EidBeginRead()");


ide ovo:

Code:

_EidBeginRead = (EidBeginReadFunc)GetProcAddress(hinetDLL,"EidBeginRead");


A kada vec koristis c++ bolje je ovo:

Code:

_EidBeginRead = reinterpret_cast<EidBeginReadFunc>( GetProcAddress(hinetDLL,"EidBeginRead"));


Tko leti vrijedi
 
Odgovor na temu

miki78ns
Austria

Član broj: 161690
Poruke: 141
*.ptt.rs.

Sajt: www.bestmysecurity.com/an..


Profil

icon Re: Citac licnih karti celikapi.h13.08.2009. u 20:36 - pre 1954 dana i 20h
Hvala sad radi posle ovih izmena od kiklop74. Rezultat ovog

cout << _EidStartup << endl;
cout << _EidBeginRead << endl;
cout << _EidEndRead << endl;
cout << _EidCleanup << endl;

programa je:

0
1
1
1
Press any key to continue . . .

0 znaci da je EidStartup funkcija uspesno izvrsena, cudi me da su ostale tri vrednosti 1 jer u celikapi.h su sve negativne vrednosti za ostale tipove gresaka:
const int EID_OK = 0;
const int EID_E_GENERAL_ERROR = -1;
const int EID_E_INVALID_PARAMETER = -2;
const int EID_E_VERSION_NOT_SUPPORTED = -3;
const int EID_E_NOT_INITIALIZED = -4;
const int EID_E_UNABLE_TO_EXECUTE = -5;
const int EID_E_READER_ERROR = -6;
const int EID_E_CARD_MISSING = -7;
const int EID_E_CARD_UNKNOWN = -8;
const int EID_E_CARD_MISMATCH = -9;
const int EID_E_UNABLE_TO_OPEN_SESSION = -10;
const int EID_E_DATA_MISSING = -11;
const int EID_E_CARD_SECFORMAT_CHECK_ERROR = -12;
const int EID_E_SECFORMAT_CHECK_CERT_ERROR = -13;

pa sam i ja ocekivao da ce biti -1. Cudno je da daje isti rezultat i kad izvadim licnu iz citaca. Inace, program Celik sa sajta MUP-a radi sto znaci da je moj msi citac ispravan.

 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1153
*.netset.co.yu.



Profil

icon Re: Citac licnih karti celikapi.h14.08.2009. u 09:42 - pre 1954 dana i 7h
Meni je s druge strane čudno i 0 i 1 jer se funkcije ne pozivaju tako. Fale ti zagrade, a fale ti i parametri u pozivima. Čini se da do sada nikad nisi radio sa GetProcAddress i pointerima na funkcije. I ja to ne upotrebljavam, ali tu negde moraju da budu parametri, što znači da moraju da postoje i neke zagrade.

To što za prvu funkciju vraća nulu verovato znači da GetProcAddress za nju nije uspeo.
 
Odgovor na temu

miki78ns
Austria

Član broj: 161690
Poruke: 141
*.ptt.rs.

Sajt: www.bestmysecurity.com/an..


Profil

icon Re: Citac licnih karti celikapi.h14.08.2009. u 14:31 - pre 1954 dana i 2h
ako izmenim da bude ovako:
cout << _EidStartup(1) << endl;
cout << _EidBeginRead("0") << endl;
cout << _EidEndRead() << endl;
cout << _EidCleanup() << endl;

rezultat:
0
0
0
0

sto znaci da su sve cetiri funkcije dobro izvrsene. Ali isto daje i kad citac nije prikljucen.Mozda ce reagovati kad se upotrebe funckije _EidReadDocumentData koja cita podatke iz licne.
Ako stavim ovako samo primera radi ocekujuci negativne vrednosti greske:
cout << _EidStartup(1) << endl;
cout << _EidBeginRead << endl;
cout << _EidEndRead() << endl;
cout << _EidCleanup() << endl;

rezultat:
0
1
-5
0

-5 znaci UNABLE_TO_EXECUTE i to je u redu ali 1 nije negativna.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1153
*.netset.co.yu.



Profil

icon Re: Citac licnih karti celikapi.h14.08.2009. u 14:51 - pre 1954 dana i 2h
String koji se daje u funkciji EidBeginRead se u tom trenutku samo čuva, ali se ne koristi. To znači da funkcija vraća 0 šta god da navedeš kao čitač. Funkcije koje čitaju podatke će vratiti grešku ako se navede pogrešan string, kao što je recimo "0" koji si naveo u primeru.

Što se tiče 1 za _EidBeginRead opet si izostavio zagrade pa si opet dobio 1. Bez zagrada pointer na funkciju je samo jedna promenljiva čija se vrednost nekako konvertuje u 1 kad pozoveš cout. Kad bi na primer pozvao printf("%08X", _EidBeginRead), dobio bi adresu u memoriji gde se nalazi učitana funkcija. To što dobijaš 1 umesto 0 ili negativnog broja nema nikakve veze sa Čelikovim dll-om, nego sa tvojim pogrešnim kodom.
 
Odgovor na temu

miki78ns
Austria

Član broj: 161690
Poruke: 141
*.ptt.rs.

Sajt: www.bestmysecurity.com/an..


Profil

icon Re: Citac licnih karti celikapi.h14.08.2009. u 21:48 - pre 1953 dana i 19h
mora ici taj LPCSTR pod "" jer drugacije mi javlja gresku pri kompajliranju. Znaci ovako moze:
cout << _EidBeginRead("szReader") << endl;

moze mala pomoc kako pozvati ovu funkciju _EidReadDocumentData to je struktura podataka pa se nesnalazim najbolje.


[Ovu poruku je menjao miki78ns dana 15.08.2009. u 00:00 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1153
*.adsl-a-1.sezampro.yu.



Profil

icon Re: Citac licnih karti celikapi.h15.08.2009. u 18:46 - pre 1952 dana i 22h
Šta ti nije jasno? Jesi li ikad radio sa strukturama?
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


Profil

icon Re: Citac licnih karti celikapi.h16.08.2009. u 00:01 - pre 1952 dana i 17h
npr.

Code:


EID_DOCUMENT_DATA data = {0};

int result = EidReadDocumentData(&data);



Usput tvoje definicije funkcija EidReadDocumentData, EidReadFixedPersonalData, EidReadVariablePersonalData, EidReadPortrait su netacne jer svaka od njih vraca int a ne pointer na neku od struktura sto se i vidi iz originalnog hedera.

Code:

EID_API int WINAPI EidReadDocumentData(PEID_DOCUMENT_DATA pData);
EID_API int WINAPI EidReadFixedPersonalData(PEID_FIXED_PERSONAL_DATA pData);
EID_API int WINAPI EidReadVariablePersonalData(PEID_VARIABLE_PERSONAL_DATA pData);
EID_API int WINAPI EidReadPortrait(PEID_PORTRAIT pData);


odnosno:

Code:

typedef int (WINAPI *EidReadDocumentDataFunc)(PEID_DOCUMENT_DATA);
///... itd


Vidi se da si veoma nov u celoj ovoj stvari. Bavi se citanjem tutorijala, bolje nego da zavisis od drugih.


Tko leti vrijedi
 
Odgovor na temu

nepodmitljivi
Milan Milojic
student
Nis

Član broj: 243181
Poruke: 5
..3.252.195.static.beotel.net.



Profil

icon Re: Citac licnih karti celikapi.h09.12.2009. u 13:34 - pre 1837 dana i 2h
Izvinite sto podizem temu iz mrtvih, ali da li je neko probao da naizmenicno poziva _EidStartup i _EidCleanup?
Otkud mi takva ideja pitate se vi? Napravio sam svoj dll u C# (mislim da je programski jezik nebitan) koji koristim iz neke trece aplikacije i sve lepo radi pri citanju el. l. k., dobijem podatke, popunim svoja polja, snimim u bazu, sve radi kako treba. Ali sasvim slucajno ponovo pritisnem dugme za citanje i dobijem gresku EID_E_UNABLE_TO_EXECUTE = -5 u pozivu _EidStartup. Postovao sam proceduru prilikom citanja, prvo startup, pa begin read, pa onda citam podatke i punim neku svoju strukturu, pa na kraju end read i cleanup. Ocigledno cleanup ne radi kako treba posto gresku javlja prilikom sledeceg poziva EidStartup (otud i naizmenicno pozivanje _EidStartup i _EidCleanup, koje bi trebalo bez problema da prolazi, zar ne?)
Da bi ponovo procitao licnu kartu moram da resetujem program, ne pomaze vadjenje l.k./citaca.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1153
*.netset.co.yu.



Profil

icon Re: Citac licnih karti celikapi.h09.12.2009. u 14:04 - pre 1837 dana i 2h
Da, u pitanju je greška u EidCleanup. Da bi zaobišao grešku probaj da preurediš kod tako da se EidStartup i EidCleanup pozivaju samo jednom, prvi na početku rada programa, a drugi na kraju.
 
Odgovor na temu

nepodmitljivi
Milan Milojic
student
Nis

Član broj: 243181
Poruke: 5
..3.252.195.static.beotel.net.



Profil

icon Re: Citac licnih karti celikapi.h10.12.2009. u 09:33 - pre 1836 dana i 6h
Hvala na odgovoru, pretpostavio sam da cu morati nesto tako da muljam, ali mi to pravi bas veliki problem jer je struktura programa takva da to ne bi trebalo tako da se radi. Ali nije to poenta sad, drugo pitanje, da li je neko slao obavestenje o problemu na onu adresu muprs@mup.gov.rs, ima li vajde od toga, sprema li se mozda nova verzija API-ja?
 
Odgovor na temu

nash2k
Cizmic Nenad
Beograd

Član broj: 131337
Poruke: 14
*.static.sbb.rs.



Profil

icon Re: Citac licnih karti celikapi.h16.12.2009. u 10:16 - pre 1830 dana i 6h
Da li ovaj dll može da se koristi iz VB 6. Ako može, kako bi to trebalo da se izvede, jer ne mogu da ga registrujem, a da ne pričam o tome da nemam pojma kako bih deklarisao tipove pojedinih funkcija i argumenata. Svaka pomoć je dobrodošla :)
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


Profil

icon Re: Citac licnih karti celikapi.h16.12.2009. u 14:18 - pre 1830 dana i 2h
Moze. Pogledaj ovaj sajt koji govori o API funkcijama u vb6 . Taj princip treba primeniti i na ovaj dll.

http://allapi.mentalis.org/vbtutor/api1.shtml
Tko leti vrijedi
 
Odgovor na temu

nash2k
Cizmic Nenad
Beograd

Član broj: 131337
Poruke: 14
*.static.sbb.rs.



Profil

icon Re: Citac licnih karti celikapi.h16.12.2009. u 14:22 - pre 1830 dana i 2h
Hvala, vec sam izguglao neke artikle na temu, radi se na isprobavanju
 
Odgovor na temu

nash2k
Cizmic Nenad
Beograd

Član broj: 131337
Poruke: 14
*.static.sbb.rs.



Profil

icon Re: Citac licnih karti celikapi.h16.12.2009. u 16:46 - pre 1829 dana i 23h
Nakon malo (više) istraživanja na temu prosledjivanja struct parametara čiji su članovi nizovi bajtova, došli smo do problema. Nakon poziv funkcije EidReadDocumentData vraća grešku -6 (EID_E_READER_ERROR).
Pošto card reader radi sa Čitačem elektronske lične karte, ne liči da je on neispravan. Dakle deluje da sam poziv funkcije ima neki problem.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


Profil

icon Re: Citac licnih karti celikapi.h16.12.2009. u 18:53 - pre 1829 dana i 21h
Ovo bi trebalo da bude kompletan port

Code:

Rem Celikapi.bas

Const EID_MAX_DocRegNo = 9
Const EID_MAX_IssuingDate = 10
Const EID_MAX_ExpiryDate = 10
Const EID_MAX_IssuingAuthority = 30

Const EID_MAX_PersonalNumber = 13
Const EID_MAX_Surname = 60
Const EID_MAX_GivenName = 40
Const EID_MAX_ParentGivenName = 25
Const EID_MAX_Sex = 2
Const EID_MAX_PlaceOfBirth = 25
Const EID_MAX_StateOfBirth = 25
Const EID_MAX_DateOfBirth = 10
Const EID_MAX_CommunityOfBirth = 25

Const EID_MAX_State = 3
Const EID_MAX_Community = 25
Const EID_MAX_Place = 25
Const EID_MAX_Street = 36
Const EID_MAX_HouseNumber = 5
Const EID_MAX_HouseLetter = 2
Const EID_MAX_Entrance = 3
Const EID_MAX_Floor = 3
Const EID_MAX_ApartmentNumber = 6

Const EID_MAX_Portrait = 7700

//
// Function return values
//

Const EID_OK                            =  0
Const EID_E_GENERAL_ERROR               = -1
Const EID_E_INVALID_PARAMETER           = -2
Const EID_E_VERSION_NOT_SUPPORTED       = -3
Const EID_E_NOT_INITIALIZED             = -4
Const EID_E_UNABLE_TO_EXECUTE           = -5
Const EID_E_READER_ERROR                = -6
Const EID_E_CARD_MISSING                = -7
Const EID_E_CARD_UNKNOWN                = -8
Const EID_E_CARD_MISMATCH               = -9
Const EID_E_UNABLE_TO_OPEN_SESSION      = -10
Const EID_E_DATA_MISSING                = -11
Const EID_E_CARD_SECFORMAT_CHECK_ERROR  = -12
Const EID_E_SECFORMAT_CHECK_CERT_ERROR  = -13


Public Type EID_DOCUMENT_DATA
    docRegNo As String * EID_MAX_DocRegNo
    docRegNoSize as Long
    issuingDate as String * EID_MAX_IssuingDate
    issuingDateSize as Long
    expiryDate as String * EID_MAX_ExpiryDate
    expiryDateSize as Long
    issuingAuthority as String * EID_MAX_IssuingAuthority
    issuingAuthoritySize as Long
End Type

Public Type EID_FIXED_PERSONAL_DATA
    personalNumber As String * EID_MAX_PersonalNumber
    personalNumberSize As Long
    surname As String * EID_MAX_Surname
    surnameSize As Long
    givenName As String * EID_MAX_GivenName
    givenNameSize As Long
    parentGivenName As String * EID_MAX_ParentGivenName
    parentGivenNameSize As Long
    sex As String * EID_MAX_Sex
    sexSize As Long
    placeOfBirth As String * EID_MAX_PlaceOfBirth
    placeOfBirthSize As Long
    stateOfBirth As String * EID_MAX_StateOfBirth
    stateOfBirthSize As Long
    dateOfBirth As String * EID_MAX_DateOfBirth
    dateOfBirthSize As Long
    communityOfBirth As String * EID_MAX_CommunityOfBirth
    communityOfBirthSize As Long
End Type


Public Type EID_VARIABLE_PERSONAL_DATA
    state As String * EID_MAX_State
    stateSize As Long
    community As String * EID_MAX_Community
    communitySize As String
    place As String *EID_MAX_Place
    placeSize As Long
    street As String * EID_MAX_Street
    streetSize As Long
    houseNumber As String * EID_MAX_HouseNumber
    houseNumberSize As Long
    houseLetter As String * EID_MAX_HouseLetter
    houseLetterSize As Long
    entrance As String * EID_MAX_Entrance
    entranceSize As String
    floor As String * EID_MAX_Floor
    floorSize As Long
    apartmentNumber As String * EID_MAX_ApartmentNumber
    apartmentNumberSize As Long
End Type

Public Type EID_PORTRAIT
    portrait As Byte * EID_MAX_Portrait
    portraitSize As Long
End Type

Public Declare Function EidStartup Lib "celikapi"  (ByVal nApiVersion as Long) As Long
Public Declare Function  EidCleanup Lib "celikapi" () As Long

Public Declare Function EidBeginRead Lib "celikapi"  (ByVal szReader As String) As Long
Public Declare Function EidEndRead Lib "celikapi"  () As Long

Public Declare Function EidReadDocumentData Lib "celikapi"  (pData As EID_DOCUMENT_DATA) As Long
Public Declare Function EidReadFixedPersonalData Lib "celikapi"  (pData As EID_FIXED_PERSONAL_DATA) As Long
Public Declare Function EidReadVariablePersonalData Lib "celikapi"  (pData As EID_VARIABLE_PERSONAL_DATA) As Long
Public Declare Function EidReadPortrait Lib "celikapi"  (pData As EID_PORTRAIT) As Long


Tko leti vrijedi
 
Odgovor na temu

nash2k
Cizmic Nenad
Beograd

Član broj: 131337
Poruke: 14
*.static.sbb.rs.



Profil

icon Re: Citac licnih karti celikapi.h17.12.2009. u 10:08 - pre 1829 dana i 6h
Prvo, hvala na odgovoru.

Dakle, već sam napravio ovakve deklaracije, čak sam eksperimentisao deklaracijom niza bajtova, pa sam probao i ovako kao sto si ti napisao, a probao sam i da ih prevedem kao niz bajtova. Obe stvari su mi proizvodile istu gresku.
Mozda je problem u inicijalizaciji promenjivih pre poziva funkcije. Ne znam. Kod poziva funkcije EidBeginRead, parametar je naziv readera? Ja joj prosledjujem "CardMan 3x21" kako mi stoji u device manageru, da li mozda treba nesto drugo?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1153
*.netset.co.yu.



Profil

icon Re: Citac licnih karti celikapi.h17.12.2009. u 11:06 - pre 1829 dana i 5h
Ako ti je to jedini čitač priključen na računar onda kao ime čitača stavi prazan string (što znači "gledaj prvu karticu na koju naletiš po spisku s bilo kog čitača"). Jedino ako praviš program koji koristi više čitača, ili ako neki korisnik koristi neki drugi čitač s drugom karticom onda imaš potrebu da navedeš ime čitača. Imena svih čitača priključenih na računar dobijaš sistemskim funkcijama (SCardEstablishContext, SCardListReaders, SCardFreeMemory, SCardReleaseContext). Ova SCardListReaders je glavna stvar, ali ponavljam, ova komplikacija ti treba samo ako ti stvarno treba :-). Ako ti ova komplikacija stvarno treba onda bi trebalo da napraviš GUI opciju za korisnika da odabere čitač sa spiska koji mu daš, a koji si dobio navedenim funkcijama. Imena čitača koje dobiješ pomoću gore navedene sistemske funkcije su stringovi koje daješ funkciji EidBeginRead.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Citac licnih karti celikapi.h

Strane: 1 2 3 4

[ Pregleda: 20873 | Odgovora: 78 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.