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

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Lan Manager Constants 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: lmcons.h, released November 2001. The original Pascal  }
  9. { code is: LmCons.pas, released Februari 2002. 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 JwaLmCons;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "lm.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51.   JwaWinType, JwaLmErr;
  52. const
  53.   NetApi32 = 'netapi32.dll';
  54. //
  55. // NOTE:  Lengths of strings are given as the maximum lengths of the
  56. // string in characters (not bytes).  This does not include space for the
  57. // terminating 0-characters.  When allocating space for such an item,
  58. // use the form:
  59. //
  60. //     TCHAR username[UNLEN+1];
  61. //
  62. // Definitions of the form LN20_* define those values in effect for
  63. // LanMan 2.0.
  64. //
  65. //
  66. // String Lengths for various LanMan names
  67. //
  68. const
  69.   CNLEN      = 15; // Computer name length
  70.   {$EXTERNALSYM CNLEN}
  71.   LM20_CNLEN = 15; // LM 2.0 Computer name length
  72.   {$EXTERNALSYM LM20_CNLEN}
  73.   DNLEN      = CNLEN; // Maximum domain name length
  74.   {$EXTERNALSYM DNLEN}
  75.   LM20_DNLEN = LM20_CNLEN; // LM 2.0 Maximum domain name length
  76.   {$EXTERNALSYM LM20_DNLEN}
  77. //#if (CNLEN != DNLEN)
  78. //#error CNLEN and DNLEN are not equal
  79. //#endif
  80.   UNCLEN      = (CNLEN+2); // UNC computer name length
  81.   {$EXTERNALSYM UNCLEN}
  82.   LM20_UNCLEN = (LM20_CNLEN+2); // LM 2.0 UNC computer name length
  83.   {$EXTERNALSYM LM20_UNCLEN}
  84.   NNLEN      = 80; // Net name length (share name)
  85.   {$EXTERNALSYM NNLEN}
  86.   LM20_NNLEN = 12; // LM 2.0 Net name length
  87.   {$EXTERNALSYM LM20_NNLEN}
  88.   RMLEN      = (UNCLEN+1+NNLEN); // Max remote name length
  89.   {$EXTERNALSYM RMLEN}
  90.   LM20_RMLEN = (LM20_UNCLEN+1+LM20_NNLEN); // LM 2.0 Max remote name length
  91.   {$EXTERNALSYM LM20_RMLEN}
  92.   SNLEN        = 80; // Service name length
  93.   {$EXTERNALSYM SNLEN}
  94.   LM20_SNLEN   = 15; // LM 2.0 Service name length
  95.   {$EXTERNALSYM LM20_SNLEN}
  96.   STXTLEN      = 256; // Service text length
  97.   {$EXTERNALSYM STXTLEN}
  98.   LM20_STXTLEN = 63; // LM 2.0 Service text length
  99.   {$EXTERNALSYM LM20_STXTLEN}
  100.   PATHLEN      = 256; // Max. path (not including drive name)
  101.   {$EXTERNALSYM PATHLEN}
  102.   LM20_PATHLEN = 256; // LM 2.0 Max. path
  103.   {$EXTERNALSYM LM20_PATHLEN}
  104.   DEVLEN      = 80; // Device name length
  105.   {$EXTERNALSYM DEVLEN}
  106.   LM20_DEVLEN = 8; // LM 2.0 Device name length
  107.   {$EXTERNALSYM LM20_DEVLEN}
  108.   EVLEN = 16; // Event name length
  109.   {$EXTERNALSYM EVLEN}
  110. //
  111. // User, Group and Password lengths
  112. //
  113.   UNLEN      = 256; // Maximum user name length
  114.   {$EXTERNALSYM UNLEN}
  115.   LM20_UNLEN = 20; // LM 2.0 Maximum user name length
  116.   {$EXTERNALSYM LM20_UNLEN}
  117.   GNLEN      = UNLEN; // Group name
  118.   {$EXTERNALSYM GNLEN}
  119.   LM20_GNLEN = LM20_UNLEN; // LM 2.0 Group name
  120.   {$EXTERNALSYM LM20_GNLEN}
  121.   PWLEN      = 256; // Maximum password length
  122.   {$EXTERNALSYM PWLEN}
  123.   LM20_PWLEN = 14; // LM 2.0 Maximum password length
  124.   {$EXTERNALSYM LM20_PWLEN}
  125.   SHPWLEN = 8; // Share password length (bytes)
  126.   {$EXTERNALSYM SHPWLEN}
  127.   CLTYPE_LEN = 12; // Length of client type string
  128.   {$EXTERNALSYM CLTYPE_LEN}
  129.   MAXCOMMENTSZ      = 256; // Multipurpose comment length
  130.   {$EXTERNALSYM MAXCOMMENTSZ}
  131.   LM20_MAXCOMMENTSZ = 48; // LM 2.0 Multipurpose comment length
  132.   {$EXTERNALSYM LM20_MAXCOMMENTSZ}
  133.   QNLEN      = NNLEN; // Queue name maximum length
  134.   {$EXTERNALSYM QNLEN}
  135.   LM20_QNLEN = LM20_NNLEN; // LM 2.0 Queue name maximum length
  136.   {$EXTERNALSYM LM20_QNLEN}
  137. //#if (QNLEN != NNLEN)
  138. //# error QNLEN and NNLEN are not equal
  139. //#endif
  140. //
  141. // The ALERTSZ and MAXDEVENTRIES defines have not yet been NT'ized.
  142. // Whoever ports these components should change these values appropriately.
  143. //
  144.   ALERTSZ       = 128; // size of alert string in server
  145.   {$EXTERNALSYM ALERTSZ}
  146.   MAXDEVENTRIES = (SizeOf(Integer)*8); // Max number of device entries
  147.   {$EXTERNALSYM MAXDEVENTRIES}
  148.                                         //
  149.                                         // We use int bitmap to represent
  150.                                         //
  151.   NETBIOS_NAME_LEN = 16; // NetBIOS net name (bytes)
  152.   {$EXTERNALSYM NETBIOS_NAME_LEN}
  153. //
  154. // Value to be used with APIs which have a "preferred maximum length"
  155. // parameter.  This value indicates that the API should just allocate
  156. // "as much as it takes."
  157. //
  158.   MAX_PREFERRED_LENGTH = DWORD(-1);
  159.   {$EXTERNALSYM MAX_PREFERRED_LENGTH}
  160. //
  161. //        Constants used with encryption
  162. //
  163.   CRYPT_KEY_LEN      = 7;
  164.   {$EXTERNALSYM CRYPT_KEY_LEN}
  165.   CRYPT_TXT_LEN      = 8;
  166.   {$EXTERNALSYM CRYPT_TXT_LEN}
  167.   ENCRYPTED_PWLEN    = 16;
  168.   {$EXTERNALSYM ENCRYPTED_PWLEN}
  169.   SESSION_PWLEN      = 24;
  170.   {$EXTERNALSYM SESSION_PWLEN}
  171.   SESSION_CRYPT_KLEN = 21;
  172.   {$EXTERNALSYM SESSION_CRYPT_KLEN}
  173. //
  174. //  Value to be used with SetInfo calls to allow setting of all
  175. //  settable parameters (parmnum zero option)
  176. //
  177.   PARMNUM_ALL = 0;
  178.   {$EXTERNALSYM PARMNUM_ALL}
  179.   PARM_ERROR_UNKNOWN     = DWORD(-1);
  180.   {$EXTERNALSYM PARM_ERROR_UNKNOWN}
  181.   PARM_ERROR_NONE        = 0;
  182.   {$EXTERNALSYM PARM_ERROR_NONE}
  183.   PARMNUM_BASE_INFOLEVEL = 1000;
  184.   {$EXTERNALSYM PARMNUM_BASE_INFOLEVEL}
  185. //
  186. // Only the UNICODE version of the LM APIs are available on NT.
  187. // Non-UNICODE version on other platforms
  188. //
  189. //#if defined( _WIN32_WINNT ) || defined( WINNT ) || defined( FORCE_UNICODE )
  190. {$IFDEF _WIN32_WINNT}
  191. {$DEFINE LM_USE_UNICODE}
  192. {$ENDIF}
  193. {$IFDEF WINNT}
  194. {$DEFINE LM_USE_UNICODE}
  195. {$ENDIF}
  196. {$IFDEF FORCE_UNICODE}
  197. {$DEFINE LM_USE_UNICODE}
  198. {$ENDIF}
  199. {$IFDEF LM_USE_UNICODE}
  200. type
  201.   LMSTR = LPWSTR;
  202.   {$EXTERNALSYM LMSTR}
  203.   LMCSTR = LPCWSTR;
  204.   {$EXTERNALSYM LMCSTR}
  205.   PLMSTR = ^LMSTR;
  206.   {$NODEFINE PLMSTR}
  207. {$ELSE}
  208. type
  209.   LMSTR = LPSTR;
  210.   {$EXTERNALSYM LMSTR}
  211.   LMCSTR = LPCSTR;
  212.   {$EXTERNALSYM LMCSTR}
  213. {$ENDIF}
  214. {$UNDEF LM_USE_UNICODE}
  215. //
  216. //        Message File Names
  217. //
  218. const
  219.   MESSAGE_FILENAME  = TEXT('NETMSG');
  220.   {$EXTERNALSYM MESSAGE_FILENAME}
  221.   OS2MSG_FILENAME   = TEXT('BASE');
  222.   {$EXTERNALSYM OS2MSG_FILENAME}
  223.   HELP_MSG_FILENAME = TEXT('NETH');
  224.   {$EXTERNALSYM HELP_MSG_FILENAME}
  225. // ** INTERNAL_ONLY **
  226. // The backup message file named here is a duplicate of net.msg. It
  227. // is not shipped with the product, but is used at buildtime to
  228. // msgbind certain messages to netapi.dll and some of the services.
  229. // This allows for OEMs to modify the message text in net.msg and
  230. // have those changes show up.        Only in case there is an error in
  231. // retrieving the messages from net.msg do we then get the bound
  232. // messages out of bak.msg (really out of the message segment).
  233.   BACKUP_MSG_FILENAME = TEXT('BAK.MSG');
  234.   {$EXTERNALSYM BACKUP_MSG_FILENAME}
  235. // ** END_INTERNAL **
  236. //
  237. // Keywords used in Function Prototypes
  238. //
  239. type
  240.   NET_API_STATUS = DWORD;
  241.   {$EXTERNALSYM NET_API_STATUS}
  242.   TNetApiStatus = NET_API_STATUS;
  243. //
  244. // The platform ID indicates the levels to use for platform-specific
  245. // information.
  246. //
  247. const
  248.   PLATFORM_ID_DOS = 300;
  249.   {$EXTERNALSYM PLATFORM_ID_DOS}
  250.   PLATFORM_ID_OS2 = 400;
  251.   {$EXTERNALSYM PLATFORM_ID_OS2}
  252.   PLATFORM_ID_NT  = 500;
  253.   {$EXTERNALSYM PLATFORM_ID_NT}
  254.   PLATFORM_ID_OSF = 600;
  255.   {$EXTERNALSYM PLATFORM_ID_OSF}
  256.   PLATFORM_ID_VMS = 700;
  257.   {$EXTERNALSYM PLATFORM_ID_VMS}
  258. //
  259. //      There message numbers assigned to different LANMAN components
  260. //      are as defined below.
  261. //
  262. //      lmerr.h:        2100 - 2999     NERR_BASE
  263. //      alertmsg.h:     3000 - 3049     ALERT_BASE
  264. //      lmsvc.h:        3050 - 3099     SERVICE_BASE
  265. //      lmerrlog.h:     3100 - 3299     ERRLOG_BASE
  266. //      msgtext.h:      3300 - 3499     MTXT_BASE
  267. //      apperr.h:       3500 - 3999     APPERR_BASE
  268. //      apperrfs.h:     4000 - 4299     APPERRFS_BASE
  269. //      apperr2.h:      4300 - 5299     APPERR2_BASE
  270. //      ncberr.h:       5300 - 5499     NRCERR_BASE
  271. //      alertmsg.h:     5500 - 5599     ALERT2_BASE
  272. //      lmsvc.h:        5600 - 5699     SERVICE2_BASE
  273. //      lmerrlog.h      5700 - 5899     ERRLOG2_BASE
  274. //
  275.   MIN_LANMAN_MESSAGE_ID = NERR_BASE;
  276.   {$EXTERNALSYM MIN_LANMAN_MESSAGE_ID}
  277.   MAX_LANMAN_MESSAGE_ID = 5899;
  278.   {$EXTERNALSYM MAX_LANMAN_MESSAGE_ID}
  279. implementation
  280. end.