⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tck_bios_fs.c

📁 这是用VB6.0写的一个通用的CPU卡操作程序,支持PC/SC接口 安装任何一个PC/SC驱动的IC读写器后,都可以使用此程序进行CPU卡的测试
💻 C
📖 第 1 页 / 共 4 页
字号:
{	jbyte	err;	LOG3("TCK","UPDATE BINARY FILE (9000) id=%.4X ofs=%.4X length=%d",id,ofs,len);	err = update_binary_file(id,buf,ofs,len);	if (err != SUCCESS) {		fprintf(stderr,"update_binary_file(%.4X,%.4X,%d): nok: error code %d\n",id,ofs,len,err);		giNumErr++;	}}void UPDATE_BINARY_FILE_ERR(jword id,jbyte* buf,jword ofs,jbyte len,jbyte _err){	jbyte	err;	LOG4("TCK","UPDATE BINARY FILE (%.4X) id=%.4X ofs=%.4X length=%d",isoerr(_err),id,ofs,len);	err = update_binary_file(id,buf,ofs,len);	if (err != _err) {		fprintf(stderr,"update_binary_file(%.4X,%.4X,%d): nok: error code %d but %d was required\n",id,ofs,len,err,_err);		giNumErr++;	}}/* ============================================================================    Erase a binary file    Returns lasterr error code or SUCCESS   ========================================================================= */jbyte erase_binary_file(jword id,jword ofs){    BIOS_SETERR(NOERR);    FS_LOOKUP_FID(id,LOOKUP_MODE_DEFAULT);    if (lasterr!=SUCCESS) return lasterr;    FS_ERASE_BINARY_EF(ofs);    return lasterr;}void ERASE_BINARY_FILE_SUCCESS(jword id,jword ofs){    jbyte   err;    LOG2("TCK","ERASE BINARY FILE (9000) id=%.4X ofs=%.4X",id,ofs);    err = erase_binary_file(id,ofs);    if (err != SUCCESS) {        fprintf(stderr,"erase_binary_file(%.4X,%.4X): nok: error code %d\n",id,ofs,err);        giNumErr++;    }}void ERASE_BINARY_FILE_ERR(jword id,jword ofs,jbyte _err){    jbyte   err;    LOG3("TCK","ERASE BINARY FILE (%.4X) id=%.4X ofs=%.4X",isoerr(_err),id,ofs);    err = erase_binary_file(id,ofs);    if (err != _err) {        fprintf(stderr,"erase_binary_file(%.4X,%.4X): nok: error code %d but %d was required\n",id,ofs,err,_err);        giNumErr++;    }}/* ============================================================================	Read a binary file	Returns lasterr error code or SUCCESS   ========================================================================= */jbyte read_binary_file(jword id,jbyte* buf,jword ofs,jbyte len){	BIOS_SETERR(NOERR);	gBuf = buf;	for (gN=0; gN<len; gN++) { gBuf[gN] = 0xCC; }	gN = 0;    FS_LOOKUP_FID(id,LOOKUP_MODE_DEFAULT);	if (lasterr!=SUCCESS) return lasterr;	FS_READ_BINARY_EF(ofs,len);	return lasterr;}void READ_BINARY_FILE_SUCCESS(jword id,jbyte* buf,jword ofs,jbyte len){	jbyte	err;	LOG3("TCK","READ BINARY FILE (9000) id=%.4X ofs=%.4X length=%d",id,ofs,len);	err = read_binary_file(id,buf,ofs,len);	if (err != SUCCESS) {		fprintf(stderr,"read_binary_file(%.4X,%.4X,%d): nok: error code %d\n",id,ofs,len,err);		giNumErr++;	}}void READ_BINARY_FILE_ERR(jword id,jbyte* buf,jword ofs,jbyte len,jbyte _err){	jbyte	err;	LOG4("TCK","READ BINARY FILE (%.4X) id=%.4X ofs=%.4X length=%d",isoerr(_err),id,ofs,len);	err = read_binary_file(id,buf,ofs,len);	if (err != _err) {		fprintf(stderr,"read_binary_file(%.4X,%.4X,%d): nok: error code %d but %d was required\n",id,ofs,len,err,_err);		giNumErr++;	}}/* ============================================================================	Create a record linear|cyclic file	Returns lasterr error code or SUCCESS   ========================================================================= */jbyte create_record_file(jword id,jbyte recnum,jbyte recsize,jbool bCyclic){	BIOS_SETERR(NOERR);	HAL_ERASE_XRAM((jbyte xdata*)&header_file,sizeof(header_file));	header_file.fid = id;	if (bCyclic) {		header_file.fdesc = FDESC_TYPE_CYCLIC;	} else {		header_file.fdesc = FDESC_TYPE_LINEAR;	}	header_file.sfi = SFI_NOTUSE;    header_file.ac[0] = 0xFF;    header_file.ac[1] = 0xFF;    header_file.ac[2] = 0xFF;    header_file.ac_key[0] = 0x00;    header_file.ac_key[1] = 0x00;    header_file.ac_key[2] = 0x00;	header_file.u4.record.nummax = recnum;	header_file.u4.record.size = recsize;	/* create the file */	FS_CREATE_FILE();	if (lasterr==SUCCESS) {		FS_ERASE_FILE();	}	return lasterr;}void CREATE_RECORD_FILE_SUCCESS(jword id,jbyte recnum,jbyte recsize,jbool bCyclic){	jbyte	err;	LOG3("TCK","CREATE RECORD FILE (9000) id=%.4X recnum=%d recsize=%d",id,recnum,recsize);	err = create_record_file(id,recnum,recsize,bCyclic);	if (err != SUCCESS) {		fprintf(stderr,"create_record_file(%.4X,%d,%d): nok: error code %d\n",id,recnum,recsize,err);		giNumErr++;	}}void CREATE_RECORD_FILE_ERR(jword id,jbyte recnum,jbyte recsize,jbool bCyclic,jbyte _err){	jbyte	err;	LOG4("TCK","CREATE RECORD FILE (%.4X) id=%.4X recnum=%d recsize=%d",isoerr(_err),id,recnum,recsize);	err = create_record_file(id,recnum,recsize,bCyclic);	if (err != _err) {		fprintf(stderr,"create_record_file(%.4X,%d,%d): nok: error code %d but %d was required\n",id,recnum,recsize,err,_err);		giNumErr++;	}}/* ============================================================================	Read a record file	Returns lasterr error code or SUCCESS   ========================================================================= */jbyte read_record_file(jword id,jbyte* buf,jbyte recnum,jbyte cmd,jbyte len){	BIOS_SETERR(NOERR);	gBuf = buf;	for (gN=0; gN<len; gN++) { gBuf[gN] = 0xCC; }	gN = 0;    FS_LOOKUP_FID(id,LOOKUP_MODE_DEFAULT);	if (lasterr!=SUCCESS) return lasterr;	if (cmd == SET_RECORD) {		/* read based on ref */		FS_SET_RECORD_EF(recnum,SET_RECORD);	} else {		FS_SET_RECORD_EF(0,cmd);	}	if (lasterr!=NOERR) return lasterr;	FS_READ_RECORD_EF(len);	return lasterr;}void READ_RECORD_FILE_SUCCESS(jword id,jbyte* buf,jbyte recnum,jbyte cmd,jbyte len){	jbyte	err;	LOG4("TCK","READ RECORD FILE (9000) id=%.4X recnum=%d cmd=%d length=%d",id,recnum,cmd,len);	err = read_record_file(id,buf,recnum,cmd,len);	if (err != SUCCESS) {		fprintf(stderr,"read_record_file(%.4X,%d,%d,%d): nok: error code %d\n",id,recnum,cmd,len,err);		giNumErr++;	}}void READ_RECORD_FILE_ERR(jword id,jbyte* buf,jbyte recnum,jbyte cmd,jbyte len,jbyte _err){	jbyte	err;	LOG5("TCK","READ RECORD FILE (%.4X) id=%.4X recnum=%d cmd=%d length=%d",isoerr(_err),id,recnum,cmd,len);	err = read_record_file(id,buf,recnum,cmd,len);	if (err != _err) {		fprintf(stderr,"read_binary_file(%.4X,%d,%d,%d): nok: error code %d but %d was required\n",id,recnum,cmd,len,err,_err);		giNumErr++;	}}/* ============================================================================	Append a record file	Returns lasterr error code or SUCCESS   ========================================================================= */jbyte append_record_file(jword id,jbyte* buf,jbyte len){	BIOS_SETERR(NOERR);	gN = 0;	gBuf = buf;    FS_LOOKUP_FID(id,LOOKUP_MODE_DEFAULT);	if (lasterr!=SUCCESS) return lasterr;	FS_APPEND_RECORD_EF();	if (lasterr!=NOERR) return lasterr;    FS_UPDATE_RECORD_EF(len,jtrue);	return lasterr;}void APPEND_RECORD_FILE_SUCCESS(jword id,jbyte* buf,jbyte len){	jbyte	err;	LOG2("TCK","APPEND RECORD FILE (9000) id=%.4X length=%d",id,len);	err = append_record_file(id,buf,len);	if (err != SUCCESS) {		fprintf(stderr,"append_record_file(%.4X,%d): nok: error code %d\n",id,len,err);		giNumErr++;	}}void APPEND_RECORD_FILE_ERR(jword id,jbyte* buf,jbyte len,jbyte _err){	jbyte	err;	LOG3("TCK","APPEND RECORD FILE (%.4X) id=%.4X length=%d",isoerr(_err),id,len);	err = append_record_file(id,buf,len);	if (err != _err) {		fprintf(stderr,"append_record_file(%.4X,%d): nok: error code %d but %d was required\n",id,len,err,_err);		giNumErr++;	}}/* ============================================================================	Write a record file	Returns lasterr error code or SUCCESS   ========================================================================= */jbyte write_record_file(jword id,jbyte* buf,jbyte recnum,jbyte cmd,jbyte len){	BIOS_SETERR(NOERR);	gN = 0;	gBuf = buf;    FS_LOOKUP_FID(id,LOOKUP_MODE_DEFAULT);	if (lasterr!=SUCCESS) return lasterr;	if (cmd == SET_RECORD) {		/* write based on ref */		FS_SET_RECORD_EF(recnum,SET_RECORD);	} else {		FS_SET_RECORD_EF(0,cmd);	}	if (lasterr!=NOERR) return lasterr;    FS_UPDATE_RECORD_EF(len,jfalse);	return lasterr;}void WRITE_RECORD_FILE_SUCCESS(jword id,jbyte* buf,jbyte recnum,jbyte cmd,jbyte len){	jbyte	err;	LOG4("TCK","WRITE RECORD FILE (9000) id=%.4X recnum=%d cmd=%d length=%d",id,recnum,cmd,len);	err = write_record_file(id,buf,recnum,cmd,len);	if (err != SUCCESS) {		fprintf(stderr,"write_record_file(%.4X,%d,%d,%d): nok: error code %d\n",id,recnum,cmd,len,err);		giNumErr++;	}}void WRITE_RECORD_FILE_ERR(jword id,jbyte* buf,jbyte recnum,jbyte cmd,jbyte len,jbyte _err){	jbyte	err;	LOG5("TCK","WRITE RECORD FILE (%.4X) id=%.4X recnum=%d cmd=%d length=%d",isoerr(_err),id,recnum,cmd,len);	err = write_record_file(id,buf,recnum,cmd,len);	if (err != _err) {		fprintf(stderr,"write_binary_file(%.4X,%d,%d,%d): nok: error code %d but %d was required\n",id,recnum,cmd,len,err,_err);		giNumErr++;	}}/* ============================================================================	Increase a counter	Returns lasterr error code or SUCCESS   ========================================================================= */jbyte increase(jword id,jbyte counter,jdword* val){	BIOS_SETERR(NOERR);    FS_LOOKUP_FID(id,LOOKUP_MODE_EF_ONLY);	if (lasterr!=SUCCESS) return lasterr;	/* increase */	*val = BIOS_INC_COUNTER(counter,*val);	if (lasterr!=NOERR) return lasterr;	/* commit the new value */	BIOS_TRANS_COMMIT();	if (lasterr!=NOERR) return lasterr;	return lasterr;}void INCREASE_SUCCESS(jword id,jbyte counter,jdword* val){	jbyte	err;	LOG3("TCK","INCREASE (9000) id=%.4X counter=%d val=%ld",id,counter,*val);	err = increase(id,counter,val);	if (err != SUCCESS) {		fprintf(stderr,"increase(%.4X,%d,%ld): nok: error code %d\n",id,counter,*val,err);		giNumErr++;	}}void INCREASE_ERR(jword id,jbyte counter,jdword* val, jbyte _err){	jbyte	err;	LOG4("TCK","INCREASE (%.4X) id=%.4X counter=%d val=%ld",isoerr(_err),id,counter,*val);	err = increase(id,counter,val);	if (err != _err) {		fprintf(stderr,"increase(%.4X,%d,%ld): nok: error code %d but %d was required\n",id,counter,*val,err,_err);		giNumErr++;	}}/* ============================================================================	Decrease a counter	Returns lasterr error code or SUCCESS   ========================================================================= */jbyte decrease(jword id,jbyte counter,jdword* val)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -