=================================================
NetRy4 Interface for VB.Net
=================================================

1.Register NetRy4Com.dll. (using Regsvr32.exe, or call routines in NetRy4Com.dll).
2.Create a VB.Net project by VS.Net, Select Reference in Solution,then click Com, select "NetRockey4 Classlibrary for .Net",Add the reference of Ry4Com.dll to project.

3.Add below enums to your program. (Caution: The return code of NetRy4COM is NOT same as NetRockey4 API. The rule of new return code is : HIWORD is 0x8030,LOWORD is return code of NetRockey4 API).

'NetROCKEY4 Commands.
    Enum Ry4CMD As Short
        RY_FIND = 1             'Find Rockey4.
        RY_FIND_NEXT            'Find next Rockey4.
        RY_OPEN                 'Open 
        RY_CLOSE                'Close
        RY_READ                 'Read UDZ
        RY_WRITE                'Write UDZ
        RY_RANDOM               'Random
        RY_SEED                 'Seed code		
        RY_READ_USERID = 10     'Read UID		
        RY_CHECK_MODULE = 12    'Check module status		
        RY_CALCULATE1 = 14      'Calculate 1
        RY_CALCULATE2           'Calculate 2
        RY_CALCULATE3           'Calculate 3
        RY_DECREASE             'Decrease
    End Enum


'ROCKEY4 type definations
    Enum RY4TYPE As Integer
        TYPE_ROCKEY4 = 1        'Normal Ry4.
        TYPE_ROCKEY4Plus        'Ry4Plus.
        TYPE_ROCKEYUSB          'Ry4 USB.
        TYPE_ROCKEYUSBPlus      'Ry4 USB Plus
        TYPE_ROCKEYNET          'NetRy4
        TYPE_ROCKEYUSBNET       'NetRy4 USB.
    End Enum


	
'NetROCKEY4 Result definations.
    Public Enum Ry4Result As Integer
        ERR_SUCCESS = &H0                       'No error.
        ERR_NO_PARALLEL_PORT = &H80300001       '(0x80300001)No parallel port on the computer 
        ERR_NO_DRIVER                           '(0x80300002)No driver installed 
        ERR_NO_ROCKEY                           '(0x80300003)No ROCKEY4 dongle 
        ERR_INVALID_PASSWORD                    '(0x80300004)ROCKEY4 dongle found  but base password is incorrect
        ERR_INVALID_PASSWORD_OR_ID              '(0x80300005)Wrong password or ROCKEY4 HID
        ERR_SETID                               '(0x80300006)Set ROCKEY4 HID wrong
        ERR_INVALID_ADDR_OR_SIZE                '(0x80300007)Read/Write address is wrong
        ERR_UNKNOWN_COMMAND                     '(0x80300008)No such command
        ERR_NOTBELEVEL3                         '(0x80300009)Inside error
        ERR_READ                                '(0x8030000A)Read error
        ERR_WRITE                               '(0x8030000B)Write error
        ERR_RANDOM                              '(0x8030000C)Random error
        ERR_SEED                                '(0x8030000D)Seed Code error
        ERR_CALCULATE                           '(0x8030000E)Calculate error
        ERR_NO_OPEN                             '(0x8030000F)Ry_Open must precede this operation
        ERR_OPEN_OVERFLOW                       '(0x80300010)Too many open dongles (>16)
        ERR_NOMORE                              '(0x80300011)No more dongle
        ERR_NEED_FIND                           '(0x80300012)No Find before FindNext
        ERR_DECREASE                            '(0x80300013)Decrease error
        ERR_AR_BADCOMMAND                       '(0x80300014)Arithmetic instruction error
        ERR_AR_UNKNOWN_OPCODE                   '(0x80300015)Arithmetic operator error
        ERR_AR_WRONGBEGIN                       '(0x80300016)A constant. cannot be in the first instruction
        ERR_AR_WRONG_END                        '(0x80300017)A constant. cannot be in the last instruction 
        ERR_AR_VALUEOVERFLOW                    '(0x80300018)Const number > 63

        ERR_UNKNOWN = &H8030FFFF                '(0x8030FFFF)Unknown error 

        ERR_RECEIVE_NULL = &H80300100           '(0x80300100)Parallel port can not recieve data.
        ERR_PRNPORT_BUSY = &H80300101           '(0x80300101)Parallel port is busy.



        'Error code for Net login

        ERR_NET_LOGINAGAIN = &H803003E9         'A module can only be opened once by the same process.  
        ERR_NET_NETERROR = &H803003EA           'Network error.
        ERR_NET_LOGIN = &H803003EB              'Too many users are logged on.
        ERR_NET_INVALIDHANDLE = &H803003EC      'Invalid handle  this handle might have been closed.
        ERR_NET_BADHARDWARE = &H803003ED        'Defective hardware 
        ERR_NET_REFUSE = &H803003EE             'Client dll modified, service refused request.
        ERR_NET_BADSERVER = &H803003EF          'Nrsvr.exe modified, service is invalid.



        'Error code for network

        ERR_INIT_SOCK = &H803007D1              'Error when initializing.
        ERR_NOSUCHPROTO = &H803007D2            'No such protocol.
        ERR_UDPSOCKCREATE = &H803007D3          'UDP error when creating socket.
        ERR_UDPSETBROADCAST = &H803007D4        'UDP error when setting broadcast.
        ERR_UDPBINDFAILED = &H803007D5          'UDP error when binding.
        ERR_SVRCALLBACKNULL = &H803007D6        'Server call back null.
        ERR_TCPSOCKCREATE = &H803007D7          'TCP error when creating socket.
        ERR_TCPBINDFAILED = &H803007D8          'TCP error when binding.
        ERR_TCPLISTENFAILED = &H803007D9        'TCP error when listening.
        ERR_NOSUCHSEARCH = &H803007DA           'No such search mode.
        ERR_UDPSEND = &H803007DC                'UDP error when sending.
        ERR_UDPTIMEOUT = &H803007DD             'UDP timeout error when waiting.
        ERR_UDPRECV = &H803007DE                'UDP error when receiving.
        ERR_TCPCONNECT = &H803007DF             'TCP error when connecting to server.
        ERR_TCPSENDTIMEOUT = &H803007E0         'TCP time out error when sending.
        ERR_TCPSEND = &H803007E1                'TCP error when sending.
        ERR_TCPRECVTIMEOUT = &H803007E2         'TCP time out error when receiving.
        ERR_TCPRECV = &H803007E3                'TCP error when receiving.
        ERR_IPXSOCKCREATE = &H803007E4          'IPX error when creating socket.
        ERR_IPXSETBROADCAST = &H803007E5        'IPX error when setting broadcast.
        ERR_IPXSEND = &H803007E6                'IPX error when sending data. 
        ERR_IPXRECV = &H803007E7                'IPX error when receiving data.
        ERR_IPXBIND = &H803007E8                'IPX error when binding.
        ERR_NBSRESET = &H803007E9               'NetBIOS error when initializing.
        ERR_NBSADDNAME = &H803007EA             'NetBIOS error when adding name.
        ERR_NBSSEND = &H803007EB                'NetBIOS error when sending data.
        ERR_NBSRECV = &H803007EC                'NetBIOS error when receiving data.

    End Enum

4.Create NetRockey4 class by this line:

'Create NetRockey class.
Dim Class1 As New NetROCKEY4.CNetRockey4Class()

Then you can call DoCmd routine of Netry4.

5.DoCmd usage and parameters:

(1)Define variables you will use:

Dim Lp1, Lp2 As UInt32          	//long parameters, please see manual
Dim p1, p2, p3, p4 As UInt16    	//short parameters,please see manual
Dim handle As UInt16            	//Handle of opened device.
Dim Buf As Object               	//object to store byte array or string. 

(2)Buf usage

Buf only used by below commands:

Command	   		Para Direction	Data type
RY_FIND			[out]			return a string stored server name.
RY_FIND_NEXT	[out]			just same as RY_FIND
RY_READ	   		[out]			Return a Byte array,stored UDZ information.
RY_WRITE   		[in]            Set to a byte array, stored UDZ information.


In other commands, you can set it to 0 by line "Buf=0 " to improve efficiency.

