www.pudn.com > DmyNP_source.rar > KPhone.h, change:2004-12-02,size:8663b


/*--> 
KPhone.h, K-Phone client v1.2, 2004/6 (release) 
<--*/ 
 
#define KP_VERSION 12 
#define KP_GCLVER  12 
#define KP_GOUSTOP 0xFFFFFFFF 
#define KP_WAVE_MAPPER ((UINT)-1) 
 
#define KP_USERINFO_SIZE 420 
#define KP_INLPAGE_UNUM  20 
 
//消息: 服务器联机信息 
//参数: 16bit参数, 0,登录时投递; 1,用户请求(GOi任务)。 
//      32bit参数, kpONLINEINFO结构地址(可能为0值)。 
//警告: K#MF消息, 参见K#MF消息说明。 
#define KPNM_ONLINEINFO 21 
 
//消息: GOi任务失败 
//备注: 服务器响应超时, 无法获取服务器联机信息。 
#define KPNM_GOIFAIL 22 
 
//消息: 开始登录 
#define KPNM_LOGGINGIN 50 
 
//消息: 登录失败 
//参数: 16bit参数, 失败原因代码。 
//备注: 失败原因代码, 0,未找到服务器; 1,服务器响应超时; 13,服务器联机用户满员; 
//      14,帐号或密码错误; 15,该用户已登录;  16,帐号欠费冻结; 17,帐号暂停使用。 
#define KPNM_LOGONERROR 51 
 
//消息: 成功登录 
//参数: 32bit参数, kpLOGONINFO结构地址(可能为0值)。 
//警告: K#MF消息, 参见K#MF消息说明。 
#define KPNM_LOGON 52 
 
//消息: 离线通知 
//备注: 与服务器失去联系时投递该消息。 
#define KPNM_OFFLINE 53 
 
//消息: 初始化工作完成 
//参数: 32bit参数, 联机状态, 零,离线; 非零,在线。 
#define KPNM_START 60 
 
//消息: 空闲通知 
#define KPNM_IDLE 61 
 
//消息: 挂断电话 
//参数: 32bit参数, 调用kpHangUp函数时的参数值。 
//备注: kpHangUp函数调用成功时投递该消息。 
#define KPNM_HANGUP 62 
 
//消息: 开始呼叫 
//参数: 16bit参数, 被叫端UDP端口(network order)或零值。 
//      32bit参数, 被叫端IP地址(network order)或被叫端用户帐号。 
//备注: kpCall函数调用成功时投递该消息, 如果以地址呼叫被叫端, 16bit参数 
//      值为被叫端UDP端口,32bit参数值为被叫端的IP地址; 如果以用户帐号呼 
//      叫被叫端, 16bit参数值为零, 32bit参数值为被叫端用户帐号。 
#define KPNM_CALL 70 
 
//消息: 呼叫失败 
//参数: 16bit参数, 0或1。 
//      32bit参数, 失败原因代码。 
//备注: 当16bit参数值为0时, 32bit参数值: 0,服务器响应超时; 
//      1,被叫端响应超时; 2,握手时间超时; 53,未找到该用户。 
//      当16bit参数值为1时, 32bit参数值为对方挂断原因代码, 参见[挂断原因代码]说明。 
#define KPNM_CALLFAIL 71 
 
//消息: 询问通知 
//参数: 16bit参数, 主叫端UDP端口(network order)或零值。 
//      32bit参数, 主叫端IP地址(network order)或主叫端用户帐号。 
//备注: 当收到主叫端的呼叫信号时投递该消息。如果16bit参数值为零,则32bit参数值为主 
//      叫端用户帐号; 否则16bit参数值为主叫端的UDP端口, 32bit参数值为主叫端IP地址。 
#define KPNM_ASK 80 
 
//消息: 取消询问 
//参数: 16bit参数, 0或1。 
//      32bit参数, 取消原因代码。 
//备注: 当16bit参数值为0时, 32bit参数值: 0,用户响应超时; 1,网络故障。 
//      当16bit参数值为1时, 32bit参数值为对方挂断原因代码, 参见[挂断原因代码]说明。 
#define KPNM_ASKCANCEL 81 
 
//消息: 开始通话 
//参数: 16bit参数, MULT标志。 
//      32bit参数, 主叫端为零, 被叫端为非零。 
//备注: 进入通话状态时投递该消息。 
#define KPNM_TALK 90 
 
//消息: 通话结束 
//参数: 16bit参数, 0或1。 
//      32bit参数, 结束原因代码。 
//备注: 当16bit参数值为0时, 32bit参数值: 0,通讯异常中断; 1,因其他原因通讯被迫终止。 
//      当16bit参数值为1时, 32bit参数值为对方挂断原因代码, 参见[挂断原因代码]说明。 
#define KPNM_BUZZOFF 91 
 
//消息: 初始化WAVE设备出错 
//参数: 16bit参数, 0,WAVE输出设备; 1,WAVE输入设备。 
//      32bit参数, 音频设备错误代码。 
//备注: K-Phone在每次通话开始时初始化WAVE设备, 通话结束时释放WAVE设备。 
#define KPNM_WAVEERR 92 
 
//消息: 语音数据发送状态改变通知 
//参数: 32bit参数, 0,停止; 1,发送。 
//备注: 进入通话状态后, 语音数据开始发送或停止发送时投递该消息。该消息仅在数据发 
//      送状态转换时投递, 进入通话状态后, 语音数据发送状态默认为停止状态。是否投 
//      递该消息取决于调用kpSetup函数时kpOPT结构的Vsns成员值。 
#define KPNM_VSNS 94 
 
//消息: 频谱数值改变通知 
//参数: 16bit参数, 0,输出声音频谱; 1,输入声音频谱。 
//      32bit参数, 频谱数值, 0至16。 
//备注: 是否投递该消息取决于调用kpSetup函数时kpOPT结构的Fren成员值。 
#define KPNM_FREN 95 
 
//消息: GUi任务完成 
//参数: 32bit参数, kpGUINFO结构地址(可能为0值)。 
//警告: K#MF消息, 参见K#MF消息说明。 
#define KPNM_GUI 200 
 
//消息: GUi任务失败 
//参数: 16bit参数, 失败原因代码。 
//      32bit参数, 用户帐号。 
//备注: 失败原因代码, 1,服务器响应超时; 2,客户端响应超时; 53,未找到该用户。 
#define KPNM_GUIFAIL 201 
 
//消息: GOu任务完成 
//参数: 32bit参数, kpGOUS结构地址(可能为0值)。 
//警告: K#MF消息, 参见K#MF消息说明。 
#define KPNM_GOU 210 
 
//消息: GOu任务失败 
//参数: 16bit参数, 失败原因代码。 
//      32bit参数, 用户列表页码。 
//备注: 失败原因代码, 1,服务器响应超时; 2,非法的页码。 
#define KPNM_GOUFAIL 211 
 
#pragma pack(1) 
 
//结构: kpINIT 
typedef struct 
{ 
   WORD  wVer;        //DLL版本(KP_VERSION) 
   WORD  wInPort;     //本地UDP端口(network order) 
   HWND  hWnd;        //接收消息的窗口句柄 
   UINT  uMes;        //消息代码 
   int   iPriority;   //子线程优先级(参见Win32API函数SetThreadPriority) 
}kpINIT; 
 
//结构: kpSERVER 
typedef struct 
{ 
   DWORD dwSerIP;     //服务器IP地址(network order) 
   WORD  wSerPort;    //服务器UDP端口(network order) 
   DWORD dwInIP;      //本地IP地址(network order) 
   DWORD dwKeepTime;  //发送联机数据包的频率(微秒,10000~30000) 
   DWORD dwPID;       //用户帐号 
   BYTE  pass[20];    //用户密码(不足20个字符用0补齐) 
   BYTE  byUState;    //用户联机状态(0:隐身, !0:在线) 
}kpSERVER; 
 
//结构: kpONLINEINFO 
//备注: 版本xx.x, 例如ver=123即v12.3。 
typedef struct 
{ 
   DWORD dwMaxNum;    //联机人数上限 
   DWORD dwOnlNum;    //当前联机人数 
   BYTE  bySerVer;    //服务器版本 
   BYTE  byGClVer;    //兼容客户端版本 
   BYTE  byNewVer;    //客户端最新版本 
}kpONLINEINFO; 
 
//结构: kpLOGONINFO 
//备注: 首次登录, wLDate和wLTime为帐号注册时间, dwLastIP为0。 
//      特殊情况, 若wLDate或wLTime值为0, 则dwLastIP值无意义。 
typedef struct 
{ 
   DWORD dwPID;       //用户帐号 
   WORD  wUVID;       //客户端验证码 
   DWORD ip;          //客户端IP地址(network order) 
   WORD  port;        //客户端UDP端口(network order) 
   WORD  wLDate;      //上次登录的日期(MS-DOS格式) 
   WORD  wLTime;      //上次登录的时间(MS-DOS格式) 
   DWORD dwLastIP;    //上次登录IP地址(network order) 
}kpLOGONINFO; 
 
//结构: kpGUINFO 
typedef struct 
{ 
   DWORD dwPID;       //用户帐号 
   BYTE  byUState;    //联机状态 
   BYTE  byMult;      //MULT标志 
   char  data[420];   //用户资料 
}kpGUINFO; 
 
//结构: kpGOUS 
//备注: 在线用户信息数组st成员, 数组的实际元素个数由byNum成员指定。 
//      若某用户的数据效验错误, 则该用户结构的byError成员值为非零。 
//      应用程序应该忽略byError成员值非零的用户信息结构的结构数据。 
//      不提供隐身用户的用户帐号, 即: byUState成员值为0时dwPID成员值无意义。 
typedef struct 
{ 
   DWORD dwPage;      //用户列表页码 
   BYTE  byNum;       //用户数据个数 
}kpheGOUS; 
typedef struct 
{ 
   BYTE  byError;     //数据是否有效 
   DWORD dwPID;       //用户帐号 
   BYTE  byUState;    //联机状态 
   BYTE  byMult;      //MULT标志 
}kpinGOUS; 
typedef struct 
{ 
   kpheGOUS he; 
   kpinGOUS st[1]; 
}kpGOUS; 
 
//结构: kpUWID 
typedef struct 
{ 
   UINT uWaveOutID; 
   UINT uWaveInID; 
}kpUWID; 
 
//结构: kpCALL 
typedef struct 
{ 
   UINT  uWaveOutID; 
   UINT  uWaveInID; 
   DWORD PID; 
   DWORD ip; 
   WORD  port; 
   WORD  wUVID; 
   DWORD dwPass; 
}kpCALL; 
 
//结构: kpOPT 
typedef struct 
{ 
   BYTE  TrackOut;    //音频输出声道(0:两者, 1:左声道, 2:右声道) 
   BYTE  TrackIn;     //音频输入声道(0:两者, 1:左声道, 2:右声道) 
   BYTE  VIn;         //输入无声检测(0:禁用, 1至10:有效敏感级别) 
   BYTE  MOut;        //输出设备静音(0:否, !0:是) 
   BYTE  MIn;         //输入设备静音(0:否, !0:是) 
   BYTE  AgcOut;      //音频输出增益(0:否, !0:是) 
   BYTE  NorIn;       //输入减低杂音(0:否, !0:是) 
   BYTE  SndDelay;    //语音延迟时间(0:短, !0:长) 
   BYTE  DecpMode;    //音频解压模式(0:不容错, !0:容错) 
   BYTE  CompMode;    //音频压缩模式(0:低损伤, 1:轻损伤, 2:高损伤) 
   BYTE  Vsns;        //是否投递KPNM_VSNS消息(0:否, !0:是) 
   BYTE  Fren;        //是否投递KPNM_FREN消息(0:否, !0:是) 
}kpOPT; 
 
#pragma pack() 
 
#ifdef __cplusplus 
#define kugimport_c extern "C" __declspec(dllimport) 
#else 
#define kugimport_c __declspec(dllimport) 
#endif 
 
#ifndef _kugapi 
#define _kugapi kugimport_c 
#endif 
 
_kugapi int  WINAPI kpInit(kpINIT const *, kpSERVER const *); 
_kugapi void WINAPI kpEnd(void); 
_kugapi int  WINAPI kpMesFree(LPVOID); 
_kugapi int  WINAPI kpLstate(BYTE); 
_kugapi int  WINAPI kpSetUserinfo(void const *); 
_kugapi int  WINAPI kpGetUserinfo(DWORD); 
_kugapi int  WINAPI kpGetOnlineInfo(BOOL); 
_kugapi int  WINAPI kpGetOnlineUsers(DWORD); 
_kugapi int  WINAPI kpHangUp(BYTE); 
_kugapi int  WINAPI kpAnswer(UINT, UINT); 
_kugapi int  WINAPI kpCall(DWORD, WORD, WORD, DWORD, UINT, UINT); 
_kugapi int  WINAPI kpSetup(kpOPT const *); 
_kugapi int  WINAPI kpRestTempi(void); 
_kugapi void WINAPI kpDefmesProc(WPARAM, LPARAM);