JwaWS2dnet.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:13k
源码类别:

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Winsock2 DecNET API interface Unit for Object Pascal                         }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: ws2dnet.h, released June 2000. The original Pascal     }
  9. { code is: WS2dnet.pas, released December 2000. The initial developer of the   }
  10. { Pascal code is Marcel van Brakel (brakelm@chello.nl).                        }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaWS2dnet;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "ws2dnet.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51.   JwaWinSock2;
  52. //************************************************************************
  53. //  Winsock V2.0  DECnet definitions File: WS2DNET.H
  54. //************************************************************************
  55. //
  56. //  DECnet WinSock Definitions
  57. //
  58. const
  59.   DNPROTO_NSP = 1; // DECnet NSP transport protocol
  60.   {$EXTERNALSYM DNPROTO_NSP}
  61.   DNPROTO_RAW = 255;
  62.   {$EXTERNALSYM DNPROTO_RAW}
  63.   DN_MAXADDL   = 20; // maximum DECnet address length
  64.   {$EXTERNALSYM DN_MAXADDL}
  65.   DN_ADDL      = 2; // DECnet NSP address length
  66.   {$EXTERNALSYM DN_ADDL}
  67.   DN_MAXOPTL   = 16; // Maximum DECnet optional data length
  68.   {$EXTERNALSYM DN_MAXOPTL}
  69.   DN_MAXOBJL   = 16; // Maximum DECnet object name length
  70.   {$EXTERNALSYM DN_MAXOBJL}
  71.   DN_MAXACCL   = 39; // Maximum DECnet access string length
  72.   {$EXTERNALSYM DN_MAXACCL}
  73.   DN_MAXALIASL = 128; // Maximum DECnet alias string length
  74.   {$EXTERNALSYM DN_MAXALIASL}
  75.   DN_MAXNODEL  = 7; // Maximum DECnet Phase IV node string length
  76.   {$EXTERNALSYM DN_MAXNODEL}
  77. // DECnet Extension Function Identifiers
  78.   WS2API_DECNET_dnet_addr     = 1;
  79.   {$EXTERNALSYM WS2API_DECNET_dnet_addr}
  80.   WS2API_DECNET_dnet_eof      = 2;
  81.   {$EXTERNALSYM WS2API_DECNET_dnet_eof}
  82.   WS2API_DECNET_dnet_getacc   = 3;
  83.   {$EXTERNALSYM WS2API_DECNET_dnet_getacc}
  84.   WS2API_DECNET_dnet_getalias = 4;
  85.   {$EXTERNALSYM WS2API_DECNET_dnet_getalias}
  86.   WS2API_DECNET_dnet_htoa     = 5;
  87.   {$EXTERNALSYM WS2API_DECNET_dnet_htoa}
  88.   WS2API_DECNET_dnet_ntoa     = 6;
  89.   {$EXTERNALSYM WS2API_DECNET_dnet_ntoa}
  90.   WS2API_DECNET_getnodeadd    = 7;
  91.   {$EXTERNALSYM WS2API_DECNET_getnodeadd}
  92.   WS2API_DECNET_getnodebyaddr = 8;
  93.   {$EXTERNALSYM WS2API_DECNET_getnodebyaddr}
  94.   WS2API_DECNET_getnodebyname = 9;
  95.   {$EXTERNALSYM WS2API_DECNET_getnodebyname}
  96.   WS2API_DECNET_getnodename   = 10;
  97.   {$EXTERNALSYM WS2API_DECNET_getnodename}
  98.   WS2API_DECNET_MAX           = 10;
  99.   {$EXTERNALSYM WS2API_DECNET_MAX}
  100. //
  101. //  DECnet address structure
  102. //
  103. type
  104.   dn_naddr = packed record
  105.     a_len: Word;                // length of address
  106.     a_addr: array [0..DN_MAXADDL - 1] of Byte; // address as bytes
  107.   end;
  108.   {$EXTERNALSYM dn_naddr}
  109.   DNNADDR = dn_naddr;
  110.   {$EXTERNALSYM DNNADDR}
  111.   LPDNNADDR = ^DNNADDR;
  112.   {$EXTERNALSYM LPDNNADDR}
  113.   TDNNAddr = DNNADDR;
  114.   PDNNAddr = LPDNNADDR;  
  115. //
  116. //  DECnet socket address structure
  117. //
  118.   sockaddr_dn = packed record
  119.     sdn_family: Word;     // AF_DECnet
  120.     sdn_flags: Byte;     // flags
  121.     sdn_objnum: Byte;     // object number
  122.     sdn_objnamel: Word; // size of object name
  123.     sdn_objname: array [0..DN_MAXOBJL - 1] of Char; // object name
  124.     sdn_add: dn_naddr;     // node address
  125.   end;
  126.   {$EXTERNALSYM sockaddr_dn}
  127.   SOCKADDRDN = sockaddr_dn;
  128.   {$EXTERNALSYM SOCKADDRDN}
  129.   LPSOCKADDRDN = ^SOCKADDRDN;
  130.   {$EXTERNALSYM LPSOCKADDRDN}
  131.   TSockAddrDN = SOCKADDRDN;
  132.   PSockAddrDN = LPSOCKADDRDN;
  133. //  Common DECnet object numbers (used in sockaddr_dn)
  134. const
  135.   DNOBJECT_FAL = 17; //    = file access listener;
  136.   {$EXTERNALSYM DNOBJECT_FAL}
  137.   DNOBJECT_NICE = 19; //   = network management;
  138.   {$EXTERNALSYM DNOBJECT_NICE}
  139.   DNOBJECT_DTERM  = 23; //  = remote terminals;
  140.   {$EXTERNALSYM DNOBJECT_DTERM}
  141.   DNOBJECT_MIRROR = 25; // = loopback mirror;
  142.   {$EXTERNALSYM DNOBJECT_MIRROR}
  143.   DNOBJECT_EVR = 26; //    = event receiver;
  144.   {$EXTERNALSYM DNOBJECT_EVR}
  145.   DNOBJECT_MAIL11 = 27; // = Mail-11 service;
  146.   {$EXTERNALSYM DNOBJECT_MAIL11}
  147.   DNOBJECT_PHONE = 29; //  = phone utility;
  148.   {$EXTERNALSYM DNOBJECT_PHONE}
  149.   DNOBJECT_CTERM = 42; //  = command terminals;
  150.   {$EXTERNALSYM DNOBJECT_CTERM}
  151.   DNOBJECT_DTR = 63; //    = data test receiver;
  152.   {$EXTERNALSYM DNOBJECT_DTR}
  153. //
  154. //  DECnet node structure
  155. //
  156. type
  157.   nodeent_f = packed record
  158.     n_name: PChar;      // name of node
  159.     n_addrtype: Word; // node address type
  160.     n_length: Word; // address length
  161.     n_addr: PChar; // address
  162.     n_params: PChar; // node parameters
  163.     n_reserved: array [0..15] of Byte; // Reserved
  164.   end;
  165.   {$EXTERNALSYM nodeent_f}
  166.   NODEENTF = nodeent_f;
  167.   {$EXTERNALSYM NODEENTF}
  168.   LPNODEENTF = ^NODEENTF;
  169.   {$EXTERNALSYM LPNODEENTF}
  170.   TNodeEntF = NODEENTF;
  171.   PNodeEntF = LPNODEENTF;
  172. //
  173. //  DECnet set/get DSO_CONDATA, DSO_DISDATA (optional data) structure
  174. //
  175.   optdata_dn = packed record
  176.     opt_status: Word;           // extended status return
  177.     opt_optl: Word;           // user data length
  178.     opt_data: array [0..DN_MAXOPTL - 1] of Byte; // user data
  179.   end;
  180.   {$EXTERNALSYM optdata_dn}
  181.   OPTDATADN = optdata_dn;
  182.   {$EXTERNALSYM OPTDATADN}
  183.   LPOPTDATADN = ^OPTDATADN;
  184.   {$EXTERNALSYM LPOPTDATADN}
  185.   TOptDataDN = OPTDATADN;
  186.   POptDataDN = LPOPTDATADN;
  187. //
  188. //  DECnet set/get DSO_CONACCESS access (control data) structure
  189. //
  190.   accessdata_dn = packed record
  191.     acc_accl: Word;             // account string length
  192.     acc_acc: array [0..DN_MAXACCL] of Byte; // account string
  193.     acc_passl: Word;             // password string length
  194.     acc_pass: array [0..DN_MAXACCL] of Byte; // password string
  195.     acc_userl: Word;             // user string length
  196.     acc_user: array [0..DN_MAXACCL] of Byte; // user string
  197.   end;
  198.   {$EXTERNALSYM accessdata_dn}
  199.   ACCESSDATADN = accessdata_dn;
  200.   {$EXTERNALSYM ACCESSDATADN}
  201.   LPACCESSDATADN = ^ACCESSDATADN;
  202.   {$EXTERNALSYM LPACCESSDATADN}
  203.   TAccessDataDN = ACCESSDATADN;
  204.   PAccessDataDN = LPACCESSDATADN;  
  205. //
  206. //  DECnet call data structure (concatenated access and optional data)
  207. //
  208.   calldata_dn = packed record
  209.     optdata_dn: optdata_dn;
  210.     accessdata_dn: accessdata_dn;
  211.   end;
  212.   {$EXTERNALSYM calldata_dn}
  213.   CALLDATADN = calldata_dn;
  214.   {$EXTERNALSYM CALLDATADN}
  215.   LPCALLDATADN = ^CALLDATADN;
  216.   {$EXTERNALSYM LPCALLDATADN}
  217.   TCallDataDN = CALLDATADN;
  218.   PCallDataDN = LPCALLDATADN;  
  219. //
  220. //  DECnet incoming access control structure
  221. //
  222.   dnet_accent = packed record
  223.     dac_status: Byte;      // Reserved
  224.     dac_type: Byte;        // DN_NONE, etc.
  225.     dac_username: array [0..DN_MAXACCL] of Char;
  226.     dac_password: array [0..DN_MAXACCL] of Char;
  227.   end;
  228.   {$EXTERNALSYM dnet_accent}
  229.   DNETACCENT = dnet_accent;
  230.   {$EXTERNALSYM DNETACCENT}
  231.   LPDNETACCENT = ^DNETACCENT;
  232.   {$EXTERNALSYM LPDNETACCENT}
  233.   TDNetAccent = DNETACCENT;
  234.   PDNetAccent = LPDNETACCENT;  
  235. const
  236.   DN_NONE = $00;
  237.   {$EXTERNALSYM DN_NONE}
  238.   DN_RO   = $01;
  239.   {$EXTERNALSYM DN_RO}
  240.   DN_WO   = $02;
  241.   {$EXTERNALSYM DN_WO}
  242.   DN_RW   = $03;
  243.   {$EXTERNALSYM DN_RW}
  244. // DECnet logical link information structure
  245. type
  246.   linkinfo_dn = packed record
  247.     idn_segsize: Word;   // segment size for link
  248.     idn_linkstate: Byte; // logical link state
  249.   end;
  250.   {$EXTERNALSYM linkinfo_dn}
  251.   LINKINFODN = linkinfo_dn;
  252.   {$EXTERNALSYM LINKINFODN}
  253.   LPLINKINFODN = ^LINKINFODN;
  254.   {$EXTERNALSYM LPLINKINFODN}
  255.   TLinkInfoDN = LINKINFODN;
  256.   PLinkInfoDN = LPLINKINFODN;
  257. const
  258.   SO_LINKINFO      = 7; // set/get link information
  259.   {$EXTERNALSYM SO_LINKINFO}
  260.   LL_INACTIVE      = 0; // logical link inactive
  261.   {$EXTERNALSYM LL_INACTIVE}
  262.   LL_CONNECTING    = 1; // logical link connecting
  263.   {$EXTERNALSYM LL_CONNECTING}
  264.   LL_RUNNING       = 2; // logical link running
  265.   {$EXTERNALSYM LL_RUNNING}
  266.   LL_DISCONNECTING = 3; // logical link disconnecting
  267.   {$EXTERNALSYM LL_DISCONNECTING}
  268. //*********************************************************************
  269. //  DECnet WinSock 2 extended function prototypes
  270. //*********************************************************************
  271. (*
  272. MVB TODO: Extension functions must be dynamically queried for using WSAIoctl.
  273. function dnet_addr(cp: PChar): PDNAddr; stdcall;
  274. {$EXTERNALSYM dnet_addr}
  275. function dnet_eof(s: SOCKET): Integer; stdcall;
  276. {$EXTERNALSYM dnet_eof}
  277. function dnet_getacc(const nacc: TDNetAccent): PDNetAccent; stdcall;
  278. {$EXTERNALSYM dnet_getacc}
  279. function dnet_getalias(P: PChar): PChar; stdcall;
  280. {$EXTERNALSYM dnet_getalias}
  281. function dnet_htoa(const add: TDNNAddr): PChar; stdcall;
  282. {$EXTERNALSYM dnet_htoa}
  283. function dnet_ntoa(const add: TDNNAddr): PChar; stdcall;
  284. {$EXTERNALSYM dnet_ntoa}
  285. function getnodeadd: PDNNAddr; stdcall;
  286. {$EXTERNALSYM getnodeadd}
  287. function getnodebyaddr(addr: PChar; len, type_: Integer): PNodeEntF; stdcall;
  288. {$EXTERNALSYM getnodebyaddr}
  289. function getnodebyname(name: PChar): PNodeEntF; stdcall;
  290. {$EXTERNALSYM getnodebyname}
  291. function getnodename: PChar; stdcall;
  292. {$EXTERNALSYM getnodename}
  293. *)
  294. // typedefs for C++ compatability
  295. type
  296.   LPDNETADDR = function (cp: PChar): PDNNAddr; stdcall;
  297.   {$EXTERNALSYM LPDNETADDR}
  298.   TDNetAddr = LPDNETADDR;
  299.   LPDNETEOF = function (s: TSocket): Integer; stdcall;
  300.   {$EXTERNALSYM LPDNETEOF}
  301.   TDNetEOF = LPDNETEOF;
  302.   LPDNETGETACC = function (const nacc: TDNetAccent): PDNetAccent; stdcall;
  303.   {$EXTERNALSYM LPDNETGETACC}
  304.   TDNetGetAcc = LPDNETGETACC;
  305.   LPDNETGETALIAS = function (P: PChar): PChar; stdcall;
  306.   {$EXTERNALSYM LPDNETGETALIAS}
  307.   TDNetGetAlias = LPDNETGETALIAS;
  308.   LPDNETHTOA = function (const add: TDNNAddr): PChar; stdcall;
  309.   {$EXTERNALSYM LPDNETHTOA}
  310.   TDNetHToA = LPDNETHTOA;
  311.   LPDNETNTOA = function (const add: TDNNAddr): PChar; stdcall;
  312.   {$EXTERNALSYM LPDNETNTOA}
  313.   TDNetNToA = LPDNETNTOA;
  314.   LPGETNODEADD = function: PDNNAddr; stdcall;
  315.   {$EXTERNALSYM LPGETNODEADD}
  316.   TGetNodeAdd = LPGETNODEADD;
  317.   LPGETNODEBYADDR = function (addr: PChar; len, type_: Integer): PNodeEntF; stdcall;
  318.   {$EXTERNALSYM LPGETNODEBYADDR}
  319.   TGetNodeByAddr = LPGETNODEBYADDR;
  320.   LPGETNODEBYNAME = function (name: PChar): PNodeEntF; stdcall;
  321.   {$EXTERNALSYM LPGETNODEBYNAME}
  322.   TGetNodeByName = LPGETNODEBYNAME;
  323.   LPGETNODENAME = function: PChar; stdcall;
  324.   {$EXTERNALSYM LPGETNODENAME}
  325.   TGetNodeName = LPGETNODENAME;
  326. implementation
  327. end.