📄 export.h
字号:
/*******************************************************************************
FileName : Export.h
Description : 本头文件定义了SMEIDLL提供的所有输出函数的定义。
Version : 2.0
Date : 98/11/01
Others :
Function List :
01. IFInitInterface :初始化动态库
02. IFSendAndAnswer :基本的发送等待回包函数
03. IFSetOnRead :设置读回调函数,用于处理非回包数据
04. IFSetOnError :设置出错回调函数,用于通知上层
05. IFExitInterface :退出动态库函数
06. Login :登录函数,使用TRANSMITER命令
07. Logout :从短讯中心注销
08. SubmitSM :提交短讯
09. VPSubmitSM :提交短讯,简化函数
10. QuerySMStatus :查询短讯状态
11. QuerySMDetail :查询短讯详细属性,可查询短讯内容
12. QuerySMS :查询满足条件的短讯
13. CancelSM :取消短讯
14. ReplaceSM :替换短讯
15. AddSubscriber :添加用户
16. DeleteSubscriber :删除用户
17. ModifySubscriber :修改用户属性
18. EnquireSubscriber :查询用户属性
19. HasDeliverMessage :查询是否有下发短讯
20. GetDeliverSM :取下发短讯
21. Login_R :登录函数,使用RECEIVER命令
22. VPModifySubPassword :修改用户密码
23. GetErrorString :查询错误代码的描述
24. SubmitA :增强的SUBMIT函数
25. VPSubmitA :增强的SUBMIT函数的VP版
26. GSMConvertTextToData :把ASC字符串变换成指定编码
27. GSMConvertDataToText :把编码数据变换成ASC字符串
28. QuerySub
History :
1. author : 张刚
time : 98/11/01
release : 2.0
desc : 实现基本功能
2. author : 张刚
time : 99/06/01
release : 2.1
desc : 优化,修改了一些错误,添加了新函数。
*******************************************************************************/
#if !defined(__SEMIDLL_EXPORT_H__)
#define __SEMIDLL_EXPORT_H__
#define IF_TIMEOUT 5000 //发送超时时间
//最大的短消息文本长度为255*140=35700
#define MAX_SMSIZE 35700 //最大短讯长度
#define ACK_SUCCESS 0 //ACK执行正确
#define SM_PRI_PRIOR 1 //优先级别
#define SM_PRI_DEFAULT 0 //缺省
#define SM_DCS_DEFAULT 0x00 //缺省(7位)
#define SM_DCS_ASC 0x04 //英文(不被手机支持)
#define SM_DCS_CHINA 0x08 //中文(会被转化成UCS2)
#define SM_UDHI_DEFAULT 0 //UD是正常字符串
#define SM_UDHI_STRUCTURE 1 //UD是结构
#define CHINA_ERRSTR 0X40000000 //返回汉字的错误字符串
#define SMSCERR_BEGIN 10000
// Begin: Adder: huanghui(41674) for demo整理,合并行业网关demo Date: 2005-10-18
// Begin: Adder: Fengli(41904) for 2.2D101 行业网关 Date: 2005-6-6
#define MAX_REGISTER_NUMS_COUNT 300 //max register nums count for one time
#define MAX_CANCEL_NUMS_COUNT MAX_REGISTER_NUMS_COUNT
#define MAX_REGISTER_NUM_LEN 20 //register long num len
#define MAX_REGISTER_NUMS 3000 //one sp can register 1000 long nums mostly
// End : Adder: Fengli(41904) for 2.2D101 行业网关 Date: 2005-6-6
// End : Adder: huanghui(41674) for demo整理,合并行业网关demo Date: 2005-10-18
#define INITIALTIME 3000
#define SMGP_CODE 6
//#define SMGP_SUCCESS 0
#define SMGP_FAILTURE 1
#define IS_WRITE_PAGE_INDEX 1
//tcpip连接
#define TCPIP_DRV 1
#define MAX_SMGP_MSG_LEN 252
#define PAGE_CODE_LEN 4
#define SMGP_USERID_LEN 12
#define SMGP_PASSWORD_LEN (16)
#define MAX_SMGP_PAGE 100
#define SMGP_IP_LEN 16
#define SMGP_PORT_LEN 5
#define MAX_DESTID_COUNT 100
#define SMGP_ADDRS_LEN 21
#define SMGP_RECVTIME_LEN 14
#define SMGP_MSGIDS_LEN 10
#define SMGP30_LINKID_LEN 20
#define SMGP30_PESUDO_LEN 32
#define SMGP30_RESERVED_LEN 8
#define SMGP30_MAX_TLV_LEN 512
// 定义编码格式
enum CODE_TYPE
{
ASCII_CODE = 0,
BINARY_CODE = 4,
UCS2_CODE = 8,
GB_CODE = 15,
// Begin: Adder: huanghui(41674) for 1.5D201 Date: 2006-4-15
MOD_PASSWOED_CODE = 100
// End : Adder: huanghui(41674) for 1.5D201 Date: 2006-4-15
};
enum SGIP_LOGINTYPE
{
SPTOSMG =1, // 用于SP 向SMG 建立连接
SMGTOSP =2 // 用于SMG 向SP建立连接
};
typedef struct SendBatchResp
{
int NerrorCode;
char SmsgID[25 + 1];
char DestTermID[SMGP_ADDRS_LEN + 1];
}tagSendBatchResp;
typedef struct DeliverResp
{
char MsgID[25+1];
unsigned char uIsReport;
unsigned char uMsgFormat;
char RecvTime[SMGP_RECVTIME_LEN+1];
char SrcTermID[SMGP_ADDRS_LEN +1];
char DestTermID[SMGP_ADDRS_LEN +1];
unsigned char uMsgLength;
char MsgContent[201];
}tagDeliverResp;
enum DLL_RETURN
{
E_SUCCESS = 0 //成功
//IFSendAndAnswer函数的返回值
, E_NOT_INITIALIZED = -1 //INTERFACE没有初始化
, E_ACK_COMMAND_ERROR = -2 //回包命令字错误
, E_NEWMEMORY_ERROR = -3 //分配内存错误
, E_OTHER_ERROR = -4 //其他错误
, E_SA_BUFF_TOOBIG = -5 //SEND缓冲区太大
, E_SA_POCKET_UNINTEGRATE = -6 //SEND包不完整
, E_SA_PROTOCOL_ERROR = -7 //协议错
, E_SA_PROTOCOL_NO_SUPPORT = -8 //协议不支持该格式
, E_SA_CODE_OTHER_ERROR = -9 //编码其他错误
, E_SA_TIMEOUT = -10 //传送超时
, E_SA_NO_ENOUGH_BUFFER = -11 //接收缓冲区不够大
, E_SA_WAITFAILED = -12 //等待失败
, E_SA_SEND_FAILED = -13 //发送失败
//SUBMIT函数的返回值
, E_SUBMIT_ORGADDR_ERROR = -14 //源地址错误
, E_SUBMIT_DESTADDR_ERROR = -15 //目的地址错误
, E_SUBMIT_SCHEDULE_ERROR = -16 //参数定时时间错误
, E_SUBMIT_EXPIRE_ERROR = -17 //参数超时时间错误
, E_SUBMIT_DCS_ERROR = -18 //参数DCS错误
, E_SUBMIT_DCS_CONVERT_ERROR = -19 //数据变换错误
, E_SUBMIT_UDHI_ERROR = -20 //参数UDHI错误
, E_SUBMIT_UD_ERROR = -21 //用户数据错误
, E_SUBMIT_OVER_MO = -22 //超过最大提交数
, E_SUBMIT_OVER_MT = -23 //超过最大下发数
, E_SUBMIT_INVALID_USER = -24 //无效用户,或者用户无权
, E_SUBMIT_INVALID_DATA_FORMAT = -25 //无效数据格式
, E_SUBMIT_ADDR_ERROR = -26 //地址错误
, E_SUBMIT_CREATE_MESSAGE_ERROR = -27 //生成短讯错误
//QuerySMStatus函数返回值
, E_QUERYSMSTATUS_SM_NOT_EXIST = -28 //短讯不存在
, E_QUERYSMSTATUS_SM_OTHER_ERR = -29 //查询其他错误
, E_QUERYSMSTATUS_ADDR_ERROR = -30 //地址错误
//QuerySMDetail函数返回值
, E_QUERYSMDETAIL_SM_DETAILS_ZERO = -31 //查询不到此
, E_QUERYSMDETAIL_SM_DETAILS_FAIL = -32 //查询失败
, E_QUERYSMDETAIL_CONVERT_ERROR = -33 //用户数据编码出错
, E_QUERYSMDETAIL_LEN_ERROR = -34 //LEN参数出错
, E_QUERYSMDETAIL_SM_ADDR_ERROR = -35 //地址错误
//CancelSM函数返回值
, E_CANCELSM_ACK_STATUS_ERROR = -36 //回包的STATUS指示出错
//ReplaceSM函数返回值
, E_REPLACESM_ORGADDR_ERROR = -37 //源地址错误
, E_REPLACESM_SCHEDULE_ERROR = -38 //定时数据错误
, E_REPLACESM_EXPIRE_ERROR = -39 //超时数据错误
, E_REPLACESM_DCS_ERROR = -40 //DCS错误
, E_REPLACESM_DCS_CONVERT_ERROR = -41 //用户数据编码出错
, E_REPLACESM_UD_ERROR = -42 //用户数据错误
, E_REPLACESM_SM_WORKING = -43 //短讯正在下发
, E_REPLACESM_SM_ADDR_ERROR = -44 //短讯地址错误
, E_REPLACESM_SM_INVALID_SOURCE_ADDR = -45 //无效的源地址
, E_REPLACESM_SM_NO_SUCH_SM = -46 //没有指定的短讯
, E_REPLACESM_SM_INVALID_DATA_TYPE = -47 //无效数据类型
, E_REPLACESM_SM_FAIL = -48 //替换失败
, E_QUERYSMS_DIR_ERROR = -49 //参数DIR错
, E_QUERYSMS_ADDR_ERROR = -50 //参数用户地址错误
, E_QUERYSMS_DATETIME_ERROR = -51 //参数开始时间错误
, E_QUERYSMS_FINATIME_ERROR = -52 //参数结束时间错误
, E_QUERYSMS_NUMBER_ERROR = -53 //参数查询条数错误
, E_QUERYSMS_ACK_STATUS_ERROR = -54 //回包的STATUS指示出错
, E_ADDSUB_SUBID_ERROR = -55 //参数用户号码错误
, E_ADDSUB_SUBNAME_ERROR = -56 //参数用户姓名错误
, E_ADDSUB_SUBADDRESS_ERROR = -57 //参数用户地址错误
, E_ADDSUB_PASSWORD_ERROR = -58 //参数用户密码错误
, E_ADDSUB_USER_ALREADY_EXIST = -59 //用户已经存在
, E_ADDSUB_ADD_USER_FAIL = -60 //添加用户失败
, E_DELETESUB_SUBID_ERROR = -61 //参数用户号码错误
, E_DELETESUB_USER_NOT_EXIST = -62 //用户不存在
, E_DELETESUB_USER_DEL_FAIL = -63 //删除用户失败
, E_MODIFYSUB_SUBID_ERROR = -64 //参数用户号码错误
, E_MODIFUSUB_SUBNAME_ERROR = -65 //参数用户姓名错误
, E_MODIFYSUB_SUBADDRESS_ERROR = -66 //参数用户地址错误
, E_MODIFYSUB_PASSWORD_ERROR = -67 //参数用户密码错误
, E_MODIFYSUB_FAIL = -68 //修改用户失败
, E_MODIFYSUB_SUB_NOT_EXIST = -69 //用户不存在
, E_ENQUIRESUB_SUBID_ERROR = -70 //参数用户号码错误
, E_ENQUIRESUB_USER_NOT_EXIST = -71 //用户不存在
, E_ENQUIRELINK_ERROR = -72 //握手失败
, E_DLVSM_GETDATA_FAILED = -73 //GETDATA失败
, E_DLVSM_DCS_ERROR = -74 //解码出错
, E_NO_RIGHT = -75 //没有权限
, E_REPLACE_UDHI_ERROR = -76 //REPLACE UDHI invalid
, E_QUERYSMDETAIL_INVLDLEN = -77 // QUERYSMDETAIL LEN INVALID
, E_DELIVER_UD_ERROR = -80
, E_DELIVER_DCS_CONVERT_ERROR = -81
, E_DELIVER_UDHI_ERROR = -82
, E_DELIVER_ORGADDR_ERROR = -83
, E_DELIVER_DESTADDR_ERROR = -84
, E_NOT_RECEIVESERVER = -90
, E_PPSCHECKTIMEOUT = -200 //PPS用户鉴权超时
, E_PPSUSERCHECKERR = -201 //PPS用户鉴权失败
, E_PPSUSERCHECKSENDERR = -202 //PPS用户鉴权发送失败
, E_PPSRESULTNOTIFYTIMEOUT = -203 //通知超时
, E_PPSRESULTNOTIFYACKERR = -204 //通知客户端返回错误
, E_PPSRESULTNOTIFYTMPERR = -205 //通知临时错误
, E_PPSRESULTNOTIFYSERIOUSERR = -206 //通知严重错误
, E_RECEIVE_BUFFER_NOT_ENOUGH = -300 //查询号码的应答缓冲不够放置号码列表
, E_POINTER_IS_NULL = -301 //传入非法空指针
, E_COUNT_TOO_BIG = -302 //传入的注册或注销个数太大
};
// End : Modifier: huanghui(41674) for 1.5d201 错误码整理:动态库的错误码为负数 Date: 2006-4-11
BOOL WINAPI IFInitInterface(
DWORD dwCodeProtocol, //编码协议
DWORD dwDriverProtocol, //通讯协议
LPCTSTR pDriverParam //通讯参数
);
int WINAPI IFSendAndAnswer(
LPVOID pSndBuf, //发送缓冲区
int SndSize, //发送缓冲区大小
LPVOID pRevBuf, //接收缓冲区
int* RevSize, //接收缓冲区大小
DWORD timeout //超时时间
);
typedef int (*LP_READ_BACK)(LPVOID pbuff,int size,HANDLE hUser);
typedef int (*LP_ERROR_BACK)(int Error,HANDLE hUser);
BOOL WINAPI IFSetOnRead(
LP_READ_BACK pReadFun, //回调函数指针
HANDLE hReadUser //回调句柄
);
BOOL WINAPI IFSetOnError(
LP_ERROR_BACK pErrorFun, //回调函数指针
HANDLE hErrorUser //回调句柄
);
BOOL WINAPI IFExitInterface();
BOOL WINAPI LoginA(
unsigned long ulBindType, //BIND类型, 0表示BIND_TRANSMITER, 1表示BIND_RECIEVER
LPCTSTR SystemID, //用户标识 char [MAX_SMEI_SYSTEMID]
LPCTSTR Password, //密码 char[MAX_SMEI_PASSWORD]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -