www.pudn.com > 200311301927570.rar > 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__ 
 
#include "Funback.h" 
//#include "Drv.h" 
#include "MsgStructuredef.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 
 
 
//Linbo Add 2003-1-23 15:06:47 --> 
//Comments: ... 
#define  MAX_ADDR_LEN				(20) 
#define MAX_TIMESTAMP_LEN			(19) 
#define MAX_UD_LEN					(140) 
#define MAX_SUBMIT_TIME_LEN			(10) 
#define MAX_DONE_TIME_LEN			(10) 
#define MAX_STATE_LEN				(7) 
//Linbo Add 2003-1-23 15:06:47 <-- 
enum DLL_RETURN 
{ 
	E_SUCCESS = 0,										//成功 
 
	//IFSendAndAnswer函数的返回值 
	E_NOT_INITIALIZED,									//INTERFACE没有初始化 
	E_ACK_COMMAND_ERROR,								//回包命令字错误 
	E_NEWMEMORY_ERROR,									//分配内存错误 
	E_OTHER_ERROR,										//其他错误 
 
	E_SA_BUFF_TOOBIG,									//SEND缓冲区太大 
	E_SA_POCKET_UNINTEGRATE,							//SEND包不完整 
	E_SA_PROTOCOL_ERROR,								//协议错 
	E_SA_PROTOCOL_NO_SUPPORT,							//协议不支持该格式 
	E_SA_CODE_OTHER_ERROR,								//编码其他错误 
	E_SA_TIMEOUT,										//传送超时 
	E_SA_NO_ENOUGH_BUFFER,								//接收缓冲区不够大 
	E_SA_WAITFAILED,									//等待失败 
	E_SA_SEND_FAILED,									//发送失败 
 
	//SUBMIT函数的返回值 
	E_SUBMIT_ORGADDR_ERROR,								//源地址错误 
	E_SUBMIT_DESTADDR_ERROR,							//目的地址错误 
	E_SUBMIT_SCHEDULE_ERROR,							//参数定时时间错误 
	E_SUBMIT_EXPIRE_ERROR,								//参数超时时间错误 
	E_SUBMIT_DCS_ERROR,									//参数DCS错误 
	E_SUBMIT_DCS_CONVERT_ERROR,							//数据变换错误 
	E_SUBMIT_UDHI_ERROR,								//参数UDHI错误 
	E_SUBMIT_UD_ERROR,									//用户数据错误 
	E_SUBMIT_OVER_MO,									//超过最大提交数 
	E_SUBMIT_OVER_MT,									//超过最大下发数 
	E_SUBMIT_INVALID_USER,								//无效用户,或者用户无权 
	E_SUBMIT_INVALID_DATA_FORMAT,						//无效数据格式 
	E_SUBMIT_ADDR_ERROR,								//地址错误 
	E_SUBMIT_CREATE_MESSAGE_ERROR,						//生成短讯错误 
 
	//QuerySMStatus函数返回值 
	E_QUERYSMSTATUS_SM_NOT_EXIST,						//短讯不存在 
	E_QUERYSMSTATUS_SM_OTHER_ERR,						//查询其他错误 
	E_QUERYSMSTATUS_ADDR_ERROR,							//地址错误 
 
	//QuerySMDetail函数返回值 
	E_QUERYSMDETAIL_SM_DETAILS_ZERO,					//查询不到此 
	E_QUERYSMDETAIL_SM_DETAILS_FAIL,					//查询失败 
	E_QUERYSMDETAIL_CONVERT_ERROR,						//用户数据编码出错 
	E_QUERYSMDETAIL_LEN_ERROR,							//LEN参数出错 
	E_QUERYSMDETAIL_SM_ADDR_ERROR,						//地址错误 
 
	//CancelSM函数返回值 
	E_CANCELSM_ACK_STATUS_ERROR,						//回包的STATUS指示出错 
 
	//ReplaceSM函数返回值 
	E_REPLACESM_ORGADDR_ERROR,							//源地址错误 
	E_REPLACESM_SCHEDULE_ERROR,							//定时数据错误 
	E_REPLACESM_EXPIRE_ERROR,							//超时数据错误 
	E_REPLACESM_DCS_ERROR,								//DCS错误 
	E_REPLACESM_DCS_CONVERT_ERROR,						//用户数据编码出错 
	E_REPLACESM_UD_ERROR,								//用户数据错误 
	E_REPLACESM_SM_WORKING,								//短讯正在下发 
	E_REPLACESM_SM_ADDR_ERROR,							//短讯地址错误 
	E_REPLACESM_SM_INVALID_SOURCE_ADDR,					//无效的源地址 
	E_REPLACESM_SM_NO_SUCH_SM,							//没有指定的短讯 
	E_REPLACESM_SM_INVALID_DATA_TYPE,					//无效数据类型 
	E_REPLACESM_SM_FAIL,								//替换失败 
 
	E_QUERYSMS_DIR_ERROR,								//参数DIR错 
	E_QUERYSMS_ADDR_ERROR,								//参数用户地址错误 
	E_QUERYSMS_DATETIME_ERROR,							//参数开始时间错误 
	E_QUERYSMS_FINATIME_ERROR,							//参数结束时间错误 
	E_QUERYSMS_NUMBER_ERROR,							//参数查询条数错误 
	E_QUERYSMS_ACK_STATUS_ERROR,						//回包的STATUS指示出错 
 
	E_ADDSUB_SUBID_ERROR,								//参数用户号码错误 
	E_ADDSUB_SUBNAME_ERROR,								//参数用户姓名错误 
	E_ADDSUB_SUBADDRESS_ERROR,							//参数用户地址错误 
	E_ADDSUB_PASSWORD_ERROR,							//参数用户密码错误 
	E_ADDSUB_USER_ALREADY_EXIST,						//用户已经存在 
	E_ADDSUB_ADD_USER_FAIL,								//添加用户失败 
 
	E_DELETESUB_SUBID_ERROR,							//参数用户号码错误 
	E_DELETESUB_USER_NOT_EXIST,							//用户不存在 
	E_DELETESUB_USER_DEL_FAIL,							//删除用户失败 
 
	E_MODIFYSUB_SUBID_ERROR,							//参数用户号码错误 
	E_MODIFUSUB_SUBNAME_ERROR,							//参数用户姓名错误 
	E_MODIFYSUB_SUBADDRESS_ERROR,						//参数用户地址错误 
	E_MODIFYSUB_PASSWORD_ERROR,							//参数用户密码错误 
	E_MODIFYSUB_FAIL,									//修改用户失败 
	E_MODIFYSUB_SUB_NOT_EXIST,							//用户不存在 
 
	E_ENQUIRESUB_SUBID_ERROR,							//参数用户号码错误 
	E_ENQUIRESUB_USER_NOT_EXIST,						//用户不存在 
 
	E_ENQUIRELINK_ERROR,								//握手失败 
 
	E_DLVSM_GETDATA_FAILED,								//GETDATA失败 
	E_DLVSM_DCS_ERROR,									//解码出错 
 
	E_NO_RIGHT,											//没有权限 
 
    E_REPLACE_UDHI_ERROR,                               //REPLACE UDHI invalid 
 
    E_QUERYSMDETAIL_INVLDLEN,                           // QUERYSMDETAIL LEN INVALID 
 
    E_PPSCHECKTIMEOUT = 200, //PPS用户鉴权超时 
    E_PPSUSERCHECKERR,  //PPS用户鉴权失败 
    E_PPSUSERCHECKSENDERR, //PPS用户鉴权发送失败 
    E_PPSRESULTNOTIFYTIMEOUT, //通知超时 
    E_PPSRESULTNOTIFYACKERR,   //通知客户端返回错误 
    E_PPSRESULTNOTIFYTMPERR,   //通知临时错误 
    E_PPSRESULTNOTIFYSERIOUSERR, //通知严重错误 
 
 
}; 
/* 
enum ROUTE_RETURN 
{ 
	E_SUCCESS = 0, 
 
	//interfacemanager error code 
	E_ACCESSERR,			//接入码错误 
	E_CALLERERR,			//主叫错误			* 
	E_ACCOUNTERR,			//帐号指针不符		* 
	E_SMTYPEERR,			//SmType错误		* 
	E_NEWACCOUNTFAIL,		//生成帐号对象失败		* 
	E_ACCOUNTNAMEERR,		//帐号名错,查无此帐号	* 
	E_CODETYPEERR,			//编码类型错 
	E_CREATEIFFAIL,			//生成IF对象失败 
	E_BEYONDMAXIFNUM,		//超过INTERFACEMANAGER的最大IF数 
	E_INVALIDIFID,			//无效的IF的ID 
	E_ACCOUNTPASSWORDERR,	//帐号的密码错误 
	E_NORIGHT,				//没有权限 
	E_PIDERR,				//PID错误 
	E_INVALIDROUTETABLE,	//无效的ROUTETABLE	* 
 
	E_CANNOTFINDIF,			//通过HDRV不能找到IF * 
	E_PARAMERR,				//参数错 
	E_STATUSERR,			//状态错误 
 
	E_NEWIFERR,				//生成IF错误 
	E_NEWDRVERR,			//生成DRV错误 
 
	//routetable 
	E_INVALIDACCOUNT,		//无效的ACCOUNT		* 
 
	//account error code 
	//E_BEYONDACCOUNTMAXIFNUM, 
	E_INVALIDIF, 
	//E_ROUTEERR, 
 
	E_NOSUBMITRIGHT, 
	E_NODELIVERRIGHT, 
	E_CHECKTYPEERR,			//鉴权类型错误 
	E_NUMREPEAT,			//号段重复 
	E_NOTHISNUM,			//没有指定的号段 
 
    E_PPSCHECKTIMEOUT = 200, //PPS用户鉴权超时 
    E_PPSUSERCHECKERR,  //PPS用户鉴权失败 
    E_PPSUSERCHECKSENDERR, //PPS用户鉴权发送失败 
    E_PPSRESULTNOTIFYTIMEOUT, //通知超时 
    E_PPSRESULTNOTIFYACKERR,   //通知客户端返回错误 
    E_PPSRESULTNOTIFYTMPERR,   //通知临时错误 
    E_PPSRESULTNOTIFYSERIOUSERR, //通知严重错误 
 
}; 
*/ 
 
BOOL WINAPI IFInitInterface( 
							DWORD dwCodeProtocol,			//编码协议 
							DWORD dwDriverProtocol,			//通讯协议 
							LPCTSTR pDriverParam			//通讯参数 
							); 
 
int WINAPI IFSendAndAnswer( 
						   LPVOID pSndBuf,					//发送缓冲区 
						   int SndSize,						//发送缓冲区大小 
						   LPVOID pRevBuf,					//接收缓冲区 
						   int* RevSize,					//接收缓冲区大小 
						   DWORD timeout					//超时时间 
						   ); 
 
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] 
				   LPCTSTR system_type,			//系统类型 char[13] 
				   unsigned long ulInterface_version,		//接口类型 
				   unsigned char ucAddr_TON,				//号码类型 
				   unsigned char ucAddr_NPI,				//编码方案 
				   LPCTSTR Address_range		//地址类型 
				   ); 
 
BOOL WINAPI Login( 
				  LPCTSTR SystemID,				//用户标识 char [MAX_SMEI_SYSTEMID] 
				  LPCTSTR Password				//密码 char[MAX_SMEI_PASSWORD] 
				  ); 
 
BOOL WINAPI Login_R(LPCTSTR SystemID,			//用户标识 char [MAX_SMEI_SYSTEMID] 
					LPCTSTR Password			//密码 char[MAX_SMEI_PASSWORD] 
					); 
 
BOOL WINAPI Logout(); 
 
int WINAPI SubmitSM( 
			  unsigned char OrgTON,					//源地址号码类型 
			  unsigned char OrgNPI,					//源地址编码方案 
			  LPCTSTR OrgAddr,						//源地址 char[MAX_ADDR_LEN] 
			  unsigned char DestTON,				//目标地址号码类型 
			  unsigned char DestNPI,				//目标地址编码方案 
			  LPCTSTR DestAddr,						//目标地址 char[MAX_ADDR_LEN] 
			  unsigned char PRI,					//SM优先级 
			  unsigned char DCS,					//数据编码方案 
			  LPCTSTR Schedule,						//定时 char[MAX_TIMESTAMP_LEN] 
			  LPCTSTR Expire,						//超时时间 char[MAX_TIMESTAMP_LEN] 
			  unsigned long Default_ID,				//缺省短消息 
			  unsigned char UDHI,					//1表示UD为一个结构,0表示缺省 
			  unsigned long UDLen,					//表示UD的长度 
			  LPCTSTR UserData,						//用户信息,短消息正文 
			  unsigned long* SM_ID,					//返回:短消息ID 
			  unsigned char* FCS					//返回:失败原因 
			  ); 
 
int WINAPI VPSubmitSM( 
			  LPCTSTR OrgAddr,						//源地址 char[MAX_ADDR_LEN] 
			  LPCTSTR DestAddr,						//目标地址 char[MAX_ADDR_LEN] 
			  LPCTSTR Schedule,						//定时 char[MAX_TIMESTAMP_LEN] 
			  LPCTSTR Expire,						//超时时间 char[MAX_TIMESTAMP_LEN] 
			  unsigned long Default_ID,				//缺省短消息 
			  LPCTSTR UserData,						//用户信息,短消息正文 
			  unsigned long* SM_ID					//返回:短消息ID 
			  ); 
 
int WINAPI QuerySMStatus( 
				   unsigned long SM_ID,				//短消息ID 
				   unsigned char* OrgTON,			//返回:源地址号码类型 
				   unsigned char* OrgNPI,			//返回:源地址编码方案 
				   LPTSTR OrgAddr,					//返回:源地址 char[MAX_ADDR_LEN] 
				   unsigned char* DestTON,			//返回:目标地址号码类型 
				   unsigned char* DestNPI,			//返回:目标地址编码方案 
				   LPTSTR DestAddr,					//返回:目标地址 char[MAX_ADDR_LEN] 
				   LPTSTR Final_Date,				//返回:最后时间 char[MAX_TIMESTAMP_LEN] 
				   unsigned char* SM_Status,		//返回:短消息状态 
													//0 : WAITING_FOR_DELIVER 表示等待发送 
													//1 : DELIVER_SUCCESS 表示成功发送 
													//2 : DELIVER_FAIL 表示发送失败 
				   unsigned char* Error_Code		//返回:错误代码 
				   ); 
 
int WINAPI QuerySMDetail( 
				   unsigned long SM_ID,				//短消息ID 
				   unsigned char *OrgTON,			//返回:源地址号码类型 
				   unsigned char *OrgNPI,			//返回:源地址编码方案 
				   LPTSTR OrgAddr,					//返回:源地址 char[MAX_ADDR_LEN] 
				   unsigned char* DestTON,			//返回:目标地址号码类型 
				   unsigned char* DestNPI,			//返回:目标地址编码方案 
				   LPTSTR DestAddr,					//返回:目标地址 char[MAX_ADDR_LEN] 
				   unsigned char* PRI,				//返回:SM优先级 
				   unsigned char* DCS,				//返回:数据编码方案 
				   LPTSTR Schedule,					//返回:定时 char[MAX_TIMESTAMP_LEN] 
				   LPTSTR Expire,					//返回:超时时间 char[MAX_TIMESTAMP_LEN] 
				   LPTSTR Final,					//返回:最后时间 char[MAX_TIMESTAMP_LEN] 
				   unsigned char* SM_Status,		//返回:短消息状态, 返回值定义同QuerySMStatus. 
				   unsigned char* Error_Code,		//返回:错误代码 
				   unsigned long Len,				//接收短消息长度,User_Data的大小不能小于此数 
				   LPTSTR User_Data					//返回:短消息文本 
				   ); 
 
int WINAPI CancelSM( 
					 unsigned long SM_ID			//短消息ID 
					 ); 
 
int WINAPI ReplaceSM( 
					  unsigned long SM_ID,					//短消息ID 
					  unsigned char OrgTON,					//源地址号码类型 
					  unsigned char OrgNPI,					//源地址编码方案 
					  LPCTSTR OrgAddr,						//源地址 char[MAX_ADDR_LEN] 
					  LPCTSTR Schedule,						//定时 char[MAX_TIMESTAMP_LEN] 
					  LPCTSTR Expire,						//超时时间 char[MAX_TIMESTAMP_LEN] 
					  unsigned char DCS,					//数据编码方案 
					  unsigned long Default_ID,				//缺省短消息 
					  unsigned long UDL, 
					  LPCTSTR UserData						//用户信息,短消息正文 
					  ); 
 
int WINAPI QuerySMS( 
					unsigned char Dir,					//0:按源地址 1:按目标地址 
					unsigned char TON, 
					unsigned char NPI, 
					LPCTSTR Addr, 
					LPCTSTR DateTime,					//开始时间 
					LPCTSTR FinaTime,					//结束时间 
					unsigned char* Number,				//要查询的条数 
					unsigned char* status, 
					unsigned long* sm_id 
					); 
 
int WINAPI AddSubscriber( 
						 unsigned char TON,					//号码类型 
						 unsigned char NPI,					//编码方案 
						 LPCTSTR SubID,						//用户标识 char[MAX_ADDR_LEN] 
						 LPCTSTR SubName,					//用户姓名 char[MAX_ADDR_LEN] 
						 LPCTSTR SubAddress,				//用户(通讯)地址 char[MAX_SUB_ADDRESS] 
						 unsigned char MsType,				//手机类型 
						 unsigned long Service,				//服务级别(未定义) 
						 unsigned char bSM,					//是否提供短消息服务 
						 unsigned long OCOS,				//最大下发数 
						 unsigned long TCOS,				//最大提交数 
						 unsigned short Reserve,			//保留 
						 LPCTSTR Password					//密码 char [MAX_PASSWORD] 
						 ); 
 
int WINAPI DeleteSubscriber( 
							LPCTSTR SubID					//用户标识 char[MAX_ADDR_LEN] 
							); 
 
int WINAPI ModifySubscriber( 
						 unsigned char TON,					//号码类型 
						 unsigned char NPI,					//编码方案 
						 LPCTSTR SubID,						//用户标识 char[MAX_ADDR_LEN] 
						 LPCTSTR SubName,					//用户姓名 char[MAX_ADDR_LEN] 
						 LPCTSTR SubAddress,				//用户地址 char[MAX_SUB_ADDRESS] 
						 unsigned char MsType,				//手机类型 
						 unsigned long Service,				//服务级别 
						 unsigned char bSM,					//是否提供短消息服务 
						 unsigned long OCOS,				//最大下发数 
						 unsigned long TCOS,				//最大提交数 
						 LPCTSTR Password					//密码 char [MAX_PASSWORD] 
						 ); 
 
int WINAPI EnquireSubscriber( 
							 LPCTSTR SubID,						//用户标识 
							 unsigned char* TON,				//返回:号码类型 
							 unsigned char* NPI,				//返回:编码方案 
							 LPTSTR SubName,					//返回:用户姓名 char[MAX_ADDR_LEN] 
							 LPTSTR SubAddress,					//返回:用户地址 char[MAX_SUB_ADDRESS] 
							 unsigned long* Service,			//返回:服务级别 
							 unsigned char* bSM,				//返回:是否提供短消息服务 
							 unsigned long* OCOS,				//返回:最大下发数 
							 unsigned long* TCOS,				//返回:最大提交数 
							 LPTSTR Password					//返回:密码 char [MAX_PASSWORD] 
							 ); 
 
int WINAPI EnquireLink(); 
 
int WINAPI HasDeliverMessage( 
							 DWORD dwTimeOut					//超时时间,单位毫秒 
							 ); 
 
int WINAPI GetDeliverSM( 
						ULONG* sm_ID,							//返回:短讯ID 
						unsigned char* DestTON,					//返回:目标地址号码类型 
						unsigned char* DestNPI,					//返回:目标地址编码方案 
						char* DestAddr,							//返回:目标地址 
						unsigned char* OrgTON,					//返回:源地址号码类型 
						unsigned char* OrgNPI,					//返回:源地址编码方案 
						char* OrgAddr,							//返回:源地址 
						unsigned char* PRI,						//返回:优先权 
						unsigned char* PID,						//返回:协议类型 
						unsigned char* DCS,						//返回:编码方案 
						char* TimeStamp,						//返回:下发时间 
						char* UserData							//返回:用户数据 
						); 
 
int WINAPI VPModifySubPassword( 
					   LPCTSTR SubID,					//用户标识 char[MAX_ADDR_LEN] 
					   LPCTSTR Password					//密码 char [MAX_PASSWORD] 
					   ); 
 
int WINAPI GetErrorString( 
						  int iErrorNum,				//错误代码 
						  int iBuffSize,				//缓冲区大小 
						  char* lpszBuff				//缓冲区指针 
						  ); 
 
int WINAPI GetSMStatusString( 
                             DWORD dwStatus,            // 状态值 
                             int iBuffLen,              // 缓冲区大小 
                             char* lpszBuff             // 缓冲区指针 
                             ); 
 
int WINAPI SubmitA( 
			  unsigned char OrgTON,					//源地址号码类型 
			  unsigned char OrgNPI,					//源地址编码方案 
			  LPCTSTR OrgAddr,						//源地址 char[MAX_ADDR_LEN] 
			  unsigned char DestTON,				//目标地址号码类型 
			  unsigned char DestNPI,				//目标地址编码方案 
			  LPCTSTR DestAddr,						//目标地址 char[MAX_ADDR_LEN] 
			  unsigned char PRI,					//SM优先级 
			  unsigned char RD,						//当源地址和目的地址相同时,是否替换存在的短消息。 
			  unsigned char RP,						//回应路径 
			  unsigned char SRR,					//是否需要状态报告 
			  unsigned char MR,						//消息索引 
			  unsigned char DCS,					//数据编码方案 
			  unsigned char PID,					//协议类型 
			  LPCTSTR Schedule,						//定时 char[MAX_TIMESTAMP_LEN] 
			  LPCTSTR Expire,						//超时时间 char[MAX_TIMESTAMP_LEN] 
			  unsigned long Default_ID,				//缺省短消息 
			  unsigned char UDHI,					//1表示UD为一个结构,0表示缺省 
			  unsigned long UDLen,					//表示UD的长度 
			  LPCTSTR UserData,						//用户信息,短消息正文 
			  unsigned long* SM_ID,					//返回:短消息ID 
			  unsigned char* FCS					//返回:失败原因 
			  ); 
//by ycl 2001.7.9 新增业务子类型 
int WINAPI SubmitAEx( 
			  unsigned char OrgTON,					//源地址号码类型 
			  unsigned char OrgNPI,					//源地址编码方案 
			  LPCTSTR OrgAddr,						//源地址 char[MAX_ADDR_LEN] 
			  unsigned char DestTON,				//目标地址号码类型 
			  unsigned char DestNPI,				//目标地址编码方案 
			  LPCTSTR DestAddr,						//目标地址 char[MAX_ADDR_LEN] 
			  unsigned char PRI,					//SM优先级 
			  unsigned char RD,						//当源地址和目的地址相同时,是否替换存在的短消息。 
			  unsigned char RP,						//回应路径 
			  unsigned char SRR,					//是否需要状态报告 
			  unsigned char MR,						//消息索引 
			  unsigned char DCS,					//数据编码方案 
			  unsigned char PID,					//协议类型 
			  LPCTSTR Schedule,						//定时 char[MAX_TIMESTAMP_LEN] 
			  LPCTSTR Expire,						//超时时间 char[MAX_TIMESTAMP_LEN] 
			  unsigned long Default_ID,				//缺省短消息 
			  unsigned char UDHI,					//1表示UD为一个结构,0表示缺省 
			  unsigned long UDLen,					//表示UD的长度 
			  LPCTSTR UserData,						//用户信息,短消息正文 
			  LPCTSTR sServiceType,                 //业务子类型 by ycl 2001.7.9 
			  unsigned long* SM_ID,					//返回:短消息ID 
			  unsigned char* FCS					//返回:失败原因 
			  ); 
//nd by ycl 
 
//by ycl 2001.9.26新增CMPP的计费字段 
int WINAPI SubmitAExEx( 
			  unsigned char OrgTON,					//源地址号码类型 
			  unsigned char OrgNPI,					//源地址编码方案 
			  LPCTSTR OrgAddr,						//源地址 char[MAX_ADDR_LEN] 
			  unsigned char DestTON,				//目标地址号码类型 
			  unsigned char DestNPI,				//目标地址编码方案 
			  LPCTSTR DestAddr,/*update*/           //最多支持100个目的地址 
			  unsigned char PRI,					//SM优先级 
			  unsigned char RD,						//当源地址和目的地址相同时,是否替换存在的短消息。 
			  unsigned char RP,						//回应路径 
			  unsigned char SRR,					//是否需要状态报告 
			  unsigned char MR,						//消息索引 
			  unsigned char DCS,					//数据编码方案 
			  unsigned char PID,					//协议类型 
			  LPCTSTR Schedule,						//定时 char[MAX_TIMESTAMP_LEN] 
			  LPCTSTR Expire,						//超时时间 char[MAX_TIMESTAMP_LEN] 
			  unsigned long Default_ID,				//缺省短消息 
			  unsigned char UDHI,					//1表示UD为一个结构,0表示缺省 
			  unsigned long UDLen,					//表示UD的长度 
			  LPCTSTR UserData,						//用户信息,短消息正文 
			  LPCTSTR sServiceType,                 //业务子类型 by ycl 2001.7.9 
			  unsigned char* byMsgID,/*new*/        //MAX_MSG_ID,CMPP的字段,消息ID 
			  unsigned char byPKTotal,/*new*/                  //相同Msg_id的消息总条数,从1开始 
		  	  unsigned char byPKNumber,/*new*/                 //相同Msg_id的消息序号,从1开始 
			  unsigned char byMsglevel,/*new*/                 //信息级别 
			  unsigned char byFeeUserType,/*new*/              //计费用户类型字段,0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效			   
			  LPCTSTR sSPID,/*new*/                 //MAX_SPID_LEN,信息内容来源 
			  LPCTSTR sFeeType,/*new*/              //MAX_FEE_TYPE_LEN,资费类别 
			  LPCTSTR sFeeAddr,/*new*/              //MAX_ADDR_LEN,被计费用户地址 
			  LPCTSTR sFeeCode,/*new*/              //MAX_FEE_CODE_LEN,资费代码 
			  unsigned char byUserNum,/*new*/                  //接收消息的用户数量 
			  LPCTSTR sDestAddrs,/*new*/      //目的地址,最多100个 
			  unsigned long* SM_ID,					//返回:短消息ID 
			  unsigned char* FCS					//返回:失败原因 
			  ); 
//end by ycl 
int WINAPI VPSubmitA( 
			  LPCTSTR OrgAddr,						//源地址 char[MAX_ADDR_LEN] 
			  LPCTSTR DestAddr,						//目标地址 char[MAX_ADDR_LEN] 
			  unsigned char PID,					//协议类型 
			  unsigned char DCS,					//编码方案 
			  LPCTSTR Schedule,						//定时 char[MAX_TIMESTAMP_LEN] 
			  LPCTSTR Expire,						//超时时间 char[MAX_TIMESTAMP_LEN] 
			  unsigned long Default_ID,				//缺省短消息 
			  LPCTSTR UserData,						//用户信息,短消息正文 
			  unsigned long* SM_ID					//返回:短消息ID 
			  ); 
 
int  WINAPI GSMConvertTextToData( 
				LPCSTR pString,						//需要变换的源字符串指针 
				unsigned char nDCS,					//指定变换的编码方案 
				unsigned char* pData,				//接收缓冲区指针 
				unsigned long* nLen					//用户数据的大小的指针,此是SUBMIT中UDL字段的长度,不是字节长度 
				); 
 
int  WINAPI GSMConvertDataToText( 
				unsigned char* pData,				//编码后的数据 
				unsigned long nLen,					//编码数据的实际大小,此项为协议的UDL项。 
				unsigned char nDCS,					//编码数据的编码方案 
				unsigned char nUDHI,				//协议的UDHI项,是否有结构头。 
				char* pString						//解码的字符串缓冲区指针 
				); 
 
int WINAPI QuerySubscriber( 
					 LPCTSTR SubID,						//用户标识 
					 unsigned char* TON,				//返回:号码类型 
					 unsigned char* NPI,				//返回:编码方案 
					 LPTSTR SubName,					//返回:用户姓名 char[MAX_ADDR_LEN] 
					 LPTSTR SubAddress,					//返回:用户地址 char[MAX_SUB_ADDRESS] 
					 unsigned char* MsType,				//返回:手机类型 
					 unsigned long* Service,			//返回:服务级别 
					 unsigned char* bSM,				//返回:是否提供短消息服务 
					 unsigned long* OCOS,				//返回:最大下发数 
					 unsigned long* TCOS,				//返回:最大提交数 
					 LPTSTR Password,					//返回:密码 char [MAX_PASSWORD] 
					 LPTSTR RegTime						//返回:注册时间 char[20] 
					 ); 
 
int WINAPI QuerySMStatusA( 
						unsigned long SM_ID,			//短消息ID 
						unsigned char OrgTON,			//源地址号码类型 
						unsigned char OrgNPI,			//源地址编码方案 
						LPCTSTR OrgAddr,				//源地址 char[MAX_ADDR_LEN] 
						unsigned char* DestTON,			//返回:目标地址号码类型 
						unsigned char* DestNPI,			//返回:目标地址编码方案 
						LPTSTR DestAddr,				//返回:目标地址 char[MAX_ADDR_LEN] 
						LPTSTR Final_date,				//返回:最后时间 char[MAX_TIMESTAMP_LEN] 
						unsigned char* SM_Status,		//返回:短消息状态 
														//0 : WAITING_FOR_DELIVER 表示等待发送 
														//1 : DELIVER_SUCCESS 表示成功发送 
														//2 : DELIVER_FAIL 表示发送失败 
						unsigned char* Error_Code		//返回:错误代码 
						); 
 
int WINAPI CancelSMA( 
					char cService_type,					//参见GSM3.39说明 
					unsigned long SM_ID,				//短消息ID 
					unsigned char OrgTON,				//源地址号码类型 
					unsigned char OrgNPI,				//源地址编码方案 
					LPCTSTR OrgAddr,					//源地址 char[MAX_ADDR_LEN] 
					unsigned char DestTON,				//目标地址号码类型 
					unsigned char DestNPI,				//目标地址编码方案 
					LPCTSTR DestAddr					//目标地址 char[MAX_ADDR_LEN] 
					); 
 
int WINAPI ReplaceSMEx( 
                       unsigned long SM_ID, 
                       unsigned char OrgTON, 
                       unsigned char OrgNPI, 
                       LPCTSTR OrgAddr, 
                       LPCTSTR Schedule, 
                       LPCTSTR Expire, 
                       unsigned char SRR, 
                       unsigned char DCS, 
                       unsigned char UDHI, 
                       unsigned long Default_ID, 
                       unsigned long UDLen, 
                       LPCTSTR UserData 
                       ); 
 
int WINAPI QuerySMDetailEx( 
                           unsigned long SM_ID, 
                           unsigned char* OrgTON, 
                           unsigned char* OrgNPI, 
                           LPTSTR OrgAddr, 
                           unsigned char* DestTON, 
                           unsigned char* DestNPI, 
                           LPTSTR DestAddr, 
                           unsigned char* PRI, 
                           unsigned char* RD, 
                           unsigned char* RP, 
                           unsigned char* UDHI, 
                           unsigned char* SRR, 
                           unsigned char* MR, 
                           unsigned char* PID, 
                           unsigned char* DCS, 
                           LPTSTR Schedule, 
                           LPTSTR Expire, 
                           LPTSTR Final, 
                           unsigned char* SM_Status, 
                           unsigned char* Error_Code, 
                           unsigned long* Len, 
                           LPTSTR User_Data 
                           ); 
 
int WINAPI GetDeliverSMEx( 
						ULONG* sm_ID,							//返回:短讯ID 
						unsigned char* DestTON,					//返回:目标地址号码类型 
						unsigned char* DestNPI,					//返回:目标地址编码方案 
						char* DestAddr,							//返回:目标地址 
						unsigned char* OrgTON,					//返回:源地址号码类型 
						unsigned char* OrgNPI,					//返回:源地址编码方案 
						char* OrgAddr,							//返回:源地址 
						unsigned char* PRI,						//返回:优先权 
                        unsigned char* RP, 
                        unsigned char* UDHI, 
						unsigned char* PID,						//返回:协议类型 
						unsigned char* DCS,						//返回:编码方案 
						char* TimeStamp,						//返回:下发时间 
                        unsigned long * UDLen, 
						char* UserData							//返回:用户数据 
						); 
//2000.12.12 钟朝东增加状态功能 
int WINAPI GetDeliverSMExEx( 
						ULONG* sm_ID,							//返回:短讯ID 
						unsigned char* DestTON,					//返回:目标地址号码类型 
						unsigned char* DestNPI,					//返回:目标地址编码方案 
						char* DestAddr,							//返回:目标地址 
						unsigned char* OrgTON,					//返回:源地址号码类型 
						unsigned char* OrgNPI,					//返回:源地址编码方案 
						char* OrgAddr,							//返回:源地址 
						unsigned char* PRI,						//返回:优先权 
                        unsigned char* RP, 
                        unsigned char* UDHI, 
						unsigned char* PID,						//返回:协议类型 
						unsigned char* DCS,						//返回:编码方案 
						char* TimeStamp,						//返回:下发时间 
                        unsigned long * UDLen, 
						char* UserData,							//返回:用户数据 
                        unsigned char* StatusReport 
						); 
 
//add by ycl 2001.12.8 
int WINAPI QueryCmppStatus(LPCTSTR sBeginTime,  
						   LPCTSTR sServiceID, 
						   unsigned char byQueryType,  
		                   unsigned long nMTTLMsg, 
						   unsigned long m_nMTTLusr, 
						   unsigned long m_nMTScs, 
						   unsigned long m_nMTWT, 
						   unsigned long m_nMTFL, 
						   unsigned long m_nMOScs, 
						   unsigned long m_nMOWT, 
						   unsigned long m_nMOFL); 
// 
 
int WINAPI CancelCmppSM(char* byMsgID, unsigned char* byRet); 
 
//返回的消息内容以状态报告的结构出现增加结构如果为状态报告返回MsgID及stat 
//deliver消息不返回这两个字段 
int WINAPI GetDeliverSMExExEx( 
						ULONG* sm_ID,							//返回:短讯ID 
						unsigned char* DestTON,					//返回:目标地址号码类型 
						unsigned char* DestNPI,					//返回:目标地址编码方案 
						char* DestAddr,							//返回:目标地址 
						unsigned char* OrgTON,					//返回:源地址号码类型 
						unsigned char* OrgNPI,					//返回:源地址编码方案 
						char* OrgAddr,							//返回:源地址 
						unsigned char* PRI,						//返回:优先权 
                        unsigned char* RP, 
                        unsigned char* UDHI, 
						unsigned char* PID,						//返回:协议类型 
						unsigned char* DCS,						//返回:编码方案 
						char* TimeStamp,						//返回:下发时间 
                        unsigned long * UDLen, 
						char* UserData,							//返回:用户数据 
                        unsigned char* StatusReport, 
						unsigned char* sMsgID, 
						char* sSubmitdate, 
						char* sDonedate, 
						char* sStatus 
						); 
 
int WINAPI DivideMsgOnConfig(unsigned char &iCount, //返回需要发送的次数 
		                     unsigned char byDCS,   //编码格式 
					         unsigned long &NMsgLength,//消息总长度 
					         unsigned char &RealMsgLength,//消息实际长度 
					         char *SMsgContent,    //处理后的消息内容 
					         char *MsgContent);    //消息内容 
 
int WINAPI InitSMGPAPI(char* SiniFile);//配置文件名 
 
int WINAPI SMGPSendSingle(int NneedReply, 
						  int NMsgLever, 
						  char* SserviceID, 
						  int NMsgFormat, 
						  char* SfeeType, 
						  char* SfeeCode, 
						  char* SvalidTime, 
						  char* SatTime, 
						  char* SchargeTermID, 
						  char* SdestTermID, 
						  char* SreplyPath, 
						  int NMsgLen, 
						  char* SMsgContent, 
						  char* SmsgID, 
						  int &NerrorCode); 
 
int WINAPI SMGPSendBatch(int NneedReply, 
						 int NMsgLever, 
						 char* SserviceID, 
						 int NMsgFormat, 
						 char* SfeeType, 
						 char* SfeeCode, 
						 char* SvalidTime, 
						 char* SatTime,//有效时间 
						 char* SchargeTermID,//计费地址 
						 char* SdestTermIDFile,//地址文件名 
						 char* SMsgFile,//消息内容文件名 
						 char* SmsgIDFile);//MsgID文件名 
 
int WINAPI GetSendBatchResp(char* SmsgIDFile,//MsgID文件名 
							int Npos,//位置 
							SendBatchResp* PsendBatchResp);//Msgid在文件中存放的结构 
 
int WINAPI SMGPDeliver(int Ntimeout, //超时时间 
					   DeliverResp* PdeliverResp);//deliver消息结构 
 
int WINAPI CMMPActiveTest(int &NerrorCode);//错误码 
#endif