📄 datapackunpackmodule.h
字号:
// The following ifdef block is the standard way of creating macros which make exporting
// from a DLL simpler. All files within this DLL are compiled with the DATAPACKUNPACKMODULE_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see
// DATAPACKUNPACKMODULE_API functions as being imported from a DLL, wheras this DLL sees symbols
// defined with this macro as being exported.
#ifdef DATAPACKUNPACKMODULE_EXPORTS
#define DATAPACKUNPACKMODULE_API __declspec(dllexport)
#else
#define DATAPACKUNPACKMODULE_API __declspec(dllimport)
#endif
#include<windows.h>
#include"string.h"
#include"stdio.h"
#define MAXFIELDNO 129
#define MAXSNDLEN 1024
#define STRSIZE(X) sizeof(X)-1
struct ATM_Data_Property{ //ATM结构中数据域属性
int len; //数据域的长度,变长数据域为最大长度
unsigned char type; //数据域类型
unsigned char flag; //数据域变长标示
int offset; //在ATM结构中的偏移量
int fno; //内欠结构体的数据中包含的'\0'的个数
};
struct ISO_Data_Property{ //ISO结构中dbuf各段数据属性
short bitf; //位图标志:0/1
short len; //数据实际长度
int dbuf_addr; //第一个字节有效数据在dbuf数组中的下标
};
typedef struct{
unsigned char dbuf[2048]; //存储数据为:Message_ID+OtherData,无message_id+bitmap
struct ISO_Data_Property f[MAXFIELDNO]; //数据属性数组
short off; //动态记录下标偏移
unsigned char message_id[5]; //信息类型
unsigned char bitmap[33]; //位图信息
}ISO_data; //ISO结构体,介于ATM与ATMP之间的用于数据转换的数据结构
typedef struct{ //占据12+12+9+9=42字节
unsigned char actual_amount_of_transaction[12]; //实际交易结算金额n12
unsigned char actual_amount_of_settlement[12]; //实际结算金额 n12
unsigned char actual_amount_of_trancation_fee[9]; //实际交易费用 X+n8;X是借贷符号D表示借(-)C表示贷(+)
unsigned char actual_amount_of_settlement_fee[9]; //实际结算费用X+n8
}ATM_IFORM_Replacement_amount; //部分或全额冲正交易时所需重置金额an42
typedef struct{ //占据8+6+6=20字节
unsigned char org_date_equipment[8]; //原始设备端交易日期 n8(YYYYMMDD)
unsigned char org_time_of_equipment[6]; //原始设备端交易时间 n6(hhmmss)
unsigned char org_transaction_number_of_equpment[6]; //原始设备端流水号n6
}ATM_IFORM_Original_trade_elements_of_equipment; //用于冲正交易的原始记录n20
typedef struct{ //占据1+1=2字节
unsigned char personal_pin_data; //第一位:0-8 personal_pin_data的长度
unsigned char new_personal_pin_data; //第二位:0-8 new_personal_pin_data的长度
}ATM_IFORM_pin_capture_code; //服务点PIN 获取码n2
typedef struct{ //占据1+20=21字节
unsigned char clientele_identity_type; //an1证件类型0:身份证
unsigned char clientle_identity_code[20]; //an20证件号
}ATM_IFORM_Clientele_identity_id; //客户证件号
typedef struct{ //占据8+6+12=26字节
unsigned char org_date_of_post[8]; //n8(yyyymmdd)原始前置机交易日期
unsigned char org_time_of_post[6]; //n6(hhmmss)原始前置机交易时间
unsigned char org_transaction_number_of_post[12]; //n12原始前置机流水号
}ATM_IFORM_Original_trace_number_of_prepositive_computer; //n26冲正所需前置机原始交易数据
typedef struct{ //占据3+13+13+7=36字节
unsigned char currency_code[3]; //a3货币代码
unsigned char ledger_balance_amount[13]; //X+n12帐户上的帐面余额(若交易不成功为全零)
unsigned char available_balance_amount[13]; //X+n12帐户上的可用余额(若交易不成功全为零)
unsigned char commission_charg[7]; //X+n6手续费
}ATM_IFORM_Balance_amount_of_bank; //ans36银行帐户余额
typedef struct{ //占据50+4+4=58字节
unsigned char file_name_of_receive[50]; //ans50接收文件名称
unsigned char total_datagram_number_of_receive[4]; //n4接收文件包总个数
unsigned char current_datagram_number_of_receive[4]; //n4当前接收文件数据块第几个数据包
}ATM_IFORM_Message_of_receive_file; //ans58文件传输信息
typedef struct{ //占据1+1+1+1+1+1+1+1+1+1+1+1+1=13字节
unsigned char service_status; //a1 服务状态
unsigned char drawing_box1_status; //a1一号出钞箱状态
unsigned char drawing_box2_status; //a1二号出钞箱状态
unsigned char drawing_box3_status; //a1三号出钞箱状态
unsigned char drawing_box4_status; //a1四号出钞箱状态
unsigned char drawing_box5_status; //a1五号出钞箱状态
unsigned char drawing_box6_status; //a1六号出钞箱状态
unsigned char drawing_box7_status; //a1七号出钞箱状态
unsigned char drawing_box8_status; //a1八号出钞箱状态
unsigned char printer1_status; //a1流水打印机状态
unsigned char printer2_status; //a1凭条打印机状态
unsigned char printer3_status; //a1结单打印机状态
unsigned char printer4_status; //a1存折打印机状态
}ATM_IFORM_Equipment_server_status; //a13设备服务状态信息
typedef struct{ //占据4+4+4+4+4+4+4+4=32字节
unsigned char number_of_booknotes_in_casset1[4]; //n4钞箱1张数
unsigned char number_of_booknotes_in_casset2[4]; //n4钞箱2张数
unsigned char number_of_booknotes_in_casset3[4]; //n4钞箱3张数
unsigned char number_of_booknotes_in_casset4[4]; //n4钞箱4张数
unsigned char number_of_booknotes_in_casset5[4]; //n4钞箱5张数
unsigned char number_of_booknotes_in_casset6[4]; //n4钞箱6张数
unsigned char number_of_booknotes_in_casset7[4]; //n4钞箱7张数
unsigned char number_of_booknotes_in_casset8[4]; //n4钞箱8张数
}ATM_IFORM_Drawing_box_status; //ans32取款钞箱张数
typedef struct{ //占据6+12+6+12+6+12+6+6=66字节
unsigned char total_number_of_successful_drawing[6]; //n6成功取款笔数
unsigned char total_amount_of_successful_drawing[12]; //n12成功取款金额
unsigned char total_number_of_successful_deposit[6]; //n6成功取款笔数
unsigned char total_amount_of_successful_deposit[12]; //n12成功取款金额
unsigned char total_number_of_successful_transfer[6]; //n6成功转帐笔数
unsigned char total_amount_of_successful_transfer[12];//n12成功转帐金额
unsigned char total_number_of_expropriate_card[6]; //n6没收卡张数
unsigned char total_number_of_abandon[6]; //n6废钞张数
}ATM_IFORM_Statistics_of_trade_information; //n66交易统计信息
typedef struct{ //占据4+3+4=11字节
unsigned char clientele_exception_information[4]; //n4与客户有关的例外码,软件故障
unsigned char hardware_name[3]; //a3 硬件名称:无故障为'000'
unsigned char hardware_expection_code[4]; //硬件错误码;无错误为'0000'
}ATM_IFORM_Exception_information; //an11例外信息
typedef struct{ //占据8+8=16字节
unsigned char sync_counter[8]; //密钥同步计数器n8
unsigned char message_security_code[8]; //新密钥b64
}ATM_IFORM_Security_related_control_information; //数据安全控制信息保密代码ans16
typedef struct{
unsigned char Message_type_id[4]; //Message_type_identification n4
// 0100 授权类请求消息(余额查询,改密,交易完成确认)
// 0110 授权类应答消息(余额查询,改密,交易完成确认)
// 0200 金融类请求消息(取款,存款,转帐)
// 0210 金融类应答消息(取款,存款,转帐)
// 0400 冲正类请求消息(冲正取款,冲正转帐)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -