Hi,
scheint wohl so als ob der Aufruf einer Funktion aus einer anderen Library zu dem Fehler führt. Hierbei handelt es sich um eine CTAPI Schnittstelle.
Definition:
Code: Alles auswählen
typedef char (*CT_INIT) (USHORT, USHORT);
typedef char (*CT_DATA) (USHORT, UCHAR*, UCHAR*, USHORT, UCHAR*, USHORT*, CHAR*);
typedef char (*CT_CLOSE) (USHORT);
HINSTANCE hDLL; CT_INIT CT_init; CT_DATA CT_data; CT_CLOSE CT_close;
Aufruf:
Code: Alles auswählen
hDLL = LoadLibrary(L"ctpcsc32kv.dll");
CT_init = (CT_INIT)GetProcAddress(hDLL,"CT_init");
CT_data = (CT_DATA)GetProcAddress(hDLL,"CT_data");
CT_close = (CT_CLOSE)GetProcAddress(hDLL,"CT_close");
unsigned char sad, dad;
char response [MAXMEM]={0};
unsigned short int ctn, lenr;
char res;
ctn=1;
res = CT_init(ctn,0);
unsigned char Reset_ICC[5] = {0x20,0x11,0x00,0x00,0x00}; //dad=1 sad=2
unsigned char Request_ICC[7] = {0x20,0x12,0x01,0x01,0x01,0x0A,0x00}; //dad=1 sad=2
unsigned char Get_Status[5] = {0x20,0x13,0x00,0x46,0x00}; //dad=1 sad=2
unsigned char Select_File[11] = {0x00,0xA4,0x04,0x00,0x06,0xD2,0x80,0x00,0x00,0x01,0x01}; //dad=0 sad=2
unsigned char Read_Binary[5] = {0x00,0xB0,0x00,0x00,0x00}; //dad=0 sad=2
dad=1;
sad=2;
lenr=0;
res=CT_data(ctn,&dad,&sad,5, Reset_ICC,&lenr,response);//Reset
dad=1;
sad=2;
lenr=255;
res=CT_data(ctn,&dad,&sad,7, Request_ICC,&lenr,response);//Request ICC
dad=1;
sad=2;
lenr=255;
res=CT_data(ctn,&dad,&sad,5, Get_Status,&lenr,response);//Get Status
if(res==0){
dad=0;
sad=2;
lenr=2000;
res=CT_data(ctn,&dad,&sad,11, Select_File,&lenr,response);//Select File
dad=0;
sad=2;
lenr=2000;
res=CT_data(ctn,&dad,&sad,5, Read_Binary,&lenr,response);//Read Binary
}
CT_close(ctn);
In der Debug-Version erhalte ich die Daten der Karte und kann diese weiter verarbeiten. In der Release-Version stürzt das Prgm beim Ersten Aufruf der ct_data ab.
mfG Martin