// ClientApi.h: interface for the USSD API routines.
//
#ifndef __CLIENT_API
#define __CLIENT_API#define MAX_MSISDN_LENGTH 20
#define MAX_SERVICECODE_LENGTH 3
#define MAX_USSDSTRING_LENGTH 181#define UT_REQUEST 1 // Request.
#define UT_NOTIFY 2 // Notify.
#define UT_RESPONSE 3 // Response.
#define UT_RELEASE 4 // Release.#define UV_UNKNOWN 0x00 // 未知.
#define UV_PHASE_I 0x10 // Phase I (只能由移动台发起)
#define UV_PHASE_II 0x20 // Phase II
#define UV_PHASE_II_PLUS 0x25 // Phase II+#define INVALID_INSTANCE_HANDLE ((HANDLE)-1)struct TUssdSwitchInfo //业务转移信息
{
BYTE m_bSwitchMode;
char m_szMsIsdn[MAX_MSISDN_LENGTH + 1];
char m_szServiceCode[MAX_SERVICECODE_LENGTH + 1];
char m_szUssdString[MAX_USSDSTRING_LENGTH + 1];
};struct TUssdChargeIndInfo //计费指示信息
{
DWORD m_dwChargeRatio;
DWORD m_dwChargeType;
char m_szChargeSource[MAX_MSISDN_LENGTH + 1];
BYTE m_bChargeLocation;
};struct TUssdData
{
DWORD m_dwUssdCmd; // USSD会话操作类型(Request、Response、Abort、Error)
BYTE m_bUssdVersion; // USSD会话版本号(Phase I、Phase II、Phase II+)
BYTE m_bCodeScheme; //编码方案
DWORD m_dwErrorCode; // USSD错误代码(仅对UssdAbort和UssdError)
char m_szMsIsdn[MAX_MSISDN_LENGTH + 1]; // 移动台号码.
char m_szServiceCode[MAX_SERVICECODE_LENGTH + 1]; // 业务码.
char m_szUssdString[MAX_USSDSTRING_LENGTH + 1]; // USSD串内容。
DWORD m_dwUssdAppParam; // USSD业务应用程序自定义的参数。
};//-----------------------------------------------------------------------------
// CallBack Functions For GetMessage
//------------------------------------------------------------------------------
typedef int (*LPONUSSDREQUEST)(HANDLE hLoginInstance, HANDLE hUssdDialog,
TUssdData UssdData, DWORD *pdwUssdAppParam);
typedef int (*LPONUSSDRESPONSE)(HANDLE hLoginInstance, HANDLE hUssdDialog,
char szUssdString[], DWORD dwUssdAppParam);
typedef int (*LPONUSSDABORT)(HANDLE hLoginInstance, HANDLE hUssdDialog,
DWORD dwErrorCode, DWORD dwUssdAppParam);
typedef int (*LPONUSSDTIMEOUT)(HANDLE hLoginInstance, HANDLE hUssdDialog,
DWORD dwUssdAppParam);
typedef int (*LPONUSSDCHGACK)(HANDLE hLoginInstance, HANDLE hUssdDialog,
DWORD dwErrorCode, DWORD dwUssdAppParam);
struct TUssdCallbacks
{
LPONUSSDREQUEST m_pOnUssdRequest;
LPONUSSDRESPONSE m_pOnUssdResponse;
LPONUSSDABORT m_pOnUssdAbort;
LPONUSSDTIMEOUT m_pOnUssdTimeOut;
LPONUSSDCHGACK m_pOnUssdChgAck;
};extern "C"
{
int PASCAL EXPORT UssdInit(char szServerAddress[],int nServicePort);
int PASCAL EXPORT UssdExit();
HANDLE PASCAL EXPORT UssdLogin(char szAccountName[],char szPassword[],int *pnErrorCode,BOOL fAutoConnect,DWORD dwTimeOut);
BOOL PASCAL EXPORT UssdLogout(HANDLE hLoginInstance,int *pnErrorCode);
BOOL PASCAL EXPORT UssdIsConnectionOK(HANDLE hLoginInstance);
void PASCAL EXPORT UssdGetErrorString(int nErrorCode,char *pszErrorString);
BOOL PASCAL EXPORT UssdReloadErrorInfoLib();
HANDLE PASCAL EXPORT UssdLocalOpen(HANDLE hLoginInstance, DWORD dwUssdAppParam, DWORD *pdwErrorCode);
BOOL PASCAL EXPORT UssdLocalClose(HANDLE hUssdDialog);
int PASCAL EXPORT UssdSendRequest(HANDLE hUssdDialog, TUssdData UssdData);
int PASCAL EXPORT UssdSendNotify(HANDLE hUssdDialog, TUssdData UssdData);
int PASCAL EXPORT UssdSendResponse(HANDLE hUssdDialog, TUssdData UssdData);
int PASCAL EXPORT UssdSendRelease(HANDLE hUssdDialog);
int PASCAL EXPORT UssdSendAbort(HANDLE hUssdDialog, DWORD dwErrorCode);
int PASCAL EXPORT UssdSendSwitch(HANDLE hUssdDialog, TUssdSwitchInfo SwitchInfo);
int PASCAL EXPORT UssdSendChargeInd(HANDLE hUssdDialog, TUssdChargeIndInfo ChargeIndInfo);
int PASCAL EXPORT RegisterUssdCallbackFunctions(TUssdCallbacks CallbackFuncs);
};#endif // __CLIENT_API defined.
//
#ifndef __CLIENT_API
#define __CLIENT_API#define MAX_MSISDN_LENGTH 20
#define MAX_SERVICECODE_LENGTH 3
#define MAX_USSDSTRING_LENGTH 181#define UT_REQUEST 1 // Request.
#define UT_NOTIFY 2 // Notify.
#define UT_RESPONSE 3 // Response.
#define UT_RELEASE 4 // Release.#define UV_UNKNOWN 0x00 // 未知.
#define UV_PHASE_I 0x10 // Phase I (只能由移动台发起)
#define UV_PHASE_II 0x20 // Phase II
#define UV_PHASE_II_PLUS 0x25 // Phase II+#define INVALID_INSTANCE_HANDLE ((HANDLE)-1)struct TUssdSwitchInfo //业务转移信息
{
BYTE m_bSwitchMode;
char m_szMsIsdn[MAX_MSISDN_LENGTH + 1];
char m_szServiceCode[MAX_SERVICECODE_LENGTH + 1];
char m_szUssdString[MAX_USSDSTRING_LENGTH + 1];
};struct TUssdChargeIndInfo //计费指示信息
{
DWORD m_dwChargeRatio;
DWORD m_dwChargeType;
char m_szChargeSource[MAX_MSISDN_LENGTH + 1];
BYTE m_bChargeLocation;
};struct TUssdData
{
DWORD m_dwUssdCmd; // USSD会话操作类型(Request、Response、Abort、Error)
BYTE m_bUssdVersion; // USSD会话版本号(Phase I、Phase II、Phase II+)
BYTE m_bCodeScheme; //编码方案
DWORD m_dwErrorCode; // USSD错误代码(仅对UssdAbort和UssdError)
char m_szMsIsdn[MAX_MSISDN_LENGTH + 1]; // 移动台号码.
char m_szServiceCode[MAX_SERVICECODE_LENGTH + 1]; // 业务码.
char m_szUssdString[MAX_USSDSTRING_LENGTH + 1]; // USSD串内容。
DWORD m_dwUssdAppParam; // USSD业务应用程序自定义的参数。
};//-----------------------------------------------------------------------------
// CallBack Functions For GetMessage
//------------------------------------------------------------------------------
typedef int (*LPONUSSDREQUEST)(HANDLE hLoginInstance, HANDLE hUssdDialog,
TUssdData UssdData, DWORD *pdwUssdAppParam);
typedef int (*LPONUSSDRESPONSE)(HANDLE hLoginInstance, HANDLE hUssdDialog,
char szUssdString[], DWORD dwUssdAppParam);
typedef int (*LPONUSSDABORT)(HANDLE hLoginInstance, HANDLE hUssdDialog,
DWORD dwErrorCode, DWORD dwUssdAppParam);
typedef int (*LPONUSSDTIMEOUT)(HANDLE hLoginInstance, HANDLE hUssdDialog,
DWORD dwUssdAppParam);
typedef int (*LPONUSSDCHGACK)(HANDLE hLoginInstance, HANDLE hUssdDialog,
DWORD dwErrorCode, DWORD dwUssdAppParam);
struct TUssdCallbacks
{
LPONUSSDREQUEST m_pOnUssdRequest;
LPONUSSDRESPONSE m_pOnUssdResponse;
LPONUSSDABORT m_pOnUssdAbort;
LPONUSSDTIMEOUT m_pOnUssdTimeOut;
LPONUSSDCHGACK m_pOnUssdChgAck;
};extern "C"
{
int PASCAL EXPORT UssdInit(char szServerAddress[],int nServicePort);
int PASCAL EXPORT UssdExit();
HANDLE PASCAL EXPORT UssdLogin(char szAccountName[],char szPassword[],int *pnErrorCode,BOOL fAutoConnect,DWORD dwTimeOut);
BOOL PASCAL EXPORT UssdLogout(HANDLE hLoginInstance,int *pnErrorCode);
BOOL PASCAL EXPORT UssdIsConnectionOK(HANDLE hLoginInstance);
void PASCAL EXPORT UssdGetErrorString(int nErrorCode,char *pszErrorString);
BOOL PASCAL EXPORT UssdReloadErrorInfoLib();
HANDLE PASCAL EXPORT UssdLocalOpen(HANDLE hLoginInstance, DWORD dwUssdAppParam, DWORD *pdwErrorCode);
BOOL PASCAL EXPORT UssdLocalClose(HANDLE hUssdDialog);
int PASCAL EXPORT UssdSendRequest(HANDLE hUssdDialog, TUssdData UssdData);
int PASCAL EXPORT UssdSendNotify(HANDLE hUssdDialog, TUssdData UssdData);
int PASCAL EXPORT UssdSendResponse(HANDLE hUssdDialog, TUssdData UssdData);
int PASCAL EXPORT UssdSendRelease(HANDLE hUssdDialog);
int PASCAL EXPORT UssdSendAbort(HANDLE hUssdDialog, DWORD dwErrorCode);
int PASCAL EXPORT UssdSendSwitch(HANDLE hUssdDialog, TUssdSwitchInfo SwitchInfo);
int PASCAL EXPORT UssdSendChargeInd(HANDLE hUssdDialog, TUssdChargeIndInfo ChargeIndInfo);
int PASCAL EXPORT RegisterUssdCallbackFunctions(TUssdCallbacks CallbackFuncs);
};#endif // __CLIENT_API defined.
------------------------------------------------------------
1......
#define MAX_MSISDN_LENGTH 20
变成
const
MAX_MSISDN_LENGTH=20;2........
struct TUssdSwitchInfo //业务转移信息
{
BYTE m_bSwitchMode;
char m_szMsIsdn[MAX_MSISDN_LENGTH + 1];
char m_szServiceCode[MAX_SERVICECODE_LENGTH + 1];
char m_szUssdString[MAX_USSDSTRING_LENGTH + 1];
};
变成
TUssdSwitchInfo=packed record
m_bSwitchMode :BYTE;
m_szMsIsdn :array[0..MAX_MSISDN_LENGTH] of char;
m_szServiceCode:array[0..MAX_SERVICECODE_LENGTH]of char;
m_szUssdString :array[0..MAX_USSDSTRING_LENGTH] of char;
end;
TUssdData UssdData, DWORD *pdwUssdAppParam);TYPE
LPONUSSDREQUEST=function(hLoginInstance:THandle;hUssdDialog:THandle;
UssdData:TUssdData;var dwUssdAppParam:DWORD);
建议一下,最少应该把Delphi中不支持的类型全换成支持的类型
//-----------------------------------------------------------------------------
// CallBack Functions For GetMessage
//------------------------------------------------------------------------------
typedef int (*LPONUSSDREQUEST)(HANDLE hLoginInstance, HANDLE hUssdDialog,
TUssdData UssdData, DWORD *pdwUssdAppParam);
typedef int (*LPONUSSDRESPONSE)(HANDLE hLoginInstance, HANDLE hUssdDialog,
char szUssdString[], DWORD dwUssdAppParam);
typedef int (*LPONUSSDABORT)(HANDLE hLoginInstance, HANDLE hUssdDialog,
DWORD dwErrorCode, DWORD dwUssdAppParam);
typedef int (*LPONUSSDTIMEOUT)(HANDLE hLoginInstance, HANDLE hUssdDialog,
DWORD dwUssdAppParam);
typedef int (*LPONUSSDCHGACK)(HANDLE hLoginInstance, HANDLE hUssdDialog,
DWORD dwErrorCode, DWORD dwUssdAppParam);
struct TUssdCallbacks
{
LPONUSSDREQUEST m_pOnUssdRequest;
LPONUSSDRESPONSE m_pOnUssdResponse;
LPONUSSDABORT m_pOnUssdAbort;
LPONUSSDTIMEOUT m_pOnUssdTimeOut;
LPONUSSDCHGACK m_pOnUssdChgAck;
};