/********************************************************************
	created:	2002/04/04
	created:	4:4:2002   16:44
	filename: 	NrClient.h
	file path:	D:\myprogram\ftProj\RockeyNet\ClientLib
	file base:	NrClient
	file ext:	h
	author:		swordhui
	
	purpose:	header file for Nrclient.dll or NrCliLib.lib.
*********************************************************************/

#pragma once

#include "windows.h"


extern "C" 
{
	DWORD WINAPI	NetRockey(WORD function, WORD *handle, DWORD *lp1, 
							   DWORD *lp2, WORD *p1, WORD *p2, WORD *p3, 
							   WORD *p4, BYTE *buffer);

	DWORD WINAPI	SetIniPathName(LPCTSTR iniName);

	DWORD WINAPI	NrGetLastError();
	DWORD WINAPI	NrGetVersion();
}




//动态调用时的接口说明

typedef DWORD (WINAPI *NETROCKEY)(WORD function, WORD *handle, DWORD *lp1, 
									 DWORD *lp2, WORD *p1, WORD *p2, WORD *p3, 
									 WORD *p4, BYTE *buffer);

typedef DWORD (WINAPI *NRSETINIPNAME)(LPCTSTR iniName);

typedef DWORD (WINAPI *NRGETLASTERROR)();
typedef DWORD (WINAPI *NRGETVERSION)();



//NetRockey常量定义
#define  RY_FIND                        1		// 找锁
#define  RY_FIND_NEXT					2		// 找下一锁
#define  RY_OPEN                        3		// 打开锁
#define  RY_CLOSE                       4		// 关闭锁
#define  RY_READ                        5		// 读锁
#define  RY_WRITE                       6		// 写锁
#define  RY_RANDOM                      7		// 产生随机数
#define  RY_SEED                        8		// 产生种子码
#define  RY_READ_USERID					10		// 读用户 ID
#define  RY_CHECK_MOUDLE		        12		// 检查模块状态
#define  RY_CALCULATE1			        14		// 计算 1
#define  RY_CALCULATE2			        15		// 计算 2
#define  RY_CALCULATE3			        16		// 计算 3
#define  RY_DECREASE			        17		// 递减模块单元
#define	 RY_IDLE						10001	//网络锁的Idle消息



//Rockey错误代码
#define  ERR_SUCCESS					0		// 没有错误
#define  ERR_NO_PARALLEL_PORT			1		// 此机没有并口
#define  ERR_NO_DRIVER					2		// 没安装驱动程序
#define  ERR_NO_ROCKEY					3		// 没有指定的NetRockey4ND锁
#define  ERR_INVALID_PASSWORD			4		// 并口上有 NetRockey4ND 锁, 但基本密码(pass1, pass2)错
#define  ERR_INVALID_PASSWORD_OR_ID 	5		// 错误的密码或硬件 ID
#define  ERR_SETID						6       // 设置硬件 ID 错
#define  ERR_INVALID_ADDR_OR_SIZE		7		// 读写地址或长度有误
#define  ERR_UNKNOWN_COMMAND        	8		// 没有此命令
#define  ERR_NOTBELEVEL3				9		// 内部错误
#define  ERR_READ						10		// 读数据错
#define  ERR_WRITE                  	11		// 写数据错
#define  ERR_RANDOM                 	12		// 随机数错
#define  ERR_SEED                   	13		// 种子码错
#define  ERR_CALCULATE              	14		// 计算错
#define  ERR_NO_OPEN					15		// 在操作前没有打开锁
#define  ERR_OPEN_OVERFLOW          	16		// 打开的锁太多(>16)
#define  ERR_NOMORE						17		// 找不到更多的锁
#define  ERR_NEED_FIND					18		// 没有 Find 直接用了 FindNext
#define  ERR_DECREASE					19		// 递减错

#define  ERR_AR_BADCOMMAND				20		// 算法指令错
#define  ERR_AR_UNKNOWN_OPCODE			21		// 算法运算符错
#define  ERR_AR_WRONGBEGIN				22		// 算法第一条指令含有常数
#define  ERR_AR_WRONG_END				23		// 算法最后一条指令含有常数
#define  ERR_AR_VALUEOVERFLOW			24		// 算法中常数值 > 63

#define  ERR_NET_LOGINAGAIN				1001	//相同的模块号在相同的进程中被打开2次
#define  ERR_NET_NETERROR				1002	//网络传输错误，用NrGetLastError()返回详细错误码.
#define	 ERR_NET_LOGIN					1003	//登录用户数已满	
#define	 ERR_NET_INVALIDHANDLE			1004	//无效的句柄，可能是此句柄已经关闭
#define	 ERR_NET_BADHARDWARE			1005	//网络锁硬件损坏
#define	 ERR_NET_REFUSE					1006	//客户端Dll被修改，拒绝提供服务。
#define	 ERR_NET_BADSERVER				1007	//服务端程序被修改，不再提供服务。

//网络错误代码
#define ERR_INIT_SOCK					2001	//初始化Winsock出错.
#define ERR_NOSUCHPROTO					2002	//没有与制定协议对应的服务.
#define ERR_UDPSOCKCREATE				2003    //UDP创建套接字失败
#define ERR_UDPSETBROADCAST				2004	//UDP设置广播失败
#define ERR_UDPBINDFAILED				2005	//UDP绑定失败
#define ERR_SVRCALLBACKNULL				2006	//服务端回调函数为空
#define ERR_TCPSOCKCREATE				2007    //TCP创建套接字失败
#define ERR_TCPBINDFAILED				2008	//TCP绑定失败
#define ERR_TCPLISTENFAILED				2009	//TCP侦听失败
#define ERR_NOSUCHSEARCH				2010	//不支持的搜索方式
#define ERR_UDPSEND						2012	//UDP发送数据失败
#define ERR_UDPTIMEOUT					2013	//UDP等待数据超时
#define ERR_UDPRECV						2014	//UDP接收数示失败
#define	ERR_TCPCONNECT					2015	//TCP连接服务器失败
#define ERR_TCPSENDTIMEOUT				2016	//TCP等待发送超时
#define	ERR_TCPSEND						2017	//TCP发送数据失败
#define ERR_TCPRECVTIMEOUT				2018	//TCP等待接收超时
#define	ERR_TCPRECV						2019	//TCP接受数据失败
#define ERR_IPXSOCKCREATE				2020    //IPX创建套接字失败
#define ERR_IPXSETBROADCAST				2021	//IPX设置广播失败
#define	ERR_IPXSEND						2022	//IPX发送数据失败
#define	ERR_IPXRECV						2023	//IPX接受数据失败
#define ERR_IPXBIND						2024	//IPX绑定端口失败
#define ERR_NBSRESET					2025	//NBS初始化信道失败
#define ERR_NBSADDNAME					2026	//NBS加入名字失败
#define ERR_NBSSEND						2027	//NBS发送失败
#define ERR_NBSRECV						2028	//NBS接受失败
	
#define  ERR_UNKNOWN					0xffff	// 未知错误
