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

Windows编程

开发平台:

Delphi

  1. function NetWkstaTransportDel(servername: LPWSTR; transportname: LPWSTR;
  2.   ucond: DWORD): NET_API_STATUS; stdcall;
  3. {$EXTERNALSYM NetWkstaTransportDel}
  4. function NetWkstaTransportEnum(servername: LPWSTR; level: DWORD; bufptr: Pointer;
  5.   prefmaxlen: DWORD; var entriesread: DWORD; var totalentries: DWORD;
  6.   resumehandle: PDWORD): NET_API_STATUS; stdcall;
  7. {$EXTERNALSYM NetWkstaTransportEnum}
  8. // NetWkstaGetInfo and NetWkstaSetInfo
  9. // NetWkstaGetInfo only.  System information - guest access
  10. type
  11.   PWkstaInfo100 = ^TWkstaInfo100;
  12.   _WKSTA_INFO_100 = record
  13.     wki100_platform_id: DWORD;
  14.     wki100_computername: LPWSTR;
  15.     wki100_langroup: LPWSTR;
  16.     wki100_ver_major: DWORD;
  17.     wki100_ver_minor: DWORD;
  18.   end;
  19.   {$EXTERNALSYM _WKSTA_INFO_100}
  20.   TWkstaInfo100 = _WKSTA_INFO_100;
  21.   WKSTA_INFO_100 = _WKSTA_INFO_100;
  22.   {$EXTERNALSYM WKSTA_INFO_100}
  23. // NetWkstaGetInfo only.  System information - user access
  24.   PWkstaInfo101 = ^TWkstaInfo101;
  25.   _WKSTA_INFO_101 = record
  26.     wki101_platform_id: DWORD;
  27.     wki101_computername: LPWSTR;
  28.     wki101_langroup: LPWSTR;
  29.     wki101_ver_major: DWORD;
  30.     wki101_ver_minor: DWORD;
  31.     wki101_lanroot: LPWSTR;
  32.   end;
  33.   {$EXTERNALSYM _WKSTA_INFO_101}
  34.   TWkstaInfo101 = _WKSTA_INFO_101;
  35.   WKSTA_INFO_101 = _WKSTA_INFO_101;
  36.   {$EXTERNALSYM WKSTA_INFO_101}
  37. // NetWkstaGetInfo only.  System information - admin or operator access
  38.   PWkstaInfo102 = ^TWkstaInfo102;
  39.   _WKSTA_INFO_102 = record
  40.     wki102_platform_id: DWORD;
  41.     wki102_computername: LPWSTR;
  42.     wki102_langroup: LPWSTR;
  43.     wki102_ver_major: DWORD;
  44.     wki102_ver_minor: DWORD;
  45.     wki102_lanroot: LPWSTR;
  46.     wki102_logged_on_users: DWORD;
  47.   end;
  48.   {$EXTERNALSYM _WKSTA_INFO_102}
  49.   TWkstaInfo102 = _WKSTA_INFO_102;
  50.   WKSTA_INFO_102 = _WKSTA_INFO_102;
  51.   {$EXTERNALSYM WKSTA_INFO_102}
  52. // Down-level NetWkstaGetInfo and NetWkstaSetInfo.
  53. //
  54. // DOS specific workstation information -
  55. //    admin or domain operator access
  56.   PWkstaInfo302 = ^TWkstaInfo302;
  57.   _WKSTA_INFO_302 = record
  58.     wki302_char_wait: DWORD;
  59.     wki302_collection_time: DWORD;
  60.     wki302_maximum_collection_count: DWORD;
  61.     wki302_keep_conn: DWORD;
  62.     wki302_keep_search: DWORD;
  63.     wki302_max_cmds: DWORD;
  64.     wki302_num_work_buf: DWORD;
  65.     wki302_siz_work_buf: DWORD;
  66.     wki302_max_wrk_cache: DWORD;
  67.     wki302_sess_timeout: DWORD;
  68.     wki302_siz_error: DWORD;
  69.     wki302_num_alerts: DWORD;
  70.     wki302_num_services: DWORD;
  71.     wki302_errlog_sz: DWORD;
  72.     wki302_print_buf_time: DWORD;
  73.     wki302_num_char_buf: DWORD;
  74.     wki302_siz_char_buf: DWORD;
  75.     wki302_wrk_heuristics: LPWSTR;
  76.     wki302_mailslots: DWORD;
  77.     wki302_num_dgram_buf: DWORD;
  78.   end;
  79.   {$EXTERNALSYM _WKSTA_INFO_302}
  80.   TWkstaInfo302 = _WKSTA_INFO_302;
  81.   WKSTA_INFO_302 = _WKSTA_INFO_302;
  82.   {$EXTERNALSYM WKSTA_INFO_302}
  83. // Down-level NetWkstaGetInfo and NetWkstaSetInfo
  84. //
  85. // OS/2 specific workstation information -
  86. //    admin or domain operator access
  87.   PWkstaInfo402 = ^TWkstaInfo402;
  88.   _WKSTA_INFO_402 = record
  89.     wki402_char_wait: DWORD;
  90.     wki402_collection_time: DWORD;
  91.     wki402_maximum_collection_count: DWORD;
  92.     wki402_keep_conn: DWORD;
  93.     wki402_keep_search: DWORD;
  94.     wki402_max_cmds: DWORD;
  95.     wki402_num_work_buf: DWORD;
  96.     wki402_siz_work_buf: DWORD;
  97.     wki402_max_wrk_cache: DWORD;
  98.     wki402_sess_timeout: DWORD;
  99.     wki402_siz_error: DWORD;
  100.     wki402_num_alerts: DWORD;
  101.     wki402_num_services: DWORD;
  102.     wki402_errlog_sz: DWORD;
  103.     wki402_print_buf_time: DWORD;
  104.     wki402_num_char_buf: DWORD;
  105.     wki402_siz_char_buf: DWORD;
  106.     wki402_wrk_heuristics: LPWSTR;
  107.     wki402_mailslots: DWORD;
  108.     wki402_num_dgram_buf: DWORD;
  109.     wki402_max_threads: DWORD;
  110.   end;
  111.   {$EXTERNALSYM _WKSTA_INFO_402}
  112.   TWkstaInfo402 = _WKSTA_INFO_402;
  113.   WKSTA_INFO_402 = _WKSTA_INFO_402;
  114.   {$EXTERNALSYM WKSTA_INFO_402}
  115. // Same-level NetWkstaGetInfo and NetWkstaSetInfo.
  116. //
  117. // NT specific workstation information -
  118. //    admin or domain operator access
  119.   PWkstaInfo502 = ^TWkstaInfo502;
  120.   _WKSTA_INFO_502 = record
  121.     wki502_char_wait: DWORD;
  122.     wki502_collection_time: DWORD;
  123.     wki502_maximum_collection_count: DWORD;
  124.     wki502_keep_conn: DWORD;
  125.     wki502_max_cmds: DWORD;
  126.     wki502_sess_timeout: DWORD;
  127.     wki502_siz_char_buf: DWORD;
  128.     wki502_max_threads: DWORD;
  129.     wki502_lock_quota: DWORD;
  130.     wki502_lock_increment: DWORD;
  131.     wki502_lock_maximum: DWORD;
  132.     wki502_pipe_increment: DWORD;
  133.     wki502_pipe_maximum: DWORD;
  134.     wki502_cache_file_timeout: DWORD;
  135.     wki502_dormant_file_limit: DWORD;
  136.     wki502_read_ahead_throughput: DWORD;
  137.     wki502_num_mailslot_buffers: DWORD;
  138.     wki502_num_srv_announce_buffers: DWORD;
  139.     wki502_max_illegal_datagram_events: DWORD;
  140.     wki502_illegal_datagram_event_reset_frequency: DWORD;
  141.     wki502_log_election_packets: BOOL;
  142.     wki502_use_opportunistic_locking: BOOL;
  143.     wki502_use_unlock_behind: BOOL;
  144.     wki502_use_close_behind: BOOL;
  145.     wki502_buf_named_pipes: BOOL;
  146.     wki502_use_lock_read_unlock: BOOL;
  147.     wki502_utilize_nt_caching: BOOL;
  148.     wki502_use_raw_read: BOOL;
  149.     wki502_use_raw_write: BOOL;
  150.     wki502_use_write_raw_data: BOOL;
  151.     wki502_use_encryption: BOOL;
  152.     wki502_buf_files_deny_write: BOOL;
  153.     wki502_buf_read_only_files: BOOL;
  154.     wki502_force_core_create_mode: BOOL;
  155.     wki502_use_512_byte_max_transfer: BOOL;
  156.   end;
  157.   {$EXTERNALSYM _WKSTA_INFO_502}
  158.   TWkstaInfo502 = _WKSTA_INFO_502;
  159.   WKSTA_INFO_502 = _WKSTA_INFO_502;
  160.   {$EXTERNALSYM WKSTA_INFO_502}
  161. // The following info-levels are only valid for NetWkstaSetInfo
  162. // The following levels are supported on down-level systems (LAN Man 2.x)
  163. // as well as NT systems:
  164.   PWkstaInfo1010 = ^TWkstaInfo1010;
  165.   _WKSTA_INFO_1010 = record
  166.     wki1010_char_wait: DWORD;
  167.   end;
  168.   {$EXTERNALSYM _WKSTA_INFO_1010}
  169.   TWkstaInfo1010 = _WKSTA_INFO_1010;
  170.   WKSTA_INFO_1010 = _WKSTA_INFO_1010;
  171.   {$EXTERNALSYM WKSTA_INFO_1010}
  172.   PWkstaInfo1011 = ^TWkstaInfo1011;
  173.   _WKSTA_INFO_1011 = record
  174.     wki1011_collection_time: DWORD;
  175.   end;
  176.   {$EXTERNALSYM _WKSTA_INFO_1011}
  177.   TWkstaInfo1011 = _WKSTA_INFO_1011;
  178.   WKSTA_INFO_1011 = _WKSTA_INFO_1011;
  179.   {$EXTERNALSYM WKSTA_INFO_1011}
  180.   PWkstaInfo1012 = ^TWkstaInfo1012;
  181.   _WKSTA_INFO_1012 = record
  182.     wki1012_maximum_collection_count: DWORD;
  183.   end;
  184.   {$EXTERNALSYM _WKSTA_INFO_1012}
  185.   TWkstaInfo1012 = _WKSTA_INFO_1012;
  186.   WKSTA_INFO_1012 = _WKSTA_INFO_1012;
  187.   {$EXTERNALSYM WKSTA_INFO_1012}
  188. // The following level are supported on down-level systems (LAN Man 2.x)
  189. // only:
  190.   PWkstaInfo1027 = ^TWkstaInfo1027;
  191.   _WKSTA_INFO_1027 = record
  192.     wki1027_errlog_sz: DWORD;
  193.   end;
  194.   {$EXTERNALSYM _WKSTA_INFO_1027}
  195.   TWkstaInfo1027 = _WKSTA_INFO_1027;
  196.   WKSTA_INFO_1027 = _WKSTA_INFO_1027;
  197.   {$EXTERNALSYM WKSTA_INFO_1027}
  198.   PWkstaInfo1028 = ^TWkstaInfo1028;
  199.   _WKSTA_INFO_1028 = record
  200.     wki1028_print_buf_time: DWORD;
  201.   end;
  202.   {$EXTERNALSYM _WKSTA_INFO_1028}
  203.   TWkstaInfo1028 = _WKSTA_INFO_1028;
  204.   WKSTA_INFO_1028 = _WKSTA_INFO_1028;
  205.   {$EXTERNALSYM WKSTA_INFO_1028}
  206.   PWkstaInfo1032 = ^TWkstaInfo1032;
  207.   _WKSTA_INFO_1032 = record
  208.     wki1032_wrk_heuristics: DWORD;
  209.   end;
  210.   {$EXTERNALSYM _WKSTA_INFO_1032}
  211.   TWkstaInfo1032 = _WKSTA_INFO_1032;
  212.   WKSTA_INFO_1032 = _WKSTA_INFO_1032;
  213.   {$EXTERNALSYM WKSTA_INFO_1032}
  214. // The following levels are settable on NT systems, and have no
  215. // effect on down-level systems (i.e. LANMan 2.x) since these
  216. // fields cannot be set on them:
  217.   PWkstaInfo1013 = ^TWkstaInfo1013;
  218.   _WKSTA_INFO_1013 = record
  219.     wki1013_keep_conn: DWORD;
  220.   end;
  221.   {$EXTERNALSYM _WKSTA_INFO_1013}
  222.   TWkstaInfo1013 = _WKSTA_INFO_1013;
  223.   WKSTA_INFO_1013 = _WKSTA_INFO_1013;
  224.   {$EXTERNALSYM WKSTA_INFO_1013}
  225.   PWkstaInfo1018 = ^TWkstaInfo1018;
  226.   _WKSTA_INFO_1018 = record
  227.     wki1018_sess_timeout: DWORD;
  228.   end;
  229.   {$EXTERNALSYM _WKSTA_INFO_1018}
  230.   TWkstaInfo1018 = _WKSTA_INFO_1018;
  231.   WKSTA_INFO_1018 = _WKSTA_INFO_1018;
  232.   {$EXTERNALSYM WKSTA_INFO_1018}
  233.   PWkstaInfo1023 = ^TWkstaInfo1023;
  234.   _WKSTA_INFO_1023 = record
  235.     wki1023_siz_char_buf: DWORD;
  236.   end;
  237.   {$EXTERNALSYM _WKSTA_INFO_1023}
  238.   TWkstaInfo1023 = _WKSTA_INFO_1023;
  239.   WKSTA_INFO_1023 = _WKSTA_INFO_1023;
  240.   {$EXTERNALSYM WKSTA_INFO_1023}
  241.   PWkstaInfo1033 = ^TWkstaInfo1033;
  242.   _WKSTA_INFO_1033 = record
  243.     wki1033_max_threads: DWORD;
  244.   end;
  245.   {$EXTERNALSYM _WKSTA_INFO_1033}
  246.   TWkstaInfo1033 = _WKSTA_INFO_1033;
  247.   WKSTA_INFO_1033 = _WKSTA_INFO_1033;
  248.   {$EXTERNALSYM WKSTA_INFO_1033}
  249. // The following levels are only supported on NT systems:
  250.   PWkstaInfo1041 = ^TWkstaInfo1041;
  251.   _WKSTA_INFO_1041 = record
  252.     wki1041_lock_quota: DWORD;
  253.   end;
  254.   {$EXTERNALSYM _WKSTA_INFO_1041}
  255.   TWkstaInfo1041 = _WKSTA_INFO_1041;
  256.   WKSTA_INFO_1041 = _WKSTA_INFO_1041;
  257.   {$EXTERNALSYM WKSTA_INFO_1041}
  258.   PWkstaInfo1042 = ^TWkstaInfo1042;
  259.   _WKSTA_INFO_1042 = record
  260.     wki1042_lock_increment: DWORD;
  261.   end;
  262.   {$EXTERNALSYM _WKSTA_INFO_1042}
  263.   TWkstaInfo1042 = _WKSTA_INFO_1042;
  264.   WKSTA_INFO_1042 = _WKSTA_INFO_1042;
  265.   {$EXTERNALSYM WKSTA_INFO_1042}
  266.   PWkstaInfo1043 = ^TWkstaInfo1043;
  267.   _WKSTA_INFO_1043 = record
  268.     wki1043_lock_maximum: DWORD;
  269.   end;
  270.   {$EXTERNALSYM _WKSTA_INFO_1043}
  271.   TWkstaInfo1043 = _WKSTA_INFO_1043;
  272.   WKSTA_INFO_1043 = _WKSTA_INFO_1043;
  273.   {$EXTERNALSYM WKSTA_INFO_1043}
  274.   PWkstaInfo1044 = ^TWkstaInfo1044;
  275.   _WKSTA_INFO_1044 = record
  276.     wki1044_pipe_increment: DWORD;
  277.   end;
  278.   {$EXTERNALSYM _WKSTA_INFO_1044}
  279.   TWkstaInfo1044 = _WKSTA_INFO_1044;
  280.   WKSTA_INFO_1044 = _WKSTA_INFO_1044;
  281.   {$EXTERNALSYM WKSTA_INFO_1044}
  282.   PWkstaInfo1045 = ^TWkstaInfo1045;
  283.   _WKSTA_INFO_1045 = record
  284.     wki1045_pipe_maximum: DWORD;
  285.   end;
  286.   {$EXTERNALSYM _WKSTA_INFO_1045}
  287.   TWkstaInfo1045 = _WKSTA_INFO_1045;
  288.   WKSTA_INFO_1045 = _WKSTA_INFO_1045;
  289.   {$EXTERNALSYM WKSTA_INFO_1045}
  290.   PWkstaInfo1046 = ^TWkstaInfo1046;
  291.   _WKSTA_INFO_1046 = record
  292.     wki1046_dormant_file_limit: DWORD;
  293.   end;
  294.   {$EXTERNALSYM _WKSTA_INFO_1046}
  295.   TWkstaInfo1046 = _WKSTA_INFO_1046;
  296.   WKSTA_INFO_1046 = _WKSTA_INFO_1046;
  297.   {$EXTERNALSYM WKSTA_INFO_1046}
  298.   PWkstaInfo1047 = ^TWkstaInfo1047;
  299.   _WKSTA_INFO_1047 = record
  300.     wki1047_cache_file_timeout: DWORD;
  301.   end;
  302.   {$EXTERNALSYM _WKSTA_INFO_1047}
  303.   TWkstaInfo1047 = _WKSTA_INFO_1047;
  304.   WKSTA_INFO_1047 = _WKSTA_INFO_1047;
  305.   {$EXTERNALSYM WKSTA_INFO_1047}
  306.   PWkstaInfo1048 = ^TWkstaInfo1048;
  307.   _WKSTA_INFO_1048 = record
  308.     wki1048_use_opportunistic_locking: BOOL;
  309.   end;
  310.   {$EXTERNALSYM _WKSTA_INFO_1048}
  311.   TWkstaInfo1048 = _WKSTA_INFO_1048;
  312.   WKSTA_INFO_1048 = _WKSTA_INFO_1048;
  313.   {$EXTERNALSYM WKSTA_INFO_1048}
  314.   PWkstaInfo1049 = ^TWkstaInfo1049;
  315.   _WKSTA_INFO_1049 = record
  316.     wki1049_use_unlock_behind: BOOL;
  317.   end;
  318.   {$EXTERNALSYM _WKSTA_INFO_1049}
  319.   TWkstaInfo1049 = _WKSTA_INFO_1049;
  320.   WKSTA_INFO_1049 = _WKSTA_INFO_1049;
  321.   {$EXTERNALSYM WKSTA_INFO_1049}
  322.   PWkstaInfo1050 = ^TWkstaInfo1050;
  323.   _WKSTA_INFO_1050 = record
  324.     wki1050_use_close_behind: BOOL;
  325.   end;
  326.   {$EXTERNALSYM _WKSTA_INFO_1050}
  327.   TWkstaInfo1050 = _WKSTA_INFO_1050;
  328.   WKSTA_INFO_1050 = _WKSTA_INFO_1050;
  329.   {$EXTERNALSYM WKSTA_INFO_1050}
  330.   PWkstaInfo1051 = ^TWkstaInfo1051;
  331.   _WKSTA_INFO_1051 = record
  332.     wki1051_buf_named_pipes: BOOL;
  333.   end;
  334.   {$EXTERNALSYM _WKSTA_INFO_1051}
  335.   TWkstaInfo1051 = _WKSTA_INFO_1051;
  336.   WKSTA_INFO_1051 = _WKSTA_INFO_1051;
  337.   {$EXTERNALSYM WKSTA_INFO_1051}
  338.   PWkstaInfo1052 = ^TWkstaInfo1052;
  339.   _WKSTA_INFO_1052 = record
  340.     wki1052_use_lock_read_unlock: BOOL;
  341.   end;
  342.   {$EXTERNALSYM _WKSTA_INFO_1052}
  343.   TWkstaInfo1052 = _WKSTA_INFO_1052;
  344.   WKSTA_INFO_1052 = _WKSTA_INFO_1052;
  345.   {$EXTERNALSYM WKSTA_INFO_1052}
  346.   PWkstaInfo1053 = ^TWkstaInfo1053;
  347.   _WKSTA_INFO_1053 = record
  348.     wki1053_utilize_nt_caching: BOOL;
  349.   end;
  350.   {$EXTERNALSYM _WKSTA_INFO_1053}
  351.   TWkstaInfo1053 = _WKSTA_INFO_1053;
  352.   WKSTA_INFO_1053 = _WKSTA_INFO_1053;
  353.   {$EXTERNALSYM WKSTA_INFO_1053}
  354.   PWkstaInfo1054 = ^TWkstaInfo1054;
  355.   _WKSTA_INFO_1054 = record
  356.     wki1054_use_raw_read: BOOL;
  357.   end;
  358.   {$EXTERNALSYM _WKSTA_INFO_1054}
  359.   TWkstaInfo1054 = _WKSTA_INFO_1054;
  360.   WKSTA_INFO_1054 = _WKSTA_INFO_1054;
  361.   {$EXTERNALSYM WKSTA_INFO_1054}
  362.   PWkstaInfo1055 = ^TWkstaInfo1055;
  363.   _WKSTA_INFO_1055 = record
  364.     wki1055_use_raw_write: BOOL;
  365.   end;
  366.   {$EXTERNALSYM _WKSTA_INFO_1055}
  367.   TWkstaInfo1055 = _WKSTA_INFO_1055;
  368.   WKSTA_INFO_1055 = _WKSTA_INFO_1055;
  369.   {$EXTERNALSYM WKSTA_INFO_1055}
  370.   PWkstaInfo1056 = ^TWkstaInfo1056;
  371.   _WKSTA_INFO_1056 = record
  372.     wki1056_use_write_raw_data: BOOL;
  373.   end;
  374.   {$EXTERNALSYM _WKSTA_INFO_1056}
  375.   TWkstaInfo1056 = _WKSTA_INFO_1056;
  376.   WKSTA_INFO_1056 = _WKSTA_INFO_1056;
  377.   {$EXTERNALSYM WKSTA_INFO_1056}
  378.   PWkstaInfo1057 = ^TWkstaInfo1057;
  379.   _WKSTA_INFO_1057 = record
  380.     wki1057_use_encryption: BOOL;
  381.   end;
  382.   {$EXTERNALSYM _WKSTA_INFO_1057}
  383.   TWkstaInfo1057 = _WKSTA_INFO_1057;
  384.   WKSTA_INFO_1057 = _WKSTA_INFO_1057;
  385.   {$EXTERNALSYM WKSTA_INFO_1057}
  386.   PWkstaInfo1058 = ^TWkstaInfo1058;
  387.   _WKSTA_INFO_1058 = record
  388.     wki1058_buf_files_deny_write: BOOL;
  389.   end;
  390.   {$EXTERNALSYM _WKSTA_INFO_1058}
  391.   TWkstaInfo1058 = _WKSTA_INFO_1058;
  392.   WKSTA_INFO_1058 = _WKSTA_INFO_1058;
  393.   {$EXTERNALSYM WKSTA_INFO_1058}
  394.   PWkstaInfo1059 = ^TWkstaInfo1059;
  395.   _WKSTA_INFO_1059 = record
  396.     wki1059_buf_read_only_files: BOOL;
  397.   end;
  398.   {$EXTERNALSYM _WKSTA_INFO_1059}
  399.   TWkstaInfo1059 = _WKSTA_INFO_1059;
  400.   WKSTA_INFO_1059 = _WKSTA_INFO_1059;
  401.   {$EXTERNALSYM WKSTA_INFO_1059}
  402.   PWkstaInfo1060 = ^TWkstaInfo1060;
  403.   _WKSTA_INFO_1060 = record
  404.     wki1060_force_core_create_mode: BOOL;
  405.   end;
  406.   {$EXTERNALSYM _WKSTA_INFO_1060}
  407.   TWkstaInfo1060 = _WKSTA_INFO_1060;
  408.   WKSTA_INFO_1060 = _WKSTA_INFO_1060;
  409.   {$EXTERNALSYM WKSTA_INFO_1060}
  410.   PWkstaInfo1061 = ^TWkstaInfo1061;
  411.   _WKSTA_INFO_1061 = record
  412.     wki1061_use_512_byte_max_transfer: BOOL;
  413.   end;
  414.   {$EXTERNALSYM _WKSTA_INFO_1061}
  415.   TWkstaInfo1061 = _WKSTA_INFO_1061;
  416.   WKSTA_INFO_1061 = _WKSTA_INFO_1061;
  417.   {$EXTERNALSYM WKSTA_INFO_1061}
  418.   PWkstaInfo1062 = ^TWkstaInfo1062;
  419.   _WKSTA_INFO_1062 = record
  420.     wki1062_read_ahead_throughput: DWORD;
  421.   end;
  422.   {$EXTERNALSYM _WKSTA_INFO_1062}
  423.   TWkstaInfo1062 = _WKSTA_INFO_1062;
  424.   WKSTA_INFO_1062 = _WKSTA_INFO_1062;
  425.   {$EXTERNALSYM WKSTA_INFO_1062}
  426. // NetWkstaUserGetInfo (local only) and NetWkstaUserEnum -
  427. //     no access restrictions.
  428.   PWkstaUserInfo0 = ^TWkstaUserInfo0;
  429.   _WKSTA_USER_INFO_0 = record
  430.     wkui0_username: LPWSTR;
  431.   end;
  432.   {$EXTERNALSYM _WKSTA_USER_INFO_0}
  433.   TWkstaUserInfo0 = _WKSTA_USER_INFO_0;
  434.   WKSTA_USER_INFO_0 = _WKSTA_USER_INFO_0;
  435.   {$EXTERNALSYM WKSTA_USER_INFO_0}
  436. // NetWkstaUserGetInfo (local only) and NetWkstaUserEnum -
  437. //     no access restrictions.
  438.   PWkstaUserInfo1 = ^TWkstaUserInfo1;
  439.   _WKSTA_USER_INFO_1 = record
  440.     wkui1_username: LPWSTR;
  441.     wkui1_logon_domain: LPWSTR;
  442.     wkui1_oth_domains: LPWSTR;
  443.     wkui1_logon_server: LPWSTR;
  444.   end;
  445.   {$EXTERNALSYM _WKSTA_USER_INFO_1}
  446.   TWkstaUserInfo1 = _WKSTA_USER_INFO_1;
  447.   WKSTA_USER_INFO_1 = _WKSTA_USER_INFO_1;
  448.   {$EXTERNALSYM WKSTA_USER_INFO_1}
  449. // NetWkstaUserSetInfo - local access.
  450.   PWkstaUserInfo1101 = ^TWkstaUserInfo1101;
  451.   _WKSTA_USER_INFO_1101 = record
  452.     wkui1101_oth_domains: LPWSTR;
  453.   end;
  454.   {$EXTERNALSYM _WKSTA_USER_INFO_1101}
  455.   TWkstaUserInfo1101 = _WKSTA_USER_INFO_1101;
  456.   WKSTA_USER_INFO_1101 = _WKSTA_USER_INFO_1101;
  457.   {$EXTERNALSYM WKSTA_USER_INFO_1101}
  458. // NetWkstaTransportAdd - admin access
  459.   PWkstaTransportInfo0 = ^TWkstaTransportInfo0;
  460.   _WKSTA_TRANSPORT_INFO_0 = record
  461.     wkti0_quality_of_service: DWORD;
  462.     wkti0_number_of_vcs: DWORD;
  463.     wkti0_transport_name: LPWSTR;
  464.     wkti0_transport_address: LPWSTR;
  465.     wkti0_wan_ish: BOOL;
  466.   end;
  467.   {$EXTERNALSYM _WKSTA_TRANSPORT_INFO_0}
  468.   TWkstaTransportInfo0 = _WKSTA_TRANSPORT_INFO_0;
  469.   WKSTA_TRANSPORT_INFO_0 = _WKSTA_TRANSPORT_INFO_0;
  470.   {$EXTERNALSYM WKSTA_TRANSPORT_INFO_0}
  471. // Special Values and Constants
  472. // Identifiers for use as NetWkstaSetInfo parmnum parameter
  473. // One of these values indicates the parameter within an information
  474. // structure that is invalid when ERROR_INVALID_PARAMETER is returned by
  475. // NetWkstaSetInfo.
  476. const
  477.   WKSTA_PLATFORM_ID_PARMNUM               = 100;
  478.   {$EXTERNALSYM WKSTA_PLATFORM_ID_PARMNUM}
  479.   WKSTA_COMPUTERNAME_PARMNUM              = 1;
  480.   {$EXTERNALSYM WKSTA_COMPUTERNAME_PARMNUM}
  481.   WKSTA_LANGROUP_PARMNUM                  = 2;
  482.   {$EXTERNALSYM WKSTA_LANGROUP_PARMNUM}
  483.   WKSTA_VER_MAJOR_PARMNUM                 = 4;
  484.   {$EXTERNALSYM WKSTA_VER_MAJOR_PARMNUM}
  485.   WKSTA_VER_MINOR_PARMNUM                 = 5;
  486.   {$EXTERNALSYM WKSTA_VER_MINOR_PARMNUM}
  487.   WKSTA_LOGGED_ON_USERS_PARMNUM           = 6;
  488.   {$EXTERNALSYM WKSTA_LOGGED_ON_USERS_PARMNUM}
  489.   WKSTA_LANROOT_PARMNUM                   = 7;
  490.   {$EXTERNALSYM WKSTA_LANROOT_PARMNUM}
  491.   WKSTA_LOGON_DOMAIN_PARMNUM              = 8;
  492.   {$EXTERNALSYM WKSTA_LOGON_DOMAIN_PARMNUM}
  493.   WKSTA_LOGON_SERVER_PARMNUM              = 9;
  494.   {$EXTERNALSYM WKSTA_LOGON_SERVER_PARMNUM}
  495.   WKSTA_CHARWAIT_PARMNUM                  = 10;  // Supported by down-level.
  496.   {$EXTERNALSYM WKSTA_CHARWAIT_PARMNUM}
  497.   WKSTA_CHARTIME_PARMNUM                  = 11;  // Supported by down-level.
  498.   {$EXTERNALSYM WKSTA_CHARTIME_PARMNUM}
  499.   WKSTA_CHARCOUNT_PARMNUM                 = 12;  // Supported by down-level.
  500.   {$EXTERNALSYM WKSTA_CHARCOUNT_PARMNUM}
  501.   WKSTA_KEEPCONN_PARMNUM                  = 13;
  502.   {$EXTERNALSYM WKSTA_KEEPCONN_PARMNUM}
  503.   WKSTA_KEEPSEARCH_PARMNUM                = 14;
  504.   {$EXTERNALSYM WKSTA_KEEPSEARCH_PARMNUM}
  505.   WKSTA_MAXCMDS_PARMNUM                   = 15;
  506.   {$EXTERNALSYM WKSTA_MAXCMDS_PARMNUM}
  507.   WKSTA_NUMWORKBUF_PARMNUM                = 16;
  508.   {$EXTERNALSYM WKSTA_NUMWORKBUF_PARMNUM}
  509.   WKSTA_MAXWRKCACHE_PARMNUM               = 17;
  510.   {$EXTERNALSYM WKSTA_MAXWRKCACHE_PARMNUM}
  511.   WKSTA_SESSTIMEOUT_PARMNUM               = 18;
  512.   {$EXTERNALSYM WKSTA_SESSTIMEOUT_PARMNUM}
  513.   WKSTA_SIZERROR_PARMNUM                  = 19;
  514.   {$EXTERNALSYM WKSTA_SIZERROR_PARMNUM}
  515.   WKSTA_NUMALERTS_PARMNUM                 = 20;
  516.   {$EXTERNALSYM WKSTA_NUMALERTS_PARMNUM}
  517.   WKSTA_NUMSERVICES_PARMNUM               = 21;
  518.   {$EXTERNALSYM WKSTA_NUMSERVICES_PARMNUM}
  519.   WKSTA_NUMCHARBUF_PARMNUM                = 22;
  520.   {$EXTERNALSYM WKSTA_NUMCHARBUF_PARMNUM}
  521.   WKSTA_SIZCHARBUF_PARMNUM                = 23;
  522.   {$EXTERNALSYM WKSTA_SIZCHARBUF_PARMNUM}
  523.   WKSTA_ERRLOGSZ_PARMNUM                  = 27;  // Supported by down-level.
  524.   {$EXTERNALSYM WKSTA_ERRLOGSZ_PARMNUM}
  525.   WKSTA_PRINTBUFTIME_PARMNUM              = 28;  // Supported by down-level.
  526.   {$EXTERNALSYM WKSTA_PRINTBUFTIME_PARMNUM}
  527.   WKSTA_SIZWORKBUF_PARMNUM                = 29;
  528.   {$EXTERNALSYM WKSTA_SIZWORKBUF_PARMNUM}
  529.   WKSTA_MAILSLOTS_PARMNUM                 = 30;
  530.   {$EXTERNALSYM WKSTA_MAILSLOTS_PARMNUM}
  531.   WKSTA_NUMDGRAMBUF_PARMNUM               = 31;
  532.   {$EXTERNALSYM WKSTA_NUMDGRAMBUF_PARMNUM}
  533.   WKSTA_WRKHEURISTICS_PARMNUM             = 32;  // Supported by down-level.
  534.   {$EXTERNALSYM WKSTA_WRKHEURISTICS_PARMNUM}
  535.   WKSTA_MAXTHREADS_PARMNUM                = 33;
  536.   {$EXTERNALSYM WKSTA_MAXTHREADS_PARMNUM}
  537.   WKSTA_LOCKQUOTA_PARMNUM                 = 41;
  538.   {$EXTERNALSYM WKSTA_LOCKQUOTA_PARMNUM}
  539.   WKSTA_LOCKINCREMENT_PARMNUM             = 42;
  540.   {$EXTERNALSYM WKSTA_LOCKINCREMENT_PARMNUM}
  541.   WKSTA_LOCKMAXIMUM_PARMNUM               = 43;
  542.   {$EXTERNALSYM WKSTA_LOCKMAXIMUM_PARMNUM}
  543.   WKSTA_PIPEINCREMENT_PARMNUM             = 44;
  544.   {$EXTERNALSYM WKSTA_PIPEINCREMENT_PARMNUM}
  545.   WKSTA_PIPEMAXIMUM_PARMNUM               = 45;
  546.   {$EXTERNALSYM WKSTA_PIPEMAXIMUM_PARMNUM}
  547.   WKSTA_DORMANTFILELIMIT_PARMNUM          = 46;
  548.   {$EXTERNALSYM WKSTA_DORMANTFILELIMIT_PARMNUM}
  549.   WKSTA_CACHEFILETIMEOUT_PARMNUM          = 47;
  550.   {$EXTERNALSYM WKSTA_CACHEFILETIMEOUT_PARMNUM}
  551.   WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM   = 48;
  552.   {$EXTERNALSYM WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM}
  553.   WKSTA_USEUNLOCKBEHIND_PARMNUM           = 49;
  554.   {$EXTERNALSYM WKSTA_USEUNLOCKBEHIND_PARMNUM}
  555.   WKSTA_USECLOSEBEHIND_PARMNUM            = 50;
  556.   {$EXTERNALSYM WKSTA_USECLOSEBEHIND_PARMNUM}
  557.   WKSTA_BUFFERNAMEDPIPES_PARMNUM          = 51;
  558.   {$EXTERNALSYM WKSTA_BUFFERNAMEDPIPES_PARMNUM}
  559.   WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM   = 52;
  560.   {$EXTERNALSYM WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM}
  561.   WKSTA_UTILIZENTCACHING_PARMNUM          = 53;
  562.   {$EXTERNALSYM WKSTA_UTILIZENTCACHING_PARMNUM}
  563.   WKSTA_USERAWREAD_PARMNUM                = 54;
  564.   {$EXTERNALSYM WKSTA_USERAWREAD_PARMNUM}
  565.   WKSTA_USERAWWRITE_PARMNUM               = 55;
  566.   {$EXTERNALSYM WKSTA_USERAWWRITE_PARMNUM}
  567.   WKSTA_USEWRITERAWWITHDATA_PARMNUM       = 56;
  568.   {$EXTERNALSYM WKSTA_USEWRITERAWWITHDATA_PARMNUM}
  569.   WKSTA_USEENCRYPTION_PARMNUM             = 57;
  570.   {$EXTERNALSYM WKSTA_USEENCRYPTION_PARMNUM}
  571.   WKSTA_BUFFILESWITHDENYWRITE_PARMNUM     = 58;
  572.   {$EXTERNALSYM WKSTA_BUFFILESWITHDENYWRITE_PARMNUM}
  573.   WKSTA_BUFFERREADONLYFILES_PARMNUM       = 59;
  574.   {$EXTERNALSYM WKSTA_BUFFERREADONLYFILES_PARMNUM}
  575.   WKSTA_FORCECORECREATEMODE_PARMNUM       = 60;
  576.   {$EXTERNALSYM WKSTA_FORCECORECREATEMODE_PARMNUM}
  577.   WKSTA_USE512BYTESMAXTRANSFER_PARMNUM    = 61;
  578.   {$EXTERNALSYM WKSTA_USE512BYTESMAXTRANSFER_PARMNUM}
  579.   WKSTA_READAHEADTHRUPUT_PARMNUM          = 62;
  580.   {$EXTERNALSYM WKSTA_READAHEADTHRUPUT_PARMNUM}
  581. // One of these values indicates the parameter within an information
  582. // structure that is invalid when ERROR_INVALID_PARAMETER is returned by
  583. // NetWkstaUserSetInfo.
  584.   WKSTA_OTH_DOMAINS_PARMNUM              = 101;
  585.   {$EXTERNALSYM WKSTA_OTH_DOMAINS_PARMNUM}
  586. // One of these values indicates the parameter within an information
  587. // structure that is invalid when ERROR_INVALID_PARAMETER is returned by
  588. // NetWkstaTransportAdd.
  589.   TRANSPORT_QUALITYOFSERVICE_PARMNUM     = 201;
  590.   {$EXTERNALSYM TRANSPORT_QUALITYOFSERVICE_PARMNUM}
  591.   TRANSPORT_NAME_PARMNUM                 = 202;
  592.   {$EXTERNALSYM TRANSPORT_NAME_PARMNUM}
  593. // Translated from LMAPIBUF.H
  594. function NetApiBufferAllocate(ByteCount: DWORD; var Buffer: Pointer): NET_API_STATUS; stdcall;
  595. {$EXTERNALSYM NetApiBufferAllocate}
  596. function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall;
  597. {$EXTERNALSYM NetApiBufferFree}
  598. function NetApiBufferReallocate(OldBuffer: Pointer; NewByteCount: DWORD;
  599.   var NewBuffer: Pointer): NET_API_STATUS; stdcall;
  600. {$EXTERNALSYM NetApiBufferReallocate}
  601. function NetApiBufferSize(Buffer: Pointer; var ByteCount: DWORD): NET_API_STATUS; stdcall;
  602. {$EXTERNALSYM NetApiBufferSize}
  603. // The following private function will go away eventually.
  604. // Call NetApiBufferAllocate instead.
  605. // Internal Function
  606. function NetapipBufferAllocate(ByteCount: DWORD; var Buffer: Pointer): NET_API_STATUS; stdcall;
  607. {$EXTERNALSYM NetapipBufferAllocate}
  608. // Translated from LMCONFIG.H
  609. function NetConfigGet(server: LPCWSTR; component: LPCWSTR; parameter: LPCWSTR;
  610.   bufptr: Pointer; var totalavailable: DWORD): NET_API_STATUS; stdcall;
  611. {$EXTERNALSYM NetConfigGet}
  612. function NetConfigGetAll(server: LPCWSTR; component: LPCWSTR; bufptr: Pointer;
  613.   var totalavailable: DWORD): NET_API_STATUS; stdcall;
  614. {$EXTERNALSYM NetConfigGetAll}
  615. function NetConfigSet(server: LPCWSTR; reserved1: LPCWSTR; component: LPCWSTR;
  616.   level: DWORD; reserved2: DWORD; buf: Pointer; reserved3: DWORD): NET_API_STATUS; stdcall;
  617. {$EXTERNALSYM NetConfigSet}
  618. function NetRegisterDomainNameChangeNotification(NotificationEventHandle: PHandle): NET_API_STATUS; stdcall;
  619. {$EXTERNALSYM NetRegisterDomainNameChangeNotification}
  620. function NetUnregisterDomainNameChangeNotification(NotificationEventHandle: THandle): NET_API_STATUS; stdcall;
  621. {$EXTERNALSYM NetUnregisterDomainNameChangeNotification}
  622. // Data Structures - Config
  623. type
  624.   PConfigInfo0 = ^TConfigInfo0;
  625.   _CONFIG_INFO_0 = record
  626.     cfgi0_key: LPWSTR;
  627.     cfgi0_data: LPWSTR;
  628.   end;
  629.   {$EXTERNALSYM _CONFIG_INFO_0}
  630.   TConfigInfo0 = _CONFIG_INFO_0;
  631.   CONFIG_INFO_0 = _CONFIG_INFO_0;
  632.   {$EXTERNALSYM CONFIG_INFO_0}
  633. // Translated from LMSTATS.H
  634. // Function Prototypes - Statistics
  635. function NetStatisticsGet(server: LPWSTR; service: LPWSTR; level: DWORD;
  636.   options: DWORD; bufptr: Pointer): NET_API_STATUS; stdcall;
  637. {$EXTERNALSYM NetStatisticsGet}
  638. // Data Structures - Statistics
  639. type
  640.   PStatWorkstation0 = ^TStatWorkstation0;
  641.   _STAT_WORKSTATION_0 = record
  642.     stw0_start: DWORD;
  643.     stw0_numNCB_r: DWORD;
  644.     stw0_numNCB_s: DWORD;
  645.     stw0_numNCB_a: DWORD;
  646.     stw0_fiNCB_r: DWORD;
  647.     stw0_fiNCB_s: DWORD;
  648.     stw0_fiNCB_a: DWORD;
  649.     stw0_fcNCB_r: DWORD;
  650.     stw0_fcNCB_s: DWORD;
  651.     stw0_fcNCB_a: DWORD;
  652.     stw0_sesstart: DWORD;
  653.     stw0_sessfailcon: DWORD;
  654.     stw0_sessbroke: DWORD;
  655.     stw0_uses: DWORD;
  656.     stw0_usefail: DWORD;
  657.     stw0_autorec: DWORD;
  658.     stw0_bytessent_r_lo: DWORD;
  659.     stw0_bytessent_r_hi: DWORD;
  660.     stw0_bytesrcvd_r_lo: DWORD;
  661.     stw0_bytesrcvd_r_hi: DWORD;
  662.     stw0_bytessent_s_lo: DWORD;
  663.     stw0_bytessent_s_hi: DWORD;
  664.     stw0_bytesrcvd_s_lo: DWORD;
  665.     stw0_bytesrcvd_s_hi: DWORD;
  666.     stw0_bytessent_a_lo: DWORD;
  667.     stw0_bytessent_a_hi: DWORD;
  668.     stw0_bytesrcvd_a_lo: DWORD;
  669.     stw0_bytesrcvd_a_hi: DWORD;
  670.     stw0_reqbufneed: DWORD;
  671.     stw0_bigbufneed: DWORD;
  672.   end;
  673.   {$EXTERNALSYM _STAT_WORKSTATION_0}
  674.   TStatWorkstation0 = _STAT_WORKSTATION_0;
  675.   STAT_WORKSTATION_0 = _STAT_WORKSTATION_0;
  676.   {$EXTERNALSYM STAT_WORKSTATION_0}
  677.   PStatServer0 = ^TStatServer0;
  678.   _STAT_SERVER_0 = record
  679.     sts0_start: DWORD;
  680.     sts0_fopens: DWORD;
  681.     sts0_devopens: DWORD;
  682.     sts0_jobsqueued: DWORD;
  683.     sts0_sopens: DWORD;
  684.     sts0_stimedout: DWORD;
  685.     sts0_serrorout: DWORD;
  686.     sts0_pwerrors: DWORD;
  687.     sts0_permerrors: DWORD;
  688.     sts0_syserrors: DWORD;
  689.     sts0_bytessent_low: DWORD;
  690.     sts0_bytessent_high: DWORD;
  691.     sts0_bytesrcvd_low: DWORD;
  692.     sts0_bytesrcvd_high: DWORD;
  693.     sts0_avresponse: DWORD;
  694.     sts0_reqbufneed: DWORD;
  695.     sts0_bigbufneed: DWORD;
  696.   end;
  697.   {$EXTERNALSYM _STAT_SERVER_0}
  698.   TStatServer0 = _STAT_SERVER_0;
  699.   STAT_SERVER_0 = _STAT_SERVER_0;
  700.   {$EXTERNALSYM STAT_SERVER_0}
  701. // Special Values and Constants
  702. const
  703.   STATSOPT_CLR    = 1;
  704. {$EXTERNALSYM STATSOPT_CLR}
  705.   STATS_NO_VALUE  = DWORD(-1);
  706. {$EXTERNALSYM STATS_NO_VALUE}
  707.   STATS_OVERFLOW  = DWORD(-2);
  708. {$EXTERNALSYM STATS_OVERFLOW}
  709. // Translated from LMAUDIT.H
  710. type
  711.   PHLog = ^THLog;
  712.   _HLOG = record
  713.     time: DWORD;
  714.     last_flags: DWORD;
  715.     offset: DWORD;
  716.     rec_offset: DWORD;
  717.   end;
  718.   {$EXTERNALSYM _HLOG}
  719.   THLog = _HLOG;
  720.   HLOG = _HLOG;
  721.   {$EXTERNALSYM HLOG}
  722. const
  723.   LOGFLAGS_FORWARD  = 0;
  724.   {$EXTERNALSYM LOGFLAGS_FORWARD}
  725.   LOGFLAGS_BACKWARD = $1;
  726.   {$EXTERNALSYM LOGFLAGS_BACKWARD}
  727.   LOGFLAGS_SEEK     = $2;
  728.   {$EXTERNALSYM LOGFLAGS_SEEK}
  729. // Function Prototypes - Audit
  730. function NetAuditClear(server, backupfile, service: LPCWSTR): NET_API_STATUS; stdcall;
  731. {$EXTERNALSYM NetAuditClear}
  732. function NetAuditRead(server: LPCWSTR; service: LPCWSTR; auditloghandle: PHLog;
  733.   offset: DWORD; reserved1: PDWORD; reserved2: DWORD; offsetflag: DWORD;
  734.   bufptr: Pointer; prefmaxlen: DWORD; var bytesread: DWORD;
  735.   var totalavailable: DWORD): NET_API_STATUS; stdcall;
  736. {$EXTERNALSYM NetAuditRead}
  737. function NetAuditWrite(type_: DWORD; buf: Pointer; numbytes: DWORD;
  738.   service: LPCWSTR; reserved: Pointer): NET_API_STATUS; stdcall;
  739. {$EXTERNALSYM NetAuditWrite}
  740. // Data Structures - Audit
  741. type
  742.   PAuditEntry = ^TAuditEntry;
  743.   _AUDIT_ENTRY = record
  744.     ae_len: DWORD;
  745.     ae_reserved: DWORD;
  746.     ae_time: DWORD;
  747.     ae_type: DWORD;
  748.     ae_data_offset: DWORD; //* Offset from beginning address of audit_entry */
  749.     ae_data_size: DWORD;   // byte count of ae_data area (not incl pad).
  750.   end;
  751.   {$EXTERNALSYM _AUDIT_ENTRY}
  752.   TAuditEntry = _AUDIT_ENTRY;
  753.   AUDIT_ENTRY = _AUDIT_ENTRY;
  754.   {$EXTERNALSYM AUDIT_ENTRY}
  755.   PAeSrvstatus = ^TAeSrvstatus;
  756.   _AE_SRVSTATUS = record
  757.     ae_sv_status: DWORD;
  758.   end;
  759.   {$EXTERNALSYM _AE_SRVSTATUS}
  760.   TAeSrvstatus = _AE_SRVSTATUS;
  761. //  AE_SRVSTATUS = _AE_SRVSTATUS;
  762. //  {$EXTERNALSYM AE_SRVSTATUS}
  763.   PAeSesslogOn = ^TAwSesslogOn;
  764.   _AE_SESSLOGON = record
  765.     ae_so_compname: DWORD;
  766.     ae_so_username: DWORD;
  767.     ae_so_privilege: DWORD;
  768.   end;
  769.   {$EXTERNALSYM _AE_SESSLOGON}
  770.   TAwSesslogOn = _AE_SESSLOGON;
  771. //  AE_SESSLOGON = _AE_SESSLOGON;
  772. //  {$EXTERNALSYM AE_SESSLOGON}
  773.   PAeSesslogOff = ^TAeSesslogOff;
  774.   _AE_SESSLOGOFF = record
  775.     ae_sf_compname: DWORD;
  776.     ae_sf_username: DWORD;
  777.     ae_sf_reason: DWORD;
  778.   end;
  779.   {$EXTERNALSYM _AE_SESSLOGOFF}
  780.   TAeSesslogOff = _AE_SESSLOGOFF;
  781. //  AE_SESSLOGOFF = _AE_SESSLOGOFF;
  782. //  {$EXTERNALSYM AE_SESSLOGOFF}
  783.   PAeSessPwErr = ^TAeSessPwErr;
  784.   _AE_SESSPWERR = record
  785.     ae_sp_compname: DWORD;
  786.     ae_sp_username: DWORD;
  787.   end;
  788.   {$EXTERNALSYM _AE_SESSPWERR}
  789.   TAeSessPwErr = _AE_SESSPWERR;
  790. //  AE_SESSPWERR = _AE_SESSPWERR;
  791. //  {$EXTERNALSYM AE_SESSPWERR}
  792.   PAeConnStart = ^TAeConnStart;
  793.   _AE_CONNSTART = record
  794.     ae_ct_compname: DWORD;
  795.     ae_ct_username: DWORD;
  796.     ae_ct_netname: DWORD;
  797.     ae_ct_connid: DWORD;
  798.   end;
  799.   {$EXTERNALSYM _AE_CONNSTART}
  800.   TAeConnStart = _AE_CONNSTART;
  801. //  AE_CONNSTART = _AE_CONNSTART;
  802. //  {$EXTERNALSYM AE_CONNSTART}
  803.   PAeConnStop = ^TAeConnStop;
  804.   _AE_CONNSTOP = record
  805.     ae_cp_compname: DWORD;
  806.     ae_cp_username: DWORD;
  807.     ae_cp_netname: DWORD;
  808.     ae_cp_connid: DWORD;
  809.     ae_cp_reason: DWORD;
  810.   end;
  811.   {$EXTERNALSYM _AE_CONNSTOP}
  812.   TAeConnStop = _AE_CONNSTOP;
  813. //  AE_CONNSTOP = _AE_CONNSTOP;
  814. //  {$EXTERNALSYM AE_CONNSTOP}
  815.   PAeConnRej = ^TAeConnRej;
  816.   _AE_CONNREJ = record
  817.     ae_cr_compname: DWORD;
  818.     ae_cr_username: DWORD;
  819.     ae_cr_netname: DWORD;
  820.     ae_cr_reason: DWORD;
  821.   end;
  822.   {$EXTERNALSYM _AE_CONNREJ}
  823.   TAeConnRej = _AE_CONNREJ;
  824. //  AE_CONNREJ = _AE_CONNREJ;
  825. //  {$EXTERNALSYM AE_CONNREJ}
  826.   PAeResAccess = ^TAeResAccess;
  827.   _AE_RESACCESS = record
  828.     ae_ra_compname: DWORD;
  829.     ae_ra_username: DWORD;
  830.     ae_ra_resname: DWORD;
  831.     ae_ra_operation: DWORD;
  832.     ae_ra_returncode: DWORD;
  833.     ae_ra_restype: DWORD;
  834.     ae_ra_fileid: DWORD;
  835.   end;
  836.   {$EXTERNALSYM _AE_RESACCESS}
  837.   TAeResAccess = _AE_RESACCESS;
  838. //  AE_RESACCESS = _AE_RESACCESS;
  839. //  {$EXTERNALSYM AE_RESACCESS}
  840.   PAeResAccessRej = ^TAeResAccessRej;
  841.   _AE_RESACCESSREJ = record
  842.     ae_rr_compname: DWORD;
  843.     ae_rr_username: DWORD;
  844.     ae_rr_resname: DWORD;
  845.     ae_rr_operation: DWORD;
  846.   end;
  847.   {$EXTERNALSYM _AE_RESACCESSREJ}
  848.   TAeResAccessRej = _AE_RESACCESSREJ;
  849. //  AE_RESACCESSREJ = _AE_RESACCESSREJ;
  850. //  {$EXTERNALSYM AE_RESACCESSREJ}
  851.   PAeCloseFile = ^TAeCloseFile;
  852.   _AE_CLOSEFILE = record
  853.     ae_cf_compname: DWORD;
  854.     ae_cf_username: DWORD;
  855.     ae_cf_resname: DWORD;
  856.     ae_cf_fileid: DWORD;
  857.     ae_cf_duration: DWORD;
  858.     ae_cf_reason: DWORD;
  859.   end;
  860.   {$EXTERNALSYM _AE_CLOSEFILE}
  861.   TAeCloseFile = _AE_CLOSEFILE;
  862. //  AE_CLOSEFILE = _AE_CLOSEFILE;
  863. //  {$EXTERNALSYM AE_CLOSEFILE}
  864.   PAeServiceStat = ^TAeServiceStat;
  865.   _AE_SERVICESTAT = record
  866.     ae_ss_compname: DWORD;
  867.     ae_ss_username: DWORD;
  868.     ae_ss_svcname: DWORD;
  869.     ae_ss_status: DWORD;
  870.     ae_ss_code: DWORD;
  871.     ae_ss_text: DWORD;
  872.     ae_ss_returnval: DWORD;
  873.   end;
  874.   {$EXTERNALSYM _AE_SERVICESTAT}
  875.   TAeServiceStat = _AE_SERVICESTAT;
  876. //  AE_SERVICESTAT = _AE_SERVICESTAT;
  877. //  {$EXTERNALSYM AE_SERVICESTAT}
  878.   PAeAclMod = ^TAeAclMod;
  879.   _AE_ACLMOD = record
  880.     ae_am_compname: DWORD;
  881.     ae_am_username: DWORD;
  882.     ae_am_resname: DWORD;
  883.     ae_am_action: DWORD;
  884.     ae_am_datalen: DWORD;
  885.   end;
  886.   {$EXTERNALSYM _AE_ACLMOD}
  887.   TAeAclMod = _AE_ACLMOD;
  888. //  AE_ACLMOD = _AE_ACLMOD;
  889. //  {$EXTERNALSYM AE_ACLMOD}
  890.   PAeUasMod = ^TAeUasMod;
  891.   _AE_UASMOD = record
  892.     ae_um_compname: DWORD;
  893.     ae_um_username: DWORD;
  894.     ae_um_resname: DWORD;
  895.     ae_um_rectype: DWORD;
  896.     ae_um_action: DWORD;
  897.     ae_um_datalen: DWORD;
  898.   end;
  899.   {$EXTERNALSYM _AE_UASMOD}
  900.   TAeUasMod = _AE_UASMOD;
  901. //  AE_UASMOD = _AE_UASMOD;
  902. //  {$EXTERNALSYM AE_UASMOD}
  903.   PAeNetLogon = ^TAeNetLogon;
  904.   _AE_NETLOGON = record
  905.     ae_no_compname: DWORD;
  906.     ae_no_username: DWORD;
  907.     ae_no_privilege: DWORD;
  908.     ae_no_authflags: DWORD;
  909.   end;
  910.   {$EXTERNALSYM _AE_NETLOGON}
  911.   TAeNetLogon = _AE_NETLOGON;
  912. //  AE_NETLOGON = _AE_NETLOGON;
  913. //  {$EXTERNALSYM AE_NETLOGON}
  914.   PAeNetLogoff = ^TAeNetLogoff;
  915.   _AE_NETLOGOFF = record
  916.     ae_nf_compname: DWORD;
  917.     ae_nf_username: DWORD;
  918.     ae_nf_reserved1: DWORD;
  919.     ae_nf_reserved2: DWORD;
  920.   end;
  921.   {$EXTERNALSYM _AE_NETLOGOFF}
  922.   TAeNetLogoff = _AE_NETLOGOFF;
  923. //  AE_NETLOGOFF = _AE_NETLOGOFF;
  924. //  {$EXTERNALSYM AE_NETLOGOFF}
  925.   PAeAccLim = ^TAeAccLim;
  926.   _AE_ACCLIM = record
  927.     ae_al_compname: DWORD;
  928.     ae_al_username: DWORD;
  929.     ae_al_resname: DWORD;
  930.     ae_al_limit: DWORD;
  931.   end;
  932.   {$EXTERNALSYM _AE_ACCLIM}
  933.   TAeAccLim = _AE_ACCLIM;
  934. //  AE_ACCLIM = _AE_ACCLIM;
  935. //  {$EXTERNALSYM AE_ACCLIM}
  936. const
  937.   ACTION_LOCKOUT          = 00;
  938.   {$EXTERNALSYM ACTION_LOCKOUT}
  939.   ACTION_ADMINUNLOCK      = 01;
  940.   {$EXTERNALSYM ACTION_ADMINUNLOCK}
  941. type
  942.   PAeLockout = ^TAeLockout;
  943.   _AE_LOCKOUT = record
  944.    ae_lk_compname: DWORD;               // Ptr to computername of client.
  945.    ae_lk_username: DWORD;               // Ptr to username of client (NULL
  946.                                         //  if same as computername).
  947.    ae_lk_action: DWORD;                 // Action taken on account:
  948.                                         // 0 means locked out, 1 means not.
  949.    ae_lk_bad_pw_count: DWORD;           // Bad password count at the time
  950.                                         // of lockout.
  951.   end;
  952.   {$EXTERNALSYM _AE_LOCKOUT}
  953.   TAeLockout = _AE_LOCKOUT;
  954. //  AE_LOCKOUT = _AE_LOCKOUT;
  955. //  {$EXTERNALSYM AE_LOCKOUT}
  956.   PAeGeneric = ^TAeGeneric;
  957.   _AE_GENERIC = record
  958.     ae_ge_msgfile: DWORD;
  959.     ae_ge_msgnum: DWORD;
  960.     ae_ge_params: DWORD;
  961.     ae_ge_param1: DWORD;
  962.     ae_ge_param2: DWORD;
  963.     ae_ge_param3: DWORD;
  964.     ae_ge_param4: DWORD;
  965.     ae_ge_param5: DWORD;
  966.     ae_ge_param6: DWORD;
  967.     ae_ge_param7: DWORD;
  968.     ae_ge_param8: DWORD;
  969.     ae_ge_param9: DWORD;
  970.   end;
  971.   {$EXTERNALSYM _AE_GENERIC}
  972.   TAeGeneric = _AE_GENERIC;
  973. //  AE_GENERIC = _AE_GENERIC;
  974. //  {$EXTERNALSYM AE_GENERIC}
  975. // Special Values and Constants - Audit
  976. //  Audit entry types (field ae_type in audit_entry).
  977. const
  978.   AE_SRVSTATUS    = 0;
  979.   {$EXTERNALSYM AE_SRVSTATUS}
  980.   AE_SESSLOGON    = 1;
  981.   {$EXTERNALSYM AE_SESSLOGON}
  982.   AE_SESSLOGOFF   = 2;
  983.   {$EXTERNALSYM AE_SESSLOGOFF}
  984.   AE_SESSPWERR    = 3;
  985.   {$EXTERNALSYM AE_SESSPWERR}
  986.   AE_CONNSTART    = 4;
  987.   {$EXTERNALSYM AE_CONNSTART}
  988.   AE_CONNSTOP     = 5;
  989.   {$EXTERNALSYM AE_CONNSTOP}
  990.   AE_CONNREJ      = 6;
  991.   {$EXTERNALSYM AE_CONNREJ}
  992.   AE_RESACCESS    = 7;
  993.   {$EXTERNALSYM AE_RESACCESS}
  994.   AE_RESACCESSREJ = 8;
  995.   {$EXTERNALSYM AE_RESACCESSREJ}
  996.   AE_CLOSEFILE    = 9;
  997.   {$EXTERNALSYM AE_CLOSEFILE}
  998.   AE_SERVICESTAT  = 11;
  999.   {$EXTERNALSYM AE_SERVICESTAT}
  1000.   AE_ACLMOD       = 12;
  1001.   {$EXTERNALSYM AE_ACLMOD}
  1002.   AE_UASMOD       = 13;
  1003.   {$EXTERNALSYM AE_UASMOD}
  1004.   AE_NETLOGON     = 14;
  1005.   {$EXTERNALSYM AE_NETLOGON}
  1006.   AE_NETLOGOFF    = 15;
  1007.   {$EXTERNALSYM AE_NETLOGOFF}
  1008.   AE_NETLOGDENIED = 16;
  1009.   {$EXTERNALSYM AE_NETLOGDENIED}
  1010.   AE_ACCLIMITEXCD = 17;
  1011.   {$EXTERNALSYM AE_ACCLIMITEXCD}
  1012.   AE_RESACCESS2   = 18;
  1013.   {$EXTERNALSYM AE_RESACCESS2}
  1014.   AE_ACLMODFAIL   = 19;
  1015.   {$EXTERNALSYM AE_ACLMODFAIL}
  1016.   AE_LOCKOUT      = 20;
  1017.   {$EXTERNALSYM AE_LOCKOUT}
  1018.   AE_GENERIC_TYPE = 21;
  1019.   {$EXTERNALSYM AE_GENERIC_TYPE}
  1020. // Values for ae_ss_status field of ae_srvstatus.
  1021.   AE_SRVSTART  = 0;
  1022.   {$EXTERNALSYM AE_SRVSTART}
  1023.   AE_SRVPAUSED = 1;
  1024.   {$EXTERNALSYM AE_SRVPAUSED}
  1025.   AE_SRVCONT   = 2;
  1026.   {$EXTERNALSYM AE_SRVCONT}
  1027.   AE_SRVSTOP   = 3;
  1028.   {$EXTERNALSYM AE_SRVSTOP}
  1029. //  Values for ae_so_privilege field of ae_sesslogon.
  1030.   AE_GUEST = 0;
  1031.   {$EXTERNALSYM AE_GUEST}
  1032.   AE_USER  = 1;
  1033.   {$EXTERNALSYM AE_USER}
  1034.   AE_ADMIN = 2;
  1035.   {$EXTERNALSYM AE_ADMIN}
  1036. // Values for various ae_XX_reason fields.
  1037.   AE_NORMAL        = 0;
  1038.   {$EXTERNALSYM AE_NORMAL}
  1039.   AE_USERLIMIT     = 0;
  1040.   {$EXTERNALSYM AE_USERLIMIT}
  1041.   AE_GENERAL       = 0;
  1042.   {$EXTERNALSYM AE_GENERAL}
  1043.   AE_ERROR         = 1;
  1044.   {$EXTERNALSYM AE_ERROR}
  1045.   AE_SESSDIS       = 1;
  1046.   {$EXTERNALSYM AE_SESSDIS}
  1047.   AE_BADPW         = 1;
  1048.   {$EXTERNALSYM AE_BADPW}
  1049.   AE_AUTODIS       = 2;
  1050.   {$EXTERNALSYM AE_AUTODIS}
  1051.   AE_UNSHARE       = 2;
  1052.   {$EXTERNALSYM AE_UNSHARE}
  1053.   AE_ADMINPRIVREQD = 2;
  1054.   {$EXTERNALSYM AE_ADMINPRIVREQD}
  1055.   AE_ADMINDIS      = 3;
  1056.   {$EXTERNALSYM AE_ADMINDIS}
  1057.   AE_NOACCESSPERM  = 3;
  1058.   {$EXTERNALSYM AE_NOACCESSPERM}
  1059.   AE_ACCRESTRICT   = 4;
  1060.   {$EXTERNALSYM AE_ACCRESTRICT}
  1061.   AE_NORMAL_CLOSE  = 0;
  1062.   {$EXTERNALSYM AE_NORMAL_CLOSE}
  1063.   AE_SES_CLOSE     = 1;
  1064.   {$EXTERNALSYM AE_SES_CLOSE}
  1065.   AE_ADMIN_CLOSE   = 2;
  1066.   {$EXTERNALSYM AE_ADMIN_CLOSE}
  1067. // Values for xx_subreason fields.
  1068.   AE_LIM_UNKNOWN     = 0;
  1069.   {$EXTERNALSYM AE_LIM_UNKNOWN}
  1070.   AE_LIM_LOGONHOURS  = 1;
  1071.   {$EXTERNALSYM AE_LIM_LOGONHOURS}
  1072.   AE_LIM_EXPIRED     = 2;
  1073.   {$EXTERNALSYM AE_LIM_EXPIRED}
  1074.   AE_LIM_INVAL_WKSTA = 3;
  1075.   {$EXTERNALSYM AE_LIM_INVAL_WKSTA}
  1076.   AE_LIM_DISABLED    = 4;
  1077.   {$EXTERNALSYM AE_LIM_DISABLED}
  1078.   AE_LIM_DELETED     = 5;
  1079.   {$EXTERNALSYM AE_LIM_DELETED}
  1080. // Values for xx_action fields
  1081.   AE_MOD    = 0;
  1082.   {$EXTERNALSYM AE_MOD}
  1083.   AE_DELETE = 1;
  1084.   {$EXTERNALSYM AE_DELETE}
  1085.   AE_ADD    = 2;
  1086.   {$EXTERNALSYM AE_ADD}
  1087. // Types of UAS record for um_rectype field
  1088.   AE_UAS_USER   = 0;
  1089.   {$EXTERNALSYM AE_UAS_USER}
  1090.   AE_UAS_GROUP  = 1;
  1091.   {$EXTERNALSYM AE_UAS_GROUP}
  1092.   AE_UAS_MODALS = 2;
  1093.   {$EXTERNALSYM AE_UAS_MODALS}
  1094. // Bitmasks for auditing events
  1095. //
  1096. // The parentheses around the hex constants broke h_to_inc
  1097. // and have been purged from the face of the earth.
  1098.   SVAUD_SERVICE       = $1;
  1099.   {$EXTERNALSYM SVAUD_SERVICE}
  1100.   SVAUD_GOODSESSLOGON = $6;
  1101.   {$EXTERNALSYM SVAUD_GOODSESSLOGON}
  1102.   SVAUD_BADSESSLOGON  = $18;
  1103.   {$EXTERNALSYM SVAUD_BADSESSLOGON}
  1104.   SVAUD_SESSLOGON     = (SVAUD_GOODSESSLOGON or SVAUD_BADSESSLOGON);
  1105.   {$EXTERNALSYM SVAUD_SESSLOGON}
  1106.   SVAUD_GOODNETLOGON  = $60;
  1107.   {$EXTERNALSYM SVAUD_GOODNETLOGON}
  1108.   SVAUD_BADNETLOGON   = $180;
  1109.   {$EXTERNALSYM SVAUD_BADNETLOGON}
  1110.   SVAUD_NETLOGON      = (SVAUD_GOODNETLOGON or SVAUD_BADNETLOGON);
  1111.   {$EXTERNALSYM SVAUD_NETLOGON}
  1112.   SVAUD_LOGON         = (SVAUD_NETLOGON or SVAUD_SESSLOGON);
  1113.   {$EXTERNALSYM SVAUD_LOGON}
  1114.   SVAUD_GOODUSE       = $600;
  1115.   {$EXTERNALSYM SVAUD_GOODUSE}
  1116.   SVAUD_BADUSE        = $1800;
  1117.   {$EXTERNALSYM SVAUD_BADUSE}
  1118.   SVAUD_USE           = (SVAUD_GOODUSE or SVAUD_BADUSE);
  1119.   {$EXTERNALSYM SVAUD_USE}
  1120.   SVAUD_USERLIST      = $2000;
  1121.   {$EXTERNALSYM SVAUD_USERLIST}
  1122.   SVAUD_PERMISSIONS   = $4000;
  1123.   {$EXTERNALSYM SVAUD_PERMISSIONS}
  1124.   SVAUD_RESOURCE      = $8000;
  1125.   {$EXTERNALSYM SVAUD_RESOURCE}
  1126.   SVAUD_LOGONLIM      = $00010000;
  1127.   {$EXTERNALSYM SVAUD_LOGONLIM}
  1128. // Resource access audit bitmasks.
  1129.   AA_AUDIT_ALL = $0001;
  1130.   {$EXTERNALSYM AA_AUDIT_ALL}
  1131.   AA_A_OWNER   = $0004;
  1132.   {$EXTERNALSYM AA_A_OWNER}
  1133.   AA_CLOSE     = $0008;
  1134.   {$EXTERNALSYM AA_CLOSE}
  1135.   AA_S_OPEN    = $0010;
  1136.   {$EXTERNALSYM AA_S_OPEN}
  1137.   AA_S_WRITE   = $0020;
  1138.   {$EXTERNALSYM AA_S_WRITE}
  1139.   AA_S_CREATE  = $0020;
  1140.   {$EXTERNALSYM AA_S_CREATE}
  1141.   AA_S_DELETE  = $0040;
  1142.   {$EXTERNALSYM AA_S_DELETE}
  1143.   AA_S_ACL     = $0080;
  1144.   {$EXTERNALSYM AA_S_ACL}
  1145.   AA_S_ALL     = (AA_S_OPEN or AA_S_WRITE or AA_S_DELETE or AA_S_ACL);
  1146.   {$EXTERNALSYM AA_S_ALL}
  1147.   AA_F_OPEN    = $0100;
  1148.   {$EXTERNALSYM AA_F_OPEN}
  1149.   AA_F_WRITE   = $0200;
  1150.   {$EXTERNALSYM AA_F_WRITE}
  1151.   AA_F_CREATE  = $0200;
  1152.   {$EXTERNALSYM AA_F_CREATE}
  1153.   AA_F_DELETE  = $0400;
  1154.   {$EXTERNALSYM AA_F_DELETE}
  1155.   AA_F_ACL     = $0800;
  1156.   {$EXTERNALSYM AA_F_ACL}
  1157.   AA_F_ALL     = (AA_F_OPEN or AA_F_WRITE or AA_F_DELETE or AA_F_ACL);
  1158.   {$EXTERNALSYM AA_F_ALL}
  1159. // Pinball-specific
  1160.   AA_A_OPEN    = $1000;
  1161.   {$EXTERNALSYM AA_A_OPEN}
  1162.   AA_A_WRITE   = $2000;
  1163.   {$EXTERNALSYM AA_A_WRITE}
  1164.   AA_A_CREATE  = $2000;
  1165.   {$EXTERNALSYM AA_A_CREATE}
  1166.   AA_A_DELETE  = $4000;
  1167.   {$EXTERNALSYM AA_A_DELETE}
  1168.   AA_A_ACL     = $8000;
  1169.   {$EXTERNALSYM AA_A_ACL}
  1170.   AA_A_ALL     = (AA_F_OPEN or AA_F_WRITE or AA_F_DELETE or AA_F_ACL);
  1171.   {$EXTERNALSYM AA_A_ALL}
  1172. // Translated from LMJOIN.H
  1173. // Types of name that can be validated
  1174. type
  1175.   PNetSetupNameType = ^TNetSetupNameType;
  1176.   _NETSETUP_NAME_TYPE = DWORD;
  1177.   {$EXTERNALSYM _NETSETUP_NAME_TYPE}
  1178.   TNetSetupNameType = _NETSETUP_NAME_TYPE;
  1179.   NETSETUP_NAME_TYPE = _NETSETUP_NAME_TYPE;
  1180.   {$EXTERNALSYM NETSETUP_NAME_TYPE}
  1181. const
  1182.   NetSetupUnknown = 0;
  1183.   NetSetupMachine = 1;
  1184.   NetSetupWorkgroup = 2;
  1185.   NetSetupDomain = 3;
  1186.   NetSetupNonExistentDomain = 4;
  1187.   NetSetupDnsMachine = 5;
  1188. // Status of a workstation
  1189. type
  1190.   PNetSetupJoinStatus = ^TNetSetupJoinStatus;
  1191.   _NETSETUP_JOIN_STATUS = DWORD;
  1192.   {$EXTERNALSYM _NETSETUP_JOIN_STATUS}
  1193.   TNetSetupJoinStatus = _NETSETUP_JOIN_STATUS;
  1194.   NETSETUP_JOIN_STATUS = _NETSETUP_JOIN_STATUS;
  1195.   {$EXTERNALSYM NETSETUP_JOIN_STATUS}
  1196. const
  1197.   NetSetupUnknownStatus = 0;
  1198.   NetSetupUnjoined = 1;
  1199.   NetSetupWorkgroupName = 2;
  1200.   NetSetupDomainName = 3;
  1201. // Flags to determine the behavior of the join/unjoin APIs
  1202.   NETSETUP_JOIN_DOMAIN    = $00000001;      // If not present, workgroup is joined
  1203.   {$EXTERNALSYM NETSETUP_JOIN_DOMAIN}
  1204.   NETSETUP_ACCT_CREATE    = $00000002;      // Do the server side account creation/rename
  1205.   {$EXTERNALSYM NETSETUP_ACCT_CREATE}
  1206.   NETSETUP_ACCT_DELETE    = $00000004;      // Delete the account when a domain is left
  1207.   {$EXTERNALSYM NETSETUP_ACCT_DELETE}
  1208.   NETSETUP_WIN9X_UPGRADE  = $00000010;      // Invoked during upgrade of Windows 9x to
  1209.                                             // Windows NT
  1210.   {$EXTERNALSYM NETSETUP_WIN9X_UPGRADE}
  1211.   NETSETUP_DOMAIN_JOIN_IF_JOINED  = $00000020;  // Allow the client to join a new domain
  1212.                                                 // even if it is already joined to a domain
  1213.   {$EXTERNALSYM NETSETUP_DOMAIN_JOIN_IF_JOINED}
  1214.   NETSETUP_JOIN_UNSECURE  = $00000040;      // Performs an unsecure join
  1215.   {$EXTERNALSYM NETSETUP_JOIN_UNSECURE}
  1216.   NETSETUP_INSTALL_INVOCATION = $00040000;  // The APIs were invoked during install
  1217.   {$EXTERNALSYM NETSETUP_INSTALL_INVOCATION}
  1218. // 0x80000000 is reserved for internal use only
  1219. // Joins a machine to the domain.
  1220. function NetJoinDomain(lpServer, lpDomain, lpAccountOU, lpAccount,
  1221.   lpPassword: LPCWSTR; fJoinOptions: DWORD): NET_API_STATUS; stdcall;
  1222. {$EXTERNALSYM NetJoinDomain}
  1223. function NetUnjoinDomain(lpServer, lpAccount, lpPassword: LPCWSTR;
  1224.   fUnjoinOptions: DWORD): NET_API_STATUS; stdcall;
  1225. {$EXTERNALSYM NetUnjoinDomain}
  1226. function NetRenameMachineInDomain(lpServer, lpNewMachineName, lpAccount,
  1227.   lpPassword: LPCWSTR; fRenameOptions: DWORD): NET_API_STATUS; stdcall;
  1228. {$EXTERNALSYM NetRenameMachineInDomain}
  1229. // Determine the validity of a name
  1230. function NetValidateName(lpServer, lpName, lpAccount, lpPassword: LPCWSTR;
  1231.   NameType: TNetSetupNameType): NET_API_STATUS; stdcall;
  1232. {$EXTERNALSYM NetValidateName}
  1233. // Determines whether a workstation is joined to a domain or not
  1234. function NetGetJoinInformation(lpServer: LPCWSTR; lpNameBuffer: LPWSTR;
  1235.   var BufferType: TNetSetupNameType): NET_API_STATUS; stdcall;
  1236. {$EXTERNALSYM NetGetJoinInformation}
  1237. // Determines the list of OUs that the client can create a machine account in
  1238. function NetGetJoinableOUs(lpServer, lpDomain, lpAccount, lpPassword: LPCWSTR;
  1239.   var OUCount: DWORD; OUs: Pointer): NET_API_STATUS; stdcall;
  1240. {$EXTERNALSYM NetGetJoinableOUs}
  1241. // Translated from LMERRLOG.H
  1242. // Data Structures - Config
  1243. type
  1244.   PErrorLog = ^TErrorLog;
  1245.   _ERROR_LOG = record
  1246.     el_len: DWORD;
  1247.     el_reserved: DWORD;
  1248.     el_time: DWORD;
  1249.     el_error: DWORD;
  1250.     el_name: LPWSTR;                    // pointer to service name
  1251.     el_text: LPWSTR;                    // pointer to string array
  1252.     el_data: Pointer;                   // pointer to BYTE array
  1253.     el_data_size: DWORD;                // byte count of el_data area
  1254.     el_nstrings: DWORD;                 // number of strings in el_text.
  1255.   end;
  1256.   {$EXTERNALSYM _ERROR_LOG}
  1257.   TErrorLog = _ERROR_LOG;
  1258.   ERROR_LOG = _ERROR_LOG;
  1259.   {$EXTERNALSYM ERROR_LOG}
  1260. // Function Prototypes - ErrorLog
  1261. function NetErrorLogClear(server: LPCWSTR; backupfile: LPCWSTR;
  1262.   reserved: Pointer): NET_API_STATUS; stdcall;
  1263. {$EXTERNALSYM NetErrorLogClear}
  1264. function NetErrorLogRead(server: LPCWSTR; reserved1: LPWSTR; errloghandle: PHLog;
  1265.   offset: DWORD;  reserved2: PDWORD; reserved3: DWORD; offsetflag: DWORD;
  1266.   bufptr: Pointer; prefmaxlen: DWORD; var bytesread: DWORD;
  1267.   var totalbytes: DWORD): NET_API_STATUS; stdcall;
  1268. {$EXTERNALSYM NetErrorLogRead}
  1269. function NetErrorLogWrite(reserved1: Pointer; code: DWORD; component: LPCWSTR;
  1270.   buffer: Pointer; numbytes: DWORD; msgbuf: Pointer; strcount: DWORD;
  1271.   reserved2: Pointer): NET_API_STATUS; stdcall;
  1272. {$EXTERNALSYM NetErrorLogWrite}
  1273. // Special Values and Constants
  1274. //  Generic (could be used by more than one service)
  1275. //  error log messages from 0 to 25
  1276. //
  1277. // Do not change the comments following the manifest constants without
  1278. // understanding how mapmsg works.
  1279. const
  1280.   ERRLOG_BASE = 3100;        //* NELOG errors start here */
  1281.   {$EXTERNALSYM ERRLOG_BASE}
  1282.   NELOG_Internal_Error        = (ERRLOG_BASE + 0);
  1283.   {$EXTERNALSYM NELOG_Internal_Error}
  1284.   // The operation failed because a network software error occurred.
  1285.   NELOG_Resource_Shortage     = (ERRLOG_BASE + 1);
  1286.   {$EXTERNALSYM NELOG_Resource_Shortage}
  1287.   // The system ran out of a resource controlled by the %1 option.
  1288.   NELOG_Unable_To_Lock_Segment    = (ERRLOG_BASE + 2);
  1289.   {$EXTERNALSYM NELOG_Unable_To_Lock_Segment}
  1290.   // The service failed to obtain a long-term lock on the
  1291.   // segment for network control blocks (NCBs). The error code is the data.
  1292.   NELOG_Unable_To_Unlock_Segment  = (ERRLOG_BASE + 3);
  1293.   {$EXTERNALSYM NELOG_Unable_To_Unlock_Segment}
  1294.   // The service failed to release the long-term lock on the
  1295.   // segment for network control blocks (NCBs). The error code is the data.
  1296.   NELOG_Uninstall_Service     = (ERRLOG_BASE + 4);
  1297.   {$EXTERNALSYM NELOG_Uninstall_Service}
  1298.   // There was an error stopping service %1.
  1299.   // The error code from NetServiceControl is the data.
  1300.   NELOG_Init_Exec_Fail        = (ERRLOG_BASE + 5);
  1301.   {$EXTERNALSYM NELOG_Init_Exec_Fail}
  1302.   // Initialization failed because of a system execution failure on
  1303.   // path %1. The system error code is the data.
  1304.   NELOG_Ncb_Error         = (ERRLOG_BASE + 6);
  1305.   {$EXTERNALSYM NELOG_Ncb_Error}
  1306.   // An unexpected network control block (NCB) was received. The NCB is the data.
  1307.   NELOG_Net_Not_Started       = (ERRLOG_BASE + 7);
  1308.   {$EXTERNALSYM NELOG_Net_Not_Started}
  1309.   // The network is not started.
  1310.   NELOG_Ioctl_Error       = (ERRLOG_BASE + 8);
  1311.   {$EXTERNALSYM NELOG_Ioctl_Error}
  1312.   // A DosDevIoctl or DosFsCtl to NETWKSTA.SYS failed.
  1313.   // The data shown is in this format:
  1314.   //     DWORD  approx CS:IP of call to ioctl or fsctl
  1315.   //     WORD   error code
  1316.   //     WORD   ioctl or fsctl number
  1317.   NELOG_System_Semaphore      = (ERRLOG_BASE + 9);
  1318.   {$EXTERNALSYM NELOG_System_Semaphore}
  1319.   // Unable to create or open system semaphore %1.
  1320.   // The error code is the data.
  1321.   NELOG_Init_OpenCreate_Err   = (ERRLOG_BASE + 10);
  1322.   {$EXTERNALSYM NELOG_Init_OpenCreate_Err}
  1323.   // Initialization failed because of an open/create error on the
  1324.   // file %1. The system error code is the data.
  1325.   NELOG_NetBios           = (ERRLOG_BASE + 11);
  1326.   {$EXTERNALSYM NELOG_NetBios}
  1327.   // An unexpected NetBIOS error occurred.
  1328.   // The error code is the data.
  1329.   NELOG_SMB_Illegal       = (ERRLOG_BASE + 12);
  1330.   {$EXTERNALSYM NELOG_SMB_Illegal}
  1331.   // An illegal server message block (SMB) was received.
  1332.   // The SMB is the data.
  1333.   NELOG_Service_Fail      = (ERRLOG_BASE + 13);
  1334.   {$EXTERNALSYM NELOG_Service_Fail}
  1335.   // Initialization failed because the requested service %1
  1336.   // could not be started.
  1337.   NELOG_Entries_Lost      = (ERRLOG_BASE + 14);
  1338.   {$EXTERNALSYM NELOG_Entries_Lost}
  1339.   // Some entries in the error log were lost because of a buffer
  1340.   // overflow.
  1341. //  Server specific error log messages from 20 to 40
  1342.   NELOG_Init_Seg_Overflow     = (ERRLOG_BASE + 20);
  1343.   {$EXTERNALSYM NELOG_Init_Seg_Overflow}
  1344.   // Initialization parameters controlling resource usage other
  1345.   // than net buffers are sized so that too much memory is needed.
  1346.   NELOG_Srv_No_Mem_Grow       = (ERRLOG_BASE + 21);
  1347.   {$EXTERNALSYM NELOG_Srv_No_Mem_Grow}
  1348.   // The server cannot increase the size of a memory segment.
  1349.   NELOG_Access_File_Bad       = (ERRLOG_BASE + 22);
  1350.   {$EXTERNALSYM NELOG_Access_File_Bad}
  1351.   // Initialization failed because account file %1 is either incorrect
  1352.   // or not present.
  1353.   NELOG_Srvnet_Not_Started    = (ERRLOG_BASE + 23);
  1354.   {$EXTERNALSYM NELOG_Srvnet_Not_Started}
  1355.   // Initialization failed because network %1 was not started.
  1356.   NELOG_Init_Chardev_Err      = (ERRLOG_BASE + 24);
  1357.   {$EXTERNALSYM NELOG_Init_Chardev_Err}
  1358.   // The server failed to start. Either all three chdev
  1359.   //  parameters must be zero or all three must be nonzero.
  1360.   NELOG_Remote_API        = (ERRLOG_BASE + 25);
  1361.   {$EXTERNALSYM NELOG_Remote_API}
  1362.   // A remote API request was halted due to the following
  1363.   // invalid description string: %1.
  1364.   NELOG_Ncb_TooManyErr        = (ERRLOG_BASE + 26);
  1365.   {$EXTERNALSYM NELOG_Ncb_TooManyErr}
  1366.   // The network %1 ran out of network control blocks (NCBs).  You may need to increase NCBs
  1367.   // for this network.  The following information includes the
  1368.   // number of NCBs submitted by the server when this error occurred:
  1369.   NELOG_Mailslot_err      = (ERRLOG_BASE + 27);
  1370.   {$EXTERNALSYM NELOG_Mailslot_err}
  1371.   // The server cannot create the %1 mailslot needed to send
  1372.   // the ReleaseMemory alert message.  The error received is:
  1373.   NELOG_ReleaseMem_Alert      = (ERRLOG_BASE + 28);
  1374.   {$EXTERNALSYM NELOG_ReleaseMem_Alert}
  1375.   // The server failed to register for the ReleaseMemory alert,
  1376.   // with recipient %1. The error code from
  1377.   // NetAlertStart is the data.
  1378.   NELOG_AT_cannot_write       = (ERRLOG_BASE + 29);
  1379.   {$EXTERNALSYM NELOG_AT_cannot_write}
  1380.   // The server cannot update the AT schedule file. The file
  1381.   // is corrupted.
  1382.   NELOG_Cant_Make_Msg_File    = (ERRLOG_BASE + 30);
  1383.   {$EXTERNALSYM NELOG_Cant_Make_Msg_File}
  1384.   // The server encountered an error when calling
  1385.   // NetIMakeLMFileName. The error code is the data.
  1386.   NELOG_Exec_Netservr_NoMem   = (ERRLOG_BASE + 31);
  1387.   {$EXTERNALSYM NELOG_Exec_Netservr_NoMem}
  1388.   // Initialization failed because of a system execution failure on
  1389.   // path %1. There is not enough memory to start the process.
  1390.   // The system error code is the data.
  1391.   NELOG_Server_Lock_Failure   = (ERRLOG_BASE + 32);
  1392.   {$EXTERNALSYM NELOG_Server_Lock_Failure}
  1393.   // Longterm lock of the server buffers failed.
  1394.   // Check swap disk's free space and restart the system to start the server.
  1395. //  Message service and POPUP specific error log messages from 40 to 55
  1396.   NELOG_Msg_Shutdown      = (ERRLOG_BASE + 40);
  1397.   {$EXTERNALSYM NELOG_Msg_Shutdown}
  1398.   // The service has stopped due to repeated consecutive
  1399.   //  occurrences of a network control block (NCB) error.  The last bad NCB follows
  1400.   //  in raw data.
  1401.   NELOG_Msg_Sem_Shutdown      = (ERRLOG_BASE + 41);
  1402.   {$EXTERNALSYM NELOG_Msg_Sem_Shutdown}
  1403.   // The Message server has stopped due to a lock on the
  1404.   //  Message server shared data segment.
  1405.   NELOG_Msg_Log_Err       = (ERRLOG_BASE + 50);
  1406.   {$EXTERNALSYM NELOG_Msg_Log_Err}
  1407.   // A file system error occurred while opening or writing to the
  1408.   //  system message log file %1. Message logging has been
  1409.   //  switched off due to the error. The error code is the data.
  1410.   NELOG_VIO_POPUP_ERR     = (ERRLOG_BASE + 51);
  1411.   {$EXTERNALSYM NELOG_VIO_POPUP_ERR}
  1412.   // Unable to display message POPUP due to system VIO call error.
  1413.   //  The error code is the data.
  1414.   NELOG_Msg_Unexpected_SMB_Type   = (ERRLOG_BASE + 52);
  1415.   {$EXTERNALSYM NELOG_Msg_Unexpected_SMB_Type}
  1416.   // An illegal server message block (SMB) was received.  The SMB is the data.
  1417. //  Workstation specific error log messages from 60 to 75
  1418.   NELOG_Wksta_Infoseg     = (ERRLOG_BASE + 60);
  1419.   {$EXTERNALSYM NELOG_Wksta_Infoseg}
  1420.   // The workstation information segment is bigger than 64K.
  1421.   // The size follows, in DWORD format:
  1422.   NELOG_Wksta_Compname        = (ERRLOG_BASE + 61);
  1423.   {$EXTERNALSYM NELOG_Wksta_Compname}
  1424.   // The workstation was unable to get the name-number of the computer.
  1425.   NELOG_Wksta_BiosThreadFailure   = (ERRLOG_BASE + 62);
  1426.   {$EXTERNALSYM NELOG_Wksta_BiosThreadFailure}
  1427.   // The workstation could not initialize the Async NetBIOS Thread.
  1428.   // The error code is the data.
  1429.   NELOG_Wksta_IniSeg      = (ERRLOG_BASE + 63);
  1430.   {$EXTERNALSYM NELOG_Wksta_IniSeg}
  1431.   // The workstation could not open the initial shared segment.
  1432.   // The error code is the data.
  1433.   NELOG_Wksta_HostTab_Full    = (ERRLOG_BASE + 64);
  1434.   {$EXTERNALSYM NELOG_Wksta_HostTab_Full}
  1435.   // The workstation host table is full.
  1436.   NELOG_Wksta_Bad_Mailslot_SMB    = (ERRLOG_BASE + 65);
  1437.   {$EXTERNALSYM NELOG_Wksta_Bad_Mailslot_SMB}
  1438.   // A bad mailslot server message block (SMB) was received.  The SMB is the data.
  1439.   NELOG_Wksta_UASInit     = (ERRLOG_BASE + 66);
  1440.   {$EXTERNALSYM NELOG_Wksta_UASInit}
  1441.   // The workstation encountered an error while trying to start the user accounts database.
  1442.   //  The error code is the data.
  1443.   NELOG_Wksta_SSIRelogon      = (ERRLOG_BASE + 67);
  1444.   {$EXTERNALSYM NELOG_Wksta_SSIRelogon}
  1445.   // The workstation encountered an error while responding to an SSI revalidation request.
  1446.   //  The function code and the error codes are the data.
  1447. //  Alerter service specific error log messages from 70 to 79
  1448.   NELOG_Build_Name        = (ERRLOG_BASE + 70);
  1449.   {$EXTERNALSYM NELOG_Build_Name}
  1450.   // The Alerter service had a problem creating the list of
  1451.   // alert recipients.  The error code is %1.
  1452.   NELOG_Name_Expansion        = (ERRLOG_BASE + 71);
  1453.   {$EXTERNALSYM NELOG_Name_Expansion}
  1454.   // There was an error expanding %1 as a group name. Try
  1455.   // splitting the group into two or more smaller groups.
  1456.   NELOG_Message_Send      = (ERRLOG_BASE + 72);
  1457.   {$EXTERNALSYM NELOG_Message_Send}
  1458.   // There was an error sending %2 the alert message -
  1459.   //  (
  1460.   //  %3 )
  1461.   //  The error code is %1.
  1462.   NELOG_Mail_Slt_Err      = (ERRLOG_BASE + 73);
  1463.   {$EXTERNALSYM NELOG_Mail_Slt_Err}
  1464.   // There was an error in creating or reading the alerter mailslot.
  1465.   //  The error code is %1.
  1466.   NELOG_AT_cannot_read        = (ERRLOG_BASE + 74);
  1467.   {$EXTERNALSYM NELOG_AT_cannot_read}
  1468.   // The server could not read the AT schedule file.
  1469.   NELOG_AT_sched_err      = (ERRLOG_BASE + 75);
  1470.   {$EXTERNALSYM NELOG_AT_sched_err}
  1471.   // The server found an invalid AT schedule record.
  1472.   NELOG_AT_schedule_file_created  = (ERRLOG_BASE + 76);
  1473.   {$EXTERNALSYM NELOG_AT_schedule_file_created}
  1474.   // The server could not find an AT schedule file so it created one.
  1475.   NELOG_Srvnet_NB_Open        = (ERRLOG_BASE + 77);
  1476.   {$EXTERNALSYM NELOG_Srvnet_NB_Open}
  1477.   // The server could not access the %1 network with NetBiosOpen.
  1478.   NELOG_AT_Exec_Err       = (ERRLOG_BASE + 78);
  1479.   {$EXTERNALSYM NELOG_AT_Exec_Err}
  1480.   // The AT command processor could not run %1.
  1481. // Cache Lazy Write and HPFS386 specific error log messages from 80 to 89
  1482.   NELOG_Lazy_Write_Err            = (ERRLOG_BASE + 80);
  1483.   {$EXTERNALSYM NELOG_Lazy_Write_Err}
  1484.   // * WARNING:  Because of a lazy-write error, drive %1 now
  1485.   // *  contains some corrupted data.  The cache is stopped.
  1486.   NELOG_HotFix            = (ERRLOG_BASE + 81);
  1487.   {$EXTERNALSYM NELOG_HotFix}
  1488.   // A defective sector on drive %1 has been replaced (hotfixed).
  1489.   // No data was lost.  You should run CHKDSK soon to restore full
  1490.   // performance and replenish the volume's spare sector pool.
  1491.   //
  1492.   // The hotfix occurred while processing a remote request.
  1493.   NELOG_HardErr_From_Server   = (ERRLOG_BASE + 82);
  1494.   {$EXTERNALSYM NELOG_HardErr_From_Server}
  1495.   // A disk error occurred on the HPFS volume in drive %1.
  1496.   // The error occurred while processing a remote request.
  1497.   NELOG_LocalSecFail1 = (ERRLOG_BASE + 83);
  1498.   {$EXTERNALSYM NELOG_LocalSecFail1}
  1499.   // The user accounts database (NET.ACC) is corrupted.  The local security
  1500.   // system is replacing the corrupted NET.ACC with the backup
  1501.   // made at %1.
  1502.   // Any updates made to the database after this time are lost.
  1503.   NELOG_LocalSecFail2 = (ERRLOG_BASE + 84);
  1504.   {$EXTERNALSYM NELOG_LocalSecFail2}
  1505.   // The user accounts database (NET.ACC) is missing.  The local
  1506.   // security system is restoring the backup database
  1507.   // made at %1.
  1508.   // Any updates made to the database made after this time are lost.
  1509.   NELOG_LocalSecFail3 = (ERRLOG_BASE + 85);
  1510.   {$EXTERNALSYM NELOG_LocalSecFail3}
  1511.   // Local security could not be started because the user accounts database
  1512.   // (NET.ACC) was missing or corrupted, and no usable backup
  1513.   // database was present.
  1514.   //
  1515.   // THE SYSTEM IS NOT SECURE.
  1516.   NELOG_LocalSecGeneralFail   = (ERRLOG_BASE + 86);
  1517.   {$EXTERNALSYM NELOG_LocalSecGeneralFail}
  1518.   // Local security could not be started because an error
  1519.   // occurred during initialization. The error code returned is %1.
  1520.   //
  1521.   // THE SYSTEM IS NOT SECURE.
  1522. // NETWKSTA.SYS specific error log messages from 90 to 99
  1523.   NELOG_NetWkSta_Internal_Error   = (ERRLOG_BASE + 90);
  1524.   {$EXTERNALSYM NELOG_NetWkSta_Internal_Error}
  1525.   // A NetWksta internal error has occurred: %1
  1526.   NELOG_NetWkSta_No_Resource  = (ERRLOG_BASE + 91);
  1527.   {$EXTERNALSYM NELOG_NetWkSta_No_Resource}
  1528.   // The redirector is out of a resource: %1.
  1529.   NELOG_NetWkSta_SMB_Err      = (ERRLOG_BASE + 92);
  1530.   {$EXTERNALSYM NELOG_NetWkSta_SMB_Err}
  1531.   // A server message block (SMB) error occurred on the connection to %1.
  1532.   // The SMB header is the data.
  1533.   NELOG_NetWkSta_VC_Err       = (ERRLOG_BASE + 93);
  1534.   {$EXTERNALSYM NELOG_NetWkSta_VC_Err}
  1535.   // A virtual circuit error occurred on the session to %1.
  1536.   //  The network control block (NCB) command and return code is the data.
  1537.   NELOG_NetWkSta_Stuck_VC_Err = (ERRLOG_BASE + 94);
  1538.   {$EXTERNALSYM NELOG_NetWkSta_Stuck_VC_Err}
  1539.   // Hanging up a stuck session to %1.
  1540.   NELOG_NetWkSta_NCB_Err      = (ERRLOG_BASE + 95);
  1541.   {$EXTERNALSYM NELOG_NetWkSta_NCB_Err}
  1542.   // A network control block (NCB) error occurred (%1).
  1543.   // The NCB is the data.
  1544.   NELOG_NetWkSta_Write_Behind_Err = (ERRLOG_BASE + 96);
  1545.   {$EXTERNALSYM NELOG_NetWkSta_Write_Behind_Err}
  1546.   // A write operation to %1 failed.
  1547.   // Data may have been lost.
  1548.   NELOG_NetWkSta_Reset_Err    = (ERRLOG_BASE + 97);
  1549.   {$EXTERNALSYM NELOG_NetWkSta_Reset_Err}
  1550.   // Reset of driver %1 failed to complete the network control block (NCB).
  1551.   //  The NCB is the data.
  1552.   NELOG_NetWkSta_Too_Many     = (ERRLOG_BASE + 98);
  1553.   {$EXTERNALSYM NELOG_NetWkSta_Too_Many}
  1554.   // The amount of resource %1 requested was more
  1555.   // than the maximum. The maximum amount was allocated.
  1556. // Spooler specific error log messages from 100 to 103
  1557.   NELOG_Srv_Thread_Failure        = (ERRLOG_BASE + 104);
  1558.   {$EXTERNALSYM NELOG_Srv_Thread_Failure}
  1559.   // The server could not create a thread.
  1560.   // The THREADS parameter in the CONFIG.SYS file should be increased.
  1561.   NELOG_Srv_Close_Failure         = (ERRLOG_BASE + 105);
  1562.   {$EXTERNALSYM NELOG_Srv_Close_Failure}
  1563.   // The server could not close %1.
  1564.   // The file is probably corrupted.
  1565.   NELOG_ReplUserCurDir               = (ERRLOG_BASE + 106);
  1566.   {$EXTERNALSYM NELOG_ReplUserCurDir}
  1567.   // The replicator cannot update directory %1. It has tree integrity
  1568.   // and is the current directory for some process.
  1569.   NELOG_ReplCannotMasterDir       = (ERRLOG_BASE + 107);
  1570.   {$EXTERNALSYM NELOG_ReplCannotMasterDir}
  1571.   // The server cannot export directory %1 to client %2.
  1572.   // It is exported from another server.
  1573.   NELOG_ReplUpdateError           = (ERRLOG_BASE + 108);
  1574.   {$EXTERNALSYM NELOG_ReplUpdateError}
  1575.   // The replication server could not update directory %2 from the source
  1576.   // on %3 due to error %1.
  1577.   NELOG_ReplLostMaster            = (ERRLOG_BASE + 109);
  1578.   {$EXTERNALSYM NELOG_ReplLostMaster}
  1579.   // Master %1 did not send an update notice for directory %2 at the expected
  1580.   // time.
  1581.   NELOG_NetlogonAuthDCFail        = (ERRLOG_BASE + 110);
  1582.   {$EXTERNALSYM NELOG_NetlogonAuthDCFail}
  1583.   // Failed to authenticate with %2, a Windows NT domain controller for domain %1.
  1584.   NELOG_ReplLogonFailed           = (ERRLOG_BASE + 111);
  1585.   {$EXTERNALSYM NELOG_ReplLogonFailed}
  1586.   // The replicator attempted to log on at %2 as %1 and failed.
  1587.   NELOG_ReplNetErr            = (ERRLOG_BASE + 112);
  1588.   {$EXTERNALSYM NELOG_ReplNetErr}
  1589.   // Network error %1 occurred.
  1590.   NELOG_ReplMaxFiles            = (ERRLOG_BASE + 113);
  1591.   {$EXTERNALSYM NELOG_ReplMaxFiles}
  1592.   // Replicator limit for files in a directory has been exceeded.
  1593.   NELOG_ReplMaxTreeDepth            = (ERRLOG_BASE + 114);
  1594.   {$EXTERNALSYM NELOG_ReplMaxTreeDepth}
  1595.   // Replicator limit for tree depth has been exceeded.
  1596.   NELOG_ReplBadMsg             = (ERRLOG_BASE + 115);
  1597.   {$EXTERNALSYM NELOG_ReplBadMsg}
  1598.   // Unrecognized message received in mailslot.
  1599.   NELOG_ReplSysErr            = (ERRLOG_BASE + 116);
  1600.   {$EXTERNALSYM NELOG_ReplSysErr}
  1601.   // System error %1 occurred.
  1602.   NELOG_ReplUserLoged          = (ERRLOG_BASE + 117);
  1603.   {$EXTERNALSYM NELOG_ReplUserLoged}
  1604.   // Cannot log on. User is currently logged on and argument TRYUSER
  1605.   // is set to NO.
  1606.   NELOG_ReplBadImport           = (ERRLOG_BASE + 118);
  1607.   {$EXTERNALSYM NELOG_ReplBadImport}
  1608.   // IMPORT path %1 cannot be found.
  1609.   NELOG_ReplBadExport           = (ERRLOG_BASE + 119);
  1610.   {$EXTERNALSYM NELOG_ReplBadExport}
  1611.   // EXPORT path %1 cannot be found.
  1612.   NELOG_ReplSignalFileErr           = (ERRLOG_BASE + 120);
  1613.   {$EXTERNALSYM NELOG_ReplSignalFileErr}
  1614.   // Replicator failed to update signal file in directory %2 due to
  1615.   // %1 system error.
  1616.   NELOG_DiskFT                = (ERRLOG_BASE+121);
  1617.   {$EXTERNALSYM NELOG_DiskFT}
  1618.   // Disk Fault Tolerance Error
  1619.   //
  1620.   // %1
  1621.   NELOG_ReplAccessDenied           = (ERRLOG_BASE + 122);
  1622.   {$EXTERNALSYM NELOG_ReplAccessDenied}
  1623.   // Replicator could not access %2
  1624.   // on %3 due to system error %1.
  1625.   NELOG_NetlogonFailedPrimary      = (ERRLOG_BASE + 123);
  1626.   {$EXTERNALSYM NELOG_NetlogonFailedPrimary}
  1627.    {*
  1628.     *The primary domain controller for domain %1 has apparently failed.
  1629.     *}
  1630.   NELOG_NetlogonPasswdSetFailed = (ERRLOG_BASE + 124);
  1631.   {$EXTERNALSYM NELOG_NetlogonPasswdSetFailed}
  1632.   // Changing machine account password for account %1 failed with
  1633.   // the following error: %n%2
  1634.   NELOG_NetlogonTrackingError      = (ERRLOG_BASE + 125);
  1635.   {$EXTERNALSYM NELOG_NetlogonTrackingError}
  1636.   // An error occurred while updating the logon or logoff information for %1.
  1637.   NELOG_NetlogonSyncError          = (ERRLOG_BASE + 126);
  1638.   {$EXTERNALSYM NELOG_NetlogonSyncError}
  1639.   // An error occurred while synchronizing with primary domain controller %1
  1640.   NELOG_NetlogonRequireSignOrSealError = (ERRLOG_BASE + 127);
  1641.   {$EXTERNALSYM NELOG_NetlogonRequireSignOrSealError}
  1642.   // The session setup to the Windows NT Domain Controller %1 for the domain %2
  1643.   // failed because %1 does not support signing or sealing the Netlogon
  1644.   // session.
  1645.   //
  1646.   // Either upgrade the Domain controller or set the RequireSignOrSeal
  1647.   // registry entry on this machine to 0.
  1648. //  UPS service specific error log messages from 130 to 135
  1649.   NELOG_UPS_PowerOut      = (ERRLOG_BASE + 130);
  1650.   {$EXTERNALSYM NELOG_UPS_PowerOut}
  1651.   // A power failure was detected at the server.
  1652.   NELOG_UPS_Shutdown      = (ERRLOG_BASE + 131);
  1653.   {$EXTERNALSYM NELOG_UPS_Shutdown}
  1654.   // The UPS service performed server shut down.
  1655.   NELOG_UPS_CmdFileError      = (ERRLOG_BASE + 132);
  1656.   {$EXTERNALSYM NELOG_UPS_CmdFileError}
  1657.   // The UPS service did not complete execution of the
  1658.   // user specified shut down command file.
  1659.   NELOG_UPS_CannotOpenDriver  = (ERRLOG_BASE+133);
  1660.   {$EXTERNALSYM NELOG_UPS_CannotOpenDriver}
  1661.   // The UPS driver could not be opened.  The error code is
  1662.   // the data.
  1663.   NELOG_UPS_PowerBack     = (ERRLOG_BASE + 134);
  1664.   {$EXTERNALSYM NELOG_UPS_PowerBack}
  1665.   // Power has been restored.
  1666.   NELOG_UPS_CmdFileConfig     = (ERRLOG_BASE + 135);
  1667.   {$EXTERNALSYM NELOG_UPS_CmdFileConfig}
  1668.   // There is a problem with a configuration of user specified
  1669.   // shut down command file.
  1670.   NELOG_UPS_CmdFileExec       = (ERRLOG_BASE + 136);
  1671.   {$EXTERNALSYM NELOG_UPS_CmdFileExec}
  1672.   // The UPS service failed to execute a user specified shutdown
  1673.   // command file %1.  The error code is the data.
  1674. // Remoteboot server specific error log messages are from 150 to 157
  1675.   NELOG_Missing_Parameter     = (ERRLOG_BASE + 150);
  1676.   {$EXTERNALSYM NELOG_Missing_Parameter}
  1677.   // Initialization failed because of an invalid or missing
  1678.   // parameter in the configuration file %1.
  1679.   NELOG_Invalid_Config_Line   = (ERRLOG_BASE + 151);
  1680.   {$EXTERNALSYM NELOG_Invalid_Config_Line}
  1681.   // Initialization failed because of an invalid line in the
  1682.   // configuration file %1. The invalid line is the data.
  1683.   NELOG_Invalid_Config_File   = (ERRLOG_BASE + 152);
  1684.   {$EXTERNALSYM NELOG_Invalid_Config_File}
  1685.   // Initialization failed because of an error in the configuration
  1686.   // file %1.
  1687.   NELOG_File_Changed      = (ERRLOG_BASE + 153);
  1688.   {$EXTERNALSYM NELOG_File_Changed}
  1689.   // The file %1 has been changed after initialization.
  1690.   // The boot-block loading was temporarily terminated.
  1691.   NELOG_Files_Dont_Fit        = (ERRLOG_BASE + 154);
  1692.   {$EXTERNALSYM NELOG_Files_Dont_Fit}
  1693.   // The files do not fit to the boot-block configuration
  1694.   // file %1. Change the BASE and ORG definitions or the order
  1695.   // of the files.
  1696.   NELOG_Wrong_DLL_Version     = (ERRLOG_BASE + 155);
  1697.   {$EXTERNALSYM NELOG_Wrong_DLL_Version}
  1698.   // Initialization failed because the dynamic-link
  1699.   // library %1 returned an incorrect version number.
  1700.   NELOG_Error_in_DLL      = (ERRLOG_BASE + 156);
  1701.   {$EXTERNALSYM NELOG_Error_in_DLL}
  1702.   // There was an unrecoverable error in the dynamic- link library of the
  1703.   // service.
  1704.   NELOG_System_Error      = (ERRLOG_BASE + 157);
  1705.   {$EXTERNALSYM NELOG_System_Error}
  1706.   // The system returned an unexpected error code.
  1707.   // The error code is the data.
  1708.   NELOG_FT_ErrLog_Too_Large = (ERRLOG_BASE + 158);
  1709.   {$EXTERNALSYM NELOG_FT_ErrLog_Too_Large}
  1710.   // The fault-tolerance error log file, LANROOTLOGSFT.LOG, is more than 64K.
  1711.   NELOG_FT_Update_In_Progress = (ERRLOG_BASE + 159);
  1712.   {$EXTERNALSYM NELOG_FT_Update_In_Progress}
  1713.   // The fault-tolerance error-log file, LANROOTLOGSFT.LOG, had the
  1714.   // update in progress bit set upon opening, which means that the
  1715.   // system crashed while working on the error log.
  1716. // Microsoft has created a generic error log entry for OEMs to use to
  1717. // log errors from OEM value added services.  The code, which is the
  1718. // 2nd arg to NetErrorLogWrite, is 3299.  This value is manifest in
  1719. // NET/H/ERRLOG.H as NELOG_OEM_Code.  The text for error log entry
  1720. // NELOG_OEM_Code is:  "%1 %2 %3 %4 %5 %6 %7 %8 %9.".
  1721. //
  1722. // Microsoft suggests that OEMs use the insertion strings as follows:
  1723. // %1:  OEM System Name (e.g. 3+Open)
  1724. // %2:  OEM Service Name (e.g. 3+Mail)
  1725. // %3:  Severity level (e.g.  error, warning, etc.)
  1726. // %4:  OEM error log entry sub-identifier  (e.g. error code #)
  1727. // %5 - % 9:  Text.
  1728. //
  1729. // The call to NetErrorWrite must set nstrings = 9, and provide 9
  1730. // ASCIIZ strings.  If the caller does not have 9 insertion strings,
  1731. // provide null strings for the empty insertion strings.
  1732.   NELOG_OEM_Code              = (ERRLOG_BASE + 199);
  1733.   {$EXTERNALSYM NELOG_OEM_Code}
  1734.   // %1 %2 %3 %4 %5 %6 %7 %8 %9.
  1735. // another error log range defined for NT Lanman.
  1736.   ERRLOG2_BASE=  5700;       // New NT NELOG errors start here
  1737.   {$EXTERNALSYM ERRLOG2_BASE}
  1738.   NELOG_NetlogonSSIInitError              = (ERRLOG2_BASE + 0);
  1739.   {$EXTERNALSYM NELOG_NetlogonSSIInitError}
  1740.   // The Netlogon service could not initialize the replication data
  1741.   // structures successfully. The service was terminated.  The following
  1742.   // error occurred: %n%1
  1743.   NELOG_NetlogonFailedToUpdateTrustList   = (ERRLOG2_BASE + 1);
  1744.   {$EXTERNALSYM NELOG_NetlogonFailedToUpdateTrustList}
  1745.   // The Netlogon service failed to update the domain trust list.  The
  1746.   // following error occurred: %n%1
  1747.   NELOG_NetlogonFailedToAddRpcInterface   = (ERRLOG2_BASE + 2);
  1748.   {$EXTERNALSYM NELOG_NetlogonFailedToAddRpcInterface}
  1749.   // The Netlogon service could not add the RPC interface.  The
  1750.   // service was terminated. The following error occurred: %n%1
  1751.   NELOG_NetlogonFailedToReadMailslot      = (ERRLOG2_BASE + 3);
  1752.   {$EXTERNALSYM NELOG_NetlogonFailedToReadMailslot}
  1753.   // The Netlogon service could not read a mailslot message from %1 due
  1754.   // to the following error: %n%2
  1755.   NELOG_NetlogonFailedToRegisterSC        = (ERRLOG2_BASE + 4);
  1756.   {$EXTERNALSYM NELOG_NetlogonFailedToRegisterSC}
  1757.   // The Netlogon service failed to register the service with the
  1758.   // service controller. The service was terminated. The following
  1759.   // error occurred: %n%1
  1760.   NELOG_NetlogonChangeLogCorrupt          = (ERRLOG2_BASE + 5);
  1761.   {$EXTERNALSYM NELOG_NetlogonChangeLogCorrupt}
  1762.   // The change log cache maintained by the Netlogon service for
  1763.   // database changes is corrupted. The Netlogon service is resetting
  1764.   // the change log.
  1765.   NELOG_NetlogonFailedToCreateShare       = (ERRLOG2_BASE + 6);
  1766.   {$EXTERNALSYM NELOG_NetlogonFailedToCreateShare}
  1767.   // The Netlogon service could not create server share %1.  The following
  1768.   // error occurred: %n%2
  1769.   NELOG_NetlogonDownLevelLogonFailed      = (ERRLOG2_BASE + 7);
  1770.   {$EXTERNALSYM NELOG_NetlogonDownLevelLogonFailed}
  1771.   // The down-level logon request for the user %1 from %2 failed.
  1772.   NELOG_NetlogonDownLevelLogoffFailed     = (ERRLOG2_BASE + 8);
  1773.   {$EXTERNALSYM NELOG_NetlogonDownLevelLogoffFailed}
  1774.   // The down-level logoff request for the user %1 from %2 failed.
  1775.   NELOG_NetlogonNTLogonFailed             = (ERRLOG2_BASE + 9);
  1776.   {$EXTERNALSYM NELOG_NetlogonNTLogonFailed}
  1777.   // The Windows NT %1 logon request for the user %2%3 from %4 (via %5)
  1778.   // failed.
  1779.   NELOG_NetlogonNTLogoffFailed            = (ERRLOG2_BASE + 10);
  1780.   {$EXTERNALSYM NELOG_NetlogonNTLogoffFailed}
  1781.   // The Windows NT %1 logoff request for the user %2%3 from %4
  1782.   // failed.
  1783.   NELOG_NetlogonPartialSyncCallSuccess    = (ERRLOG2_BASE + 11);
  1784.   {$EXTERNALSYM NELOG_NetlogonPartialSyncCallSuccess}
  1785.   // The partial synchronization request from the server %1 completed
  1786.   // successfully. %2 changes(s) has(have) been returned to the caller.
  1787.   NELOG_NetlogonPartialSyncCallFailed     = (ERRLOG2_BASE + 12);
  1788.   {$EXTERNALSYM NELOG_NetlogonPartialSyncCallFailed}
  1789.   // The partial synchronization request from the server %1 failed with
  1790.   // the following error: %n%2
  1791.   NELOG_NetlogonFullSyncCallSuccess       = (ERRLOG2_BASE + 13);
  1792.   {$EXTERNALSYM NELOG_NetlogonFullSyncCallSuccess}
  1793.   // The full synchronization request from the server %1 completed
  1794.   // successfully. %2 object(s) has(have) been returned to the caller.
  1795.   NELOG_NetlogonFullSyncCallFailed        = (ERRLOG2_BASE + 14);
  1796.   {$EXTERNALSYM NELOG_NetlogonFullSyncCallFailed}
  1797.   // The full synchronization request from the server %1 failed with
  1798.   // the following error: %n%2
  1799.   NELOG_NetlogonPartialSyncSuccess        = (ERRLOG2_BASE + 15);
  1800.   {$EXTERNALSYM NELOG_NetlogonPartialSyncSuccess}
  1801.   // The partial synchronization replication of the %1 database from the
  1802.   // primary domain controller %2 completed successfully. %3 change(s) is(are)
  1803.   // applied to the database.
  1804.   NELOG_NetlogonPartialSyncFailed         = (ERRLOG2_BASE + 16);
  1805.   {$EXTERNALSYM NELOG_NetlogonPartialSyncFailed}
  1806.   // The partial synchronization replication of the %1 database from the
  1807.   // primary domain controller %2 failed with the following error: %n%3
  1808.   NELOG_NetlogonFullSyncSuccess           = (ERRLOG2_BASE + 17);
  1809.   {$EXTERNALSYM NELOG_NetlogonFullSyncSuccess}
  1810.   // The full synchronization replication of the %1 database from the
  1811.   // primary domain controller %2 completed successfully.
  1812.   NELOG_NetlogonFullSyncFailed            = (ERRLOG2_BASE + 18);
  1813.   {$EXTERNALSYM NELOG_NetlogonFullSyncFailed}
  1814.   // The full synchronization replication of the %1 database from the
  1815.   // primary domain controller %2 failed with the following error: %n%3
  1816.   NELOG_NetlogonAuthNoDomainController    = (ERRLOG2_BASE + 19);
  1817.   {$EXTERNALSYM NELOG_NetlogonAuthNoDomainController}
  1818.   // No Windows NT Domain Controller is available for domain %1.
  1819.   // (This event is expected and can be ignored when booting with
  1820.   // the 'No Net' Hardware Profile.)  The following error occurred:%n%2
  1821.   NELOG_NetlogonAuthNoTrustLsaSecret      = (ERRLOG2_BASE + 20);
  1822.   {$EXTERNALSYM NELOG_NetlogonAuthNoTrustLsaSecret}
  1823.   // The session setup to the Windows NT Domain Controller %1 for the domain %2
  1824.   // failed because the computer %3 does not have a local security database account.
  1825.   NELOG_NetlogonAuthNoTrustSamAccount     = (ERRLOG2_BASE + 21);
  1826.   {$EXTERNALSYM NELOG_NetlogonAuthNoTrustSamAccount}
  1827.   // The session setup to the Windows NT Domain Controller %1 for the domain %2
  1828.   // failed because the Windows NT Domain Controller does not have an account
  1829.   // for the computer %3.
  1830.   NELOG_NetlogonServerAuthFailed          = (ERRLOG2_BASE + 22);
  1831.   {$EXTERNALSYM NELOG_NetlogonServerAuthFailed}
  1832.   // The session setup from the computer %1 failed to authenticate.
  1833.   // The name of the account referenced in the security database is
  1834.   // %2.  The following error occurred: %n%3
  1835.   NELOG_NetlogonServerAuthNoTrustSamAccount = (ERRLOG2_BASE + 23);
  1836.   {$EXTERNALSYM NELOG_NetlogonServerAuthNoTrustSamAccount}
  1837.   // The session setup from the computer %1 failed because there is
  1838.   // no trust account in the security database for this computer. The name of
  1839.   // the account referenced in the security database is %2.
  1840. // General log messages for NT services.
  1841.   NELOG_FailedToRegisterSC                  = (ERRLOG2_BASE + 24);
  1842.   {$EXTERNALSYM NELOG_FailedToRegisterSC}
  1843.   // Could not register control handler with service controller %1.
  1844.   NELOG_FailedToSetServiceStatus            = (ERRLOG2_BASE + 25);
  1845.   {$EXTERNALSYM NELOG_FailedToSetServiceStatus}
  1846.   // Could not set service status with service controller %1.
  1847.   NELOG_FailedToGetComputerName             = (ERRLOG2_BASE + 26);
  1848.   {$EXTERNALSYM NELOG_FailedToGetComputerName}
  1849.   // Could not find the computer name %1.
  1850.   NELOG_DriverNotLoaded                     = (ERRLOG2_BASE + 27);
  1851.   {$EXTERNALSYM NELOG_DriverNotLoaded}
  1852.   // Could not load %1 device driver.
  1853.   NELOG_NoTranportLoaded                    = (ERRLOG2_BASE + 28);
  1854.   {$EXTERNALSYM NELOG_NoTranportLoaded}
  1855.   // Could not load any transport.
  1856. // More Netlogon service events
  1857.   NELOG_NetlogonFailedDomainDelta           = (ERRLOG2_BASE + 29);
  1858.   {$EXTERNALSYM NELOG_NetlogonFailedDomainDelta}
  1859.   // Replication of the %1 Domain Object "%2" from primary domain controller
  1860.   // %3 failed with the following error: %n%4
  1861.   NELOG_NetlogonFailedGlobalGroupDelta      = (ERRLOG2_BASE + 30);
  1862.   {$EXTERNALSYM NELOG_NetlogonFailedGlobalGroupDelta}
  1863.   // Replication of the %1 Global Group "%2" from primary domain controller
  1864.   // %3 failed with the following error: %n%4
  1865.   NELOG_NetlogonFailedLocalGroupDelta       = (ERRLOG2_BASE + 31);
  1866.   {$EXTERNALSYM NELOG_NetlogonFailedLocalGroupDelta}
  1867.   // Replication of the %1 Local Group "%2" from primary domain controller
  1868.   // %3 failed with the following error: %n%4
  1869.   NELOG_NetlogonFailedUserDelta             = (ERRLOG2_BASE + 32);
  1870.   {$EXTERNALSYM NELOG_NetlogonFailedUserDelta}
  1871.   // Replication of the %1 User "%2" from primary domain controller
  1872.   // %3 failed with the following error: %n%4
  1873.   NELOG_NetlogonFailedPolicyDelta           = (ERRLOG2_BASE + 33);
  1874.   {$EXTERNALSYM NELOG_NetlogonFailedPolicyDelta}
  1875.   // Replication of the %1 Policy Object "%2" from primary domain controller
  1876.   // %3 failed with the following error: %n%4
  1877.   NELOG_NetlogonFailedTrustedDomainDelta    = (ERRLOG2_BASE + 34);
  1878.   {$EXTERNALSYM NELOG_NetlogonFailedTrustedDomainDelta}
  1879.   // Replication of the %1 Trusted Domain Object "%2" from primary domain controller
  1880.   // %3 failed with the following error: %n%4
  1881.   NELOG_NetlogonFailedAccountDelta          = (ERRLOG2_BASE + 35);
  1882.   {$EXTERNALSYM NELOG_NetlogonFailedAccountDelta}
  1883.   // Replication of the %1 Account Object "%2" from primary domain controller
  1884.   // %3 failed with the following error: %n%4
  1885.   NELOG_NetlogonFailedSecretDelta           = (ERRLOG2_BASE + 36);
  1886.   {$EXTERNALSYM NELOG_NetlogonFailedSecretDelta}
  1887.   // Replication of the %1 Secret "%2" from primary domain controller
  1888.   // %3 failed with the following error: %n%4
  1889.   NELOG_NetlogonSystemError                 = (ERRLOG2_BASE + 37);
  1890.   {$EXTERNALSYM NELOG_NetlogonSystemError}
  1891.   // The system returned the following unexpected error code: %n%1
  1892.   NELOG_NetlogonDuplicateMachineAccounts    = (ERRLOG2_BASE + 38);
  1893.   {$EXTERNALSYM NELOG_NetlogonDuplicateMachineAccounts}
  1894.   // Netlogon has detected two machine accounts for server "%1".
  1895.   // The server can be either a Windows NT Server that is a member of the
  1896.   // domain or the server can be a LAN Manager server with an account in the
  1897.   // SERVERS global group.  It cannot be both.
  1898.   NELOG_NetlogonTooManyGlobalGroups         = (ERRLOG2_BASE + 39);
  1899.   {$EXTERNALSYM NELOG_NetlogonTooManyGlobalGroups}
  1900.   // This domain has more global groups than can be replicated to a LanMan
  1901.   // BDC.  Either delete some of your global groups or remove the LanMan
  1902.   // BDCs from the domain.
  1903.   NELOG_NetlogonBrowserDriver               = (ERRLOG2_BASE + 40);
  1904.   {$EXTERNALSYM NELOG_NetlogonBrowserDriver}
  1905.   // The Browser driver returned the following error to Netlogon: %n%1
  1906.   NELOG_NetlogonAddNameFailure              = (ERRLOG2_BASE + 41);
  1907.   {$EXTERNALSYM NELOG_NetlogonAddNameFailure}
  1908.   // Netlogon could not register the %1<1B> name for the following reason: %n%2
  1909. //  More Remoteboot service events.
  1910.   NELOG_RplMessages                         = (ERRLOG2_BASE + 42);
  1911.   {$EXTERNALSYM NELOG_RplMessages}
  1912.   // Service failed to retrieve messages needed to boot remote boot clients.
  1913.   NELOG_RplXnsBoot                          = (ERRLOG2_BASE + 43);
  1914.   {$EXTERNALSYM NELOG_RplXnsBoot}
  1915.   // Service experienced a severe error and can no longer provide remote boot
  1916.   // for 3Com 3Start remote boot clients.
  1917.   NELOG_RplSystem                           = (ERRLOG2_BASE + 44);
  1918.   {$EXTERNALSYM NELOG_RplSystem}
  1919.   // Service experienced a severe system error and will shut itself down.
  1920.   NELOG_RplWkstaTimeout                     = (ERRLOG2_BASE + 45);
  1921.   {$EXTERNALSYM NELOG_RplWkstaTimeout}
  1922.   // Client with computer name %1 failed to acknowledge receipt of the
  1923.   // boot data.  Remote boot of this client was not completed.
  1924.   NELOG_RplWkstaFileOpen                    = (ERRLOG2_BASE + 46);
  1925.   {$EXTERNALSYM NELOG_RplWkstaFileOpen}
  1926.   // Client with computer name %1 was not booted due to an error in opening
  1927.   // file %2.
  1928.   NELOG_RplWkstaFileRead                    = (ERRLOG2_BASE + 47);
  1929.   {$EXTERNALSYM NELOG_RplWkstaFileRead}
  1930.   // Client with computer name %1 was not booted due to an error in reading
  1931.   // file %2.
  1932.   NELOG_RplWkstaMemory                      = (ERRLOG2_BASE + 48);
  1933.   {$EXTERNALSYM NELOG_RplWkstaMemory}
  1934.   // Client with computer name %1 was not booted due to insufficent memory
  1935.   // at the remote boot server.
  1936.   NELOG_RplWkstaFileChecksum                = (ERRLOG2_BASE + 49);
  1937.   {$EXTERNALSYM NELOG_RplWkstaFileChecksum}
  1938.   // Client with computer name %1 will be booted without using checksums
  1939.   // because checksum for file %2 could not be calculated.
  1940.   NELOG_RplWkstaFileLineCount               = (ERRLOG2_BASE + 50);
  1941.   {$EXTERNALSYM NELOG_RplWkstaFileLineCount}
  1942.   // Client with computer name %1 was not booted due to too many lines in
  1943.   // file %2.
  1944.   NELOG_RplWkstaBbcFile                     = (ERRLOG2_BASE + 51);
  1945.   {$EXTERNALSYM NELOG_RplWkstaBbcFile}
  1946.   // Client with computer name %1 was not booted because the boot block
  1947.   // configuration file %2 for this client does not contain boot block
  1948.   // line and/or loader line.
  1949.   NELOG_RplWkstaFileSize                    = (ERRLOG2_BASE + 52);
  1950.   {$EXTERNALSYM NELOG_RplWkstaFileSize}
  1951.   // Client with computer name %1 was not booted due to a bad size of
  1952.   // file %2.
  1953.   NELOG_RplWkstaInternal                    = (ERRLOG2_BASE + 53);
  1954.   {$EXTERNALSYM NELOG_RplWkstaInternal}
  1955.   // Client with computer name %1 was not booted due to remote boot
  1956.   // service internal error.
  1957.   NELOG_RplWkstaWrongVersion                = (ERRLOG2_BASE + 54);
  1958.   {$EXTERNALSYM NELOG_RplWkstaWrongVersion}
  1959.   // Client with computer name %1 was not booted because file %2 has an
  1960.   // invalid boot header.
  1961.   NELOG_RplWkstaNetwork                     = (ERRLOG2_BASE + 55);
  1962.   {$EXTERNALSYM NELOG_RplWkstaNetwork}
  1963.   // Client with computer name %1 was not booted due to network error.
  1964.   NELOG_RplAdapterResource                  = (ERRLOG2_BASE + 56);
  1965.   {$EXTERNALSYM NELOG_RplAdapterResource}
  1966.   // Client with adapter id %1 was not booted due to lack of resources.
  1967.   NELOG_RplFileCopy                         = (ERRLOG2_BASE + 57);
  1968.   {$EXTERNALSYM NELOG_RplFileCopy}
  1969.   // Service experienced error copying file or directory %1.
  1970.   NELOG_RplFileDelete                       = (ERRLOG2_BASE + 58);
  1971.   {$EXTERNALSYM NELOG_RplFileDelete}
  1972.   // Service experienced error deleting file or directory %1.
  1973.   NELOG_RplFilePerms                        = (ERRLOG2_BASE + 59);
  1974.   {$EXTERNALSYM NELOG_RplFilePerms}
  1975.   // Service experienced error setting permissions on file or directory %1.
  1976.   NELOG_RplCheckConfigs                     = (ERRLOG2_BASE + 60);
  1977.   {$EXTERNALSYM NELOG_RplCheckConfigs}
  1978.   // Service experienced error evaluating RPL configurations.
  1979.   NELOG_RplCreateProfiles                   = (ERRLOG2_BASE + 61);
  1980.   {$EXTERNALSYM NELOG_RplCreateProfiles}
  1981.   // Service experienced error creating RPL profiles for all configurations.
  1982.   NELOG_RplRegistry                         = (ERRLOG2_BASE + 62);
  1983.   {$EXTERNALSYM NELOG_RplRegistry}
  1984.   // Service experienced error accessing registry.
  1985.   NELOG_RplReplaceRPLDISK                   = (ERRLOG2_BASE + 63);
  1986.   {$EXTERNALSYM NELOG_RplReplaceRPLDISK}
  1987.   // Service experienced error replacing possibly outdated RPLDISK.SYS.
  1988.   NELOG_RplCheckSecurity                    = (ERRLOG2_BASE + 64);
  1989.   {$EXTERNALSYM NELOG_RplCheckSecurity}
  1990.   // Service experienced error adding security accounts or setting
  1991.   // file permissions.  These accounts are the RPLUSER local group
  1992.   // and the user accounts for the individual RPL workstations.
  1993.   NELOG_RplBackupDatabase                   = (ERRLOG2_BASE + 65);
  1994.   {$EXTERNALSYM NELOG_RplBackupDatabase}
  1995.   // Service failed to back up its database.
  1996.   NELOG_RplInitDatabase                     = (ERRLOG2_BASE + 66);
  1997.   {$EXTERNALSYM NELOG_RplInitDatabase}
  1998.   // Service failed to initialize from its database.  The database may be
  1999.   // missing or corrupted.  Service will attempt restoring the database
  2000.   // from the backup.
  2001.   NELOG_RplRestoreDatabaseFailure           = (ERRLOG2_BASE + 67);
  2002.   {$EXTERNALSYM NELOG_RplRestoreDatabaseFailure}
  2003.   // Service failed to restore its database from the backup.  Service
  2004.   // will not start.
  2005.   NELOG_RplRestoreDatabaseSuccess           = (ERRLOG2_BASE + 68);
  2006.   {$EXTERNALSYM NELOG_RplRestoreDatabaseSuccess}
  2007.   // Service sucessfully restored its database from the backup.
  2008.   NELOG_RplInitRestoredDatabase             = (ERRLOG2_BASE + 69);
  2009.   {$EXTERNALSYM NELOG_RplInitRestoredDatabase}
  2010.   // Service failed to initialize from its restored database.  Service
  2011.   // will not start.
  2012. // More Netlogon and RPL service events
  2013.   NELOG_NetlogonSessionTypeWrong            = (ERRLOG2_BASE + 70);
  2014.   {$EXTERNALSYM NELOG_NetlogonSessionTypeWrong}
  2015.   // The session setup to the Windows NT Domain Controller %1 from computer
  2016.   // %2 using account %4 failed.  %2 is declared to be a BDC in domain %3.
  2017.   // However, %2 tried to connect as either a DC in a trusted domain,
  2018.   // a member workstation in domain %3, or as a server in domain %3.
  2019.   // Use the Server Manager to remove the BDC account for %2.
  2020.   NELOG_RplUpgradeDBTo40                    = (ERRLOG2_BASE + 71);
  2021.   {$EXTERNALSYM NELOG_RplUpgradeDBTo40}
  2022.   // The Remoteboot database was in NT 3.5 / NT 3.51 format and NT is
  2023.   // attempting to convert it to NT 4.0 format. The JETCONV converter
  2024.   // will write to the Application event log when it is finished.
  2025.   NELOG_NetlogonLanmanBdcsNotAllowed        = (ERRLOG2_BASE + 72);
  2026.   {$EXTERNALSYM NELOG_NetlogonLanmanBdcsNotAllowed}
  2027.   // Global group SERVERS exists in domain %1 and has members.
  2028.   // This group defines Lan Manager BDCs in the domain.
  2029.   // Lan Manager BDCs are not permitted in NT domains.
  2030.   NELOG_NetlogonNoDynamicDns                = (ERRLOG2_BASE + 73);
  2031.   {$EXTERNALSYM NELOG_NetlogonNoDynamicDns}
  2032.   // The DNS server for this DC does not support dynamic DNS.
  2033.   // Add the DNS records from the file '%SystemRoot%System32Confignetlogon.dns'
  2034.   // to the DNS server serving the domain referenced in that file.
  2035.   NELOG_NetlogonDynamicDnsRegisterFailure   = (ERRLOG2_BASE + 74);
  2036.   {$EXTERNALSYM NELOG_NetlogonDynamicDnsRegisterFailure}
  2037.   // Registration of the DNS record '%1' failed with the following error: %n%2
  2038.   NELOG_NetlogonDynamicDnsDeregisterFailure = (ERRLOG2_BASE + 75);
  2039.   {$EXTERNALSYM NELOG_NetlogonDynamicDnsDeregisterFailure}
  2040.   // Deregistration of the DNS record '%1' failed with the following error: %n%2
  2041.   NELOG_NetlogonFailedFileCreate            = (ERRLOG2_BASE + 76);
  2042.   {$EXTERNALSYM NELOG_NetlogonFailedFileCreate}
  2043.   // Failed to create/open file %1 with the following error: %n%2
  2044.   NELOG_NetlogonGetSubnetToSite             = (ERRLOG2_BASE + 77);
  2045.   {$EXTERNALSYM NELOG_NetlogonGetSubnetToSite}
  2046.   // Netlogon got the following error while trying to get the subnet to site
  2047.   // mapping information from the DS: %n%1
  2048.   NELOG_NetlogonNoSiteForClient              = (ERRLOG2_BASE + 78);
  2049.   {$EXTERNALSYM NELOG_NetlogonNoSiteForClient}
  2050.   // '%1' tried to determine its site by looking up its IP address ('%2')
  2051.   // in the ConfigurationSitesSubnets container in the DS.  No subnet matched
  2052.   // the IP address.  Consider adding a subnet object for this IP address.
  2053.   NELOG_NetlogonBadSiteName                  = (ERRLOG2_BASE + 79);
  2054.   {$EXTERNALSYM NELOG_NetlogonBadSiteName}
  2055.   // The site name for this computer is '%1'.  That site name is not a valid
  2056.   // site name.  A site name must be a valid DNS label.
  2057.   // Rename the site to be a valid name.
  2058.   NELOG_NetlogonBadSubnetName                = (ERRLOG2_BASE + 80);
  2059.   {$EXTERNALSYM NELOG_NetlogonBadSubnetName}
  2060.   // The subnet object '%1' appears in the ConfigurationSitesSubnets
  2061.   // container in the DS.  The name is not syntactically valid.  The valid
  2062.   // syntax is xx.xx.xx.xx/yy where xx.xx.xx.xx is a valid IP subnet number
  2063.   // and yy is the number of bits in the subnet mask.
  2064.   //
  2065.   // Correct the name of the subnet object.
  2066.   NELOG_NetlogonDynamicDnsServerFailure      = (ERRLOG2_BASE + 81);
  2067.   {$EXTERNALSYM NELOG_NetlogonDynamicDnsServerFailure}
  2068.   // Dynamic registration or deregistration of one or more DNS records failed because no DNS servers are available.
  2069.   NELOG_NetlogonDynamicDnsFailure            = (ERRLOG2_BASE + 82);
  2070.   {$EXTERNALSYM NELOG_NetlogonDynamicDnsFailure}
  2071.   // Dynamic registration or deregistration of one or more DNS records failed with the following error: %n%1
  2072.   NELOG_NetlogonRpcCallCancelled             = (ERRLOG2_BASE + 83);
  2073.   {$EXTERNALSYM NELOG_NetlogonRpcCallCancelled}
  2074.   // The session setup to the Windows NT Domain Controller %1 for the domain %2
  2075.   // is not responsive.  The current RPC call from Netlogon on \%3 to %1 has been cancelled.
  2076.   NELOG_NetlogonDcSiteCovered                = (ERRLOG2_BASE + 84);
  2077.   {$EXTERNALSYM NELOG_NetlogonDcSiteCovered}
  2078.   // Site '%2' does not have any Domain Controllers for domain '%3'.
  2079.   // Domain Controllers in site '%1' have been automatically
  2080.   // selected to cover site '%2' based on configured Directory Server
  2081.   // replication costs.
  2082.   NELOG_NetlogonDcSiteNotCovered             = (ERRLOG2_BASE + 85);
  2083.   {$EXTERNALSYM NELOG_NetlogonDcSiteNotCovered}
  2084.   // This Domain Controller no longer automatically covers site '%1'.
  2085.   NELOG_NetlogonGcSiteCovered                = (ERRLOG2_BASE + 86);
  2086.   {$EXTERNALSYM NELOG_NetlogonGcSiteCovered}
  2087.   // Site '%2' does not have any Global Catalog servers.
  2088.   // Global Catalog servers in site '%1' have been automatically
  2089.   // selected to cover site '%2' based on configured Directory Server
  2090.   // replication costs.
  2091.   NELOG_NetlogonGcSiteNotCovered             = (ERRLOG2_BASE + 87);
  2092.   {$EXTERNALSYM NELOG_NetlogonGcSiteNotCovered}
  2093.   // This Global Catalog server no longer automatically covers site '%1'.
  2094.   NELOG_NetlogonFailedSpnUpdate              = (ERRLOG2_BASE + 88);
  2095.   {$EXTERNALSYM NELOG_NetlogonFailedSpnUpdate}
  2096.   // Attemp to update Service Principal Name (SPN) of the computer object
  2097.   // in Active Directory failed.  The following error occurred: %n%1
  2098.   NELOG_NetlogonFailedDnsHostNameUpdate      = (ERRLOG2_BASE + 89);
  2099.   {$EXTERNALSYM NELOG_NetlogonFailedDnsHostNameUpdate}
  2100.   // Attemp to update DNS Host Name of the computer object
  2101.   // in Active Directory failed.  The following error occurred: %n%1
  2102. // Translated from LMAT.H
  2103. //  The following bits are used with Flags field in structures below.
  2104. //  Do we exec programs for this job periodically (/EVERY switch)
  2105. //  or one time (/NEXT switch).
  2106. const
  2107.   {$EXTERNALSYM JOB_RUN_PERIODICALLY}
  2108.   JOB_RUN_PERIODICALLY            = $01;    //  set if EVERY
  2109. //  Was there an error last time we tried to exec a program on behalf of
  2110. //  this job.
  2111. //  This flag is meaningfull on output only!
  2112.   {$EXTERNALSYM JOB_EXEC_ERROR}
  2113.   JOB_EXEC_ERROR                  = $02;    //  set if error
  2114. //  Will this job run today or tomorrow.
  2115. //  This flag is meaningfull on output only!
  2116.   {$EXTERNALSYM JOB_RUNS_TODAY}
  2117.   JOB_RUNS_TODAY                  = $04;    //  set if today
  2118. //  Add current day of the month to DaysOfMonth input.
  2119. //  This flag is meaningfull on input only!
  2120.   {$EXTERNALSYM JOB_ADD_CURRENT_DATE}
  2121.   JOB_ADD_CURRENT_DATE            = $08;    // set if to add current date
  2122. //  Will this job be run interactively or not.  Windows NT 3.1 do not
  2123. //  know about this bit, i.e. they submit interactive jobs only.
  2124.   {$EXTERNALSYM JOB_NONINTERACTIVE}
  2125.   JOB_NONINTERACTIVE              = $10;    // set for noninteractive
  2126.   {$EXTERNALSYM JOB_INPUT_FLAGS}
  2127.   JOB_INPUT_FLAGS = JOB_RUN_PERIODICALLY or JOB_ADD_CURRENT_DATE or
  2128.     JOB_NONINTERACTIVE;
  2129.   {$EXTERNALSYM JOB_OUTPUT_FLAGS}
  2130.   JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY or JOB_EXEC_ERROR or JOB_RUNS_TODAY or
  2131.     JOB_NONINTERACTIVE;
  2132. type
  2133.   PAtInfo = ^TAtInfo;
  2134.   {$EXTERNALSYM _AT_INFO}
  2135.   _AT_INFO = record
  2136.     JobTime: DWORD;
  2137.     DaysOfMonth: DWORD;
  2138.     DaysOfWeek: UCHAR;
  2139.     Flags: UCHAR;
  2140.    Command: LPWSTR;
  2141.   end;
  2142.   TAtInfo = _AT_INFO;
  2143.   {$EXTERNALSYM AT_INFO}
  2144.   AT_INFO = _AT_INFO;
  2145.   PAtEnum = ^TAtEnum;
  2146.   {$EXTERNALSYM _AT_ENUM}
  2147.   _AT_ENUM = record
  2148.     JobId: DWORD;
  2149.     JobTime: DWORD;
  2150.     DaysOfMonth: DWORD;
  2151.     DaysOfWeek: UCHAR;
  2152.     Flags: UCHAR;
  2153.     Command: LPWSTR;
  2154.   end;
  2155.   TAtEnum = _AT_ENUM;
  2156.   {$EXTERNALSYM AT_ENUM}
  2157.   AT_ENUM = _AT_ENUM;
  2158.   
  2159. {$EXTERNALSYM NetScheduleJobAdd}
  2160. function NetScheduleJobAdd(Servername: LPCWSTR; Buffer: Pointer;
  2161.   var JobId: DWORD): NET_API_STATUS; stdcall;
  2162. {$EXTERNALSYM NetScheduleJobDel}
  2163. function NetScheduleJobDel(Servername: LPCWSTR; MinJobId: DWORD;
  2164.   MaxJobId: DWORD): NET_API_STATUS; stdcall;
  2165. {$EXTERNALSYM NetScheduleJobEnum}
  2166. function NetScheduleJobEnum( Servername: LPCWSTR; PointerToBuffer: Pointer;
  2167.   PrefferedMaximumLength: DWORD; var EntriesRead: DWORD; var TotalEntries: DWORD;
  2168.   ResumeHandle: PDWORD): NET_API_STATUS; stdcall;
  2169. {$EXTERNALSYM NetScheduleJobGetInfo}
  2170. function NetScheduleJobGetInfo(Servername: LPCWSTR; JobId: DWORD;
  2171.   PointerToBuffer: Pointer): NET_API_STATUS; stdcall;
  2172. // Translated from LMBROWSR.H
  2173. type
  2174.   PBrowserStatistics = ^TBrowserStatistics;
  2175.   _BROWSER_STATISTICS = record
  2176.     StatisticsStartTime: LARGE_INTEGER;
  2177.     NumberOfServerAnnouncements: LARGE_INTEGER;
  2178.     NumberOfDomainAnnouncements: LARGE_INTEGER;
  2179.     NumberOfElectionPackets: ULONG;
  2180.     NumberOfMailslotWrites: ULONG;
  2181.     NumberOfGetBrowserServerListRequests: ULONG;
  2182.     NumberOfServerEnumerations: ULONG;
  2183.     NumberOfDomainEnumerations: ULONG;
  2184.     NumberOfOtherEnumerations: ULONG;
  2185.     NumberOfMissedServerAnnouncements: ULONG;
  2186.     NumberOfMissedMailslotDatagrams: ULONG;
  2187.     NumberOfMissedGetBrowserServerListRequests: ULONG;
  2188.     NumberOfFailedServerAnnounceAllocations: ULONG;
  2189.     NumberOfFailedMailslotAllocations: ULONG;
  2190.     NumberOfFailedMailslotReceives: ULONG;
  2191.     NumberOfFailedMailslotWrites: ULONG;
  2192.     NumberOfFailedMailslotOpens: ULONG;
  2193.     NumberOfDuplicateMasterAnnouncements: ULONG;
  2194.     NumberOfIllegalDatagrams: LARGE_INTEGER;
  2195.   end;
  2196.   {$EXTERNALSYM _BROWSER_STATISTICS}
  2197.   TBrowserStatistics = _BROWSER_STATISTICS;
  2198.   BROWSER_STATISTICS = _BROWSER_STATISTICS;
  2199.   {$EXTERNALSYM BROWSER_STATISTICS}
  2200.   PBrowserStatistics100 = ^TBrowserStatistics100;
  2201.   _BROWSER_STATISTICS_100 = record
  2202.     StartTime: LARGE_INTEGER;
  2203.     NumberOfServerAnnouncements: LARGE_INTEGER;
  2204.     NumberOfDomainAnnouncements: LARGE_INTEGER;
  2205.     NumberOfElectionPackets: ULONG;
  2206.     NumberOfMailslotWrites: ULONG;
  2207.     NumberOfGetBrowserServerListRequests: ULONG;
  2208.     NumberOfIllegalDatagrams: LARGE_INTEGER;
  2209.   end;
  2210.   {$EXTERNALSYM _BROWSER_STATISTICS_100}
  2211.   TBrowserStatistics100 = _BROWSER_STATISTICS_100;
  2212.   BROWSER_STATISTICS_100 = _BROWSER_STATISTICS_100;
  2213.   {$EXTERNALSYM BROWSER_STATISTICS_100}
  2214.   PBrowserStatistics101 = ^TBrowserStatistics101;
  2215.   _BROWSER_STATISTICS_101 = record
  2216.     StartTime: LARGE_INTEGER;
  2217.     NumberOfServerAnnouncements: LARGE_INTEGER;
  2218.     NumberOfDomainAnnouncements: LARGE_INTEGER;
  2219.     NumberOfElectionPackets: ULONG;
  2220.     NumberOfMailslotWrites: ULONG;
  2221.     NumberOfGetBrowserServerListRequests: ULONG;
  2222.     NumberOfIllegalDatagrams: LARGE_INTEGER;
  2223.     NumberOfMissedServerAnnouncements: ULONG;
  2224.     NumberOfMissedMailslotDatagrams: ULONG;
  2225.     NumberOfMissedGetBrowserServerListRequests: ULONG;
  2226.     NumberOfFailedServerAnnounceAllocations: ULONG;
  2227.     NumberOfFailedMailslotAllocations: ULONG;
  2228.     NumberOfFailedMailslotReceives: ULONG;
  2229.     NumberOfFailedMailslotWrites: ULONG;
  2230.     NumberOfFailedMailslotOpens: ULONG;
  2231.     NumberOfDuplicateMasterAnnouncements: ULONG;
  2232.   end;
  2233.   {$EXTERNALSYM _BROWSER_STATISTICS_101}
  2234.   TBrowserStatistics101 = _BROWSER_STATISTICS_101;
  2235.   BROWSER_STATISTICS_101 = _BROWSER_STATISTICS_101;
  2236.   {$EXTERNALSYM BROWSER_STATISTICS_101}
  2237.   PBrowserEmulatedDomain = ^TBrowserEmulatedDomain;
  2238.   _BROWSER_EMULATED_DOMAIN = record
  2239.     DomainName: LPWSTR;
  2240.     EmulatedServerName: LPWSTR;
  2241.     Role: DWORD;
  2242.   end;
  2243.   {$EXTERNALSYM _BROWSER_EMULATED_DOMAIN}
  2244.   TBrowserEmulatedDomain = _BROWSER_EMULATED_DOMAIN;
  2245.   BROWSER_EMULATED_DOMAIN = _BROWSER_EMULATED_DOMAIN;
  2246.   {$EXTERNALSYM BROWSER_EMULATED_DOMAIN}
  2247. // Function Prototypes - BROWSER
  2248. function I_BrowserServerEnum(servername, transport, clientname: LPCWSTR;
  2249.   level: DWORD; bufptr: Pointer; prefmaxlen: DWORD; var entriesread: DWORD;
  2250.   var totalentries: DWORD; servertype: DWORD; domain: LPCWSTR;
  2251.   resume_handle: PDWORD): NET_API_STATUS; stdcall;
  2252. {$EXTERNALSYM I_BrowserServerEnum}
  2253. function I_BrowserServerEnumEx(servername, transport, clientname: LPCWSTR;
  2254.   level: DWORD; bufptr: Pointer; prefmaxlen: DWORD; var entriesread: DWORD;
  2255.   var totalentries: DWORD; servertype: DWORD; domain: LPCWSTR;
  2256.   FirstNameToReturn: LPCWSTR): NET_API_STATUS; stdcall;
  2257. {$EXTERNALSYM I_BrowserServerEnumEx}
  2258. function I_BrowserQueryOtherDomains(servername: LPCWSTR; bufptr: Pointer;
  2259.   var entriesread: DWORD; var totalentries: DWORD): NET_API_STATUS; stdcall;
  2260. {$EXTERNALSYM I_BrowserQueryOtherDomains}
  2261. function I_BrowserResetNetlogonState(servername: LPCWSTR): NET_API_STATUS; stdcall;
  2262. {$EXTERNALSYM I_BrowserResetNetlogonState}
  2263. function I_BrowserSetNetlogonState(ServerName, DomainName, EmulatedServerName: LPWSTR;
  2264.   Role: DWORD): NET_API_STATUS; stdcall;
  2265. {$EXTERNALSYM I_BrowserSetNetlogonState}
  2266. const
  2267.   BROWSER_ROLE_PDC = $1;
  2268.   {$EXTERNALSYM BROWSER_ROLE_PDC}
  2269.   BROWSER_ROLE_BDC = $2;
  2270.   {$EXTERNALSYM BROWSER_ROLE_BDC}
  2271. function I_BrowserQueryEmulatedDomains(ServerName: LPWSTR;
  2272.   var EmulatedDomains: TBrowserEmulatedDomain;
  2273.   var EntriesRead: DWORD): NET_API_STATUS; stdcall;
  2274. {$EXTERNALSYM I_BrowserQueryEmulatedDomains}
  2275. function I_BrowserQueryStatistics(servername: LPCWSTR;
  2276.   var statistics: TBrowserStatistics): NET_API_STATUS; stdcall;
  2277. {$EXTERNALSYM I_BrowserQueryStatistics}
  2278. function I_BrowserResetStatistics(servername: LPCWSTR): NET_API_STATUS; stdcall;
  2279. {$EXTERNALSYM I_BrowserResetStatistics}
  2280. function I_BrowserServerEnumForXactsrv(TransportName, ClientName: LPCWSTR;
  2281.   NtLevel: ULONG; ClientLevel: Word; Buffer: Pointer; BufferLength: WORD;
  2282.   PreferedMaximumLength: DWORD; var EntriesRead: DWORD; var TotalEntries: DWORD;
  2283.   ServerType: DWORD; Domain: LPCWSTR; FirstNameToReturn: LPCWSTR;
  2284.   Converter: PWord): Word; stdcall;
  2285. {$EXTERNALSYM I_BrowserServerEnumForXactsrv}
  2286. function I_BrowserDebugTrace(Server: PWideChar; Buffer: PChar): NET_API_STATUS; stdcall;
  2287. {$EXTERNALSYM I_BrowserDebugTrace}
  2288. // Translated from LMCHDEV.H
  2289. // CharDev Class
  2290. // Function Prototypes - CharDev
  2291. function NetCharDevEnum(servername: LPCWSTR; level: DWORD; bufptr: Pointer;
  2292.   prefmaxlen: DWORD; var entriesread: DWORD; var totalentries: DWORD;
  2293.   resume_handle: DWORD): NET_API_STATUS; stdcall;
  2294. {$EXTERNALSYM NetCharDevEnum}
  2295. function NetCharDevGetInfo(servername: LPCWSTR; devname: LPCWSTR;
  2296.   level: DWORD; bufptr: Pointer): NET_API_STATUS; stdcall;
  2297. {$EXTERNALSYM NetCharDevGetInfo}
  2298. function NetCharDevControl(servername: LPCWSTR; devname: LPCWSTR;
  2299.   opcode: DWORD): NET_API_STATUS; stdcall;
  2300. {$EXTERNALSYM NetCharDevControl}
  2301. // Data Structures - CharDev
  2302. type
  2303.   PChardevInfo0 = ^TChardevInfo0;
  2304.   _CHARDEV_INFO_0 = record
  2305.     ch0_dev: LPWSTR;
  2306.   end;
  2307.   {$EXTERNALSYM _CHARDEV_INFO_0}
  2308.   TChardevInfo0 = _CHARDEV_INFO_0;
  2309.   CHARDEV_INFO_0 = _CHARDEV_INFO_0;
  2310.   {$EXTERNALSYM CHARDEV_INFO_0}
  2311.   PChardevInfo1 = ^TChardevInfo1;
  2312.   _CHARDEV_INFO_1 = record
  2313.     ch1_dev: LPWSTR;
  2314.     ch1_status: DWORD;
  2315.     ch1_username: LPWSTR;
  2316.     ch1_time: DWORD;
  2317.   end;
  2318.   {$EXTERNALSYM _CHARDEV_INFO_1}
  2319.   TChardevInfo1 = _CHARDEV_INFO_1;
  2320.   CHARDEV_INFO_1 = _CHARDEV_INFO_1;
  2321.   {$EXTERNALSYM CHARDEV_INFO_1}
  2322. // CharDevQ Class
  2323. // Function Prototypes - CharDevQ
  2324. function NetCharDevQEnum(servername: LPCWSTR; username: LPCWSTR; level: DWORD;
  2325.   bufptr: Pointer; prefmaxlen: DWORD; var entriesread: DWORD;
  2326.   var totalentries: DWORD; resume_handle: PDWORD): NET_API_STATUS; stdcall;
  2327. {$EXTERNALSYM NetCharDevQEnum}
  2328. function NetCharDevQGetInfo(servername, queuename, username: LPCWSTR;
  2329.   level: DWORD; bufptr: Pointer): NET_API_STATUS; stdcall;
  2330. {$EXTERNALSYM NetCharDevQGetInfo}
  2331. function NetCharDevQSetInfo(servername, queuename: LPCWSTR; level: DWORD;
  2332.   buf: Pointer; parm_err: PDWORD): NET_API_STATUS; stdcall;
  2333. {$EXTERNALSYM NetCharDevQSetInfo}
  2334. function NetCharDevQPurge(servername, queuename: LPCWSTR): NET_API_STATUS; stdcall;
  2335. {$EXTERNALSYM NetCharDevQPurge}
  2336. function NetCharDevQPurgeSelf(servername, queuename, computername: LPCWSTR): NET_API_STATUS; stdcall;
  2337. {$EXTERNALSYM NetCharDevQPurgeSelf}
  2338. // Data Structures - CharDevQ
  2339. type
  2340.   PChardevqInfo0 = ^TChardevqInfo0;
  2341.   _CHARDEVQ_INFO_0 = record
  2342.     cq0_dev: LPWSTR;
  2343.   end;
  2344.   {$EXTERNALSYM _CHARDEVQ_INFO_0}
  2345.   TChardevqInfo0 = _CHARDEVQ_INFO_0;
  2346.   CHARDEVQ_INFO_0 = _CHARDEVQ_INFO_0;
  2347.   {$EXTERNALSYM CHARDEVQ_INFO_0}
  2348.   PChardevqInfo1 = ^TChardevqInfo1;
  2349.   _CHARDEVQ_INFO_1 = record
  2350.     cq1_dev: LPWSTR;
  2351.     cq1_priority: DWORD;
  2352.     cq1_devs: LPWSTR;
  2353.     cq1_numusers: DWORD;
  2354.     cq1_numahead: DWORD;
  2355.   end;
  2356.   {$EXTERNALSYM _CHARDEVQ_INFO_1}
  2357.   TChardevqInfo1 = _CHARDEVQ_INFO_1;
  2358.   CHARDEVQ_INFO_1 = _CHARDEVQ_INFO_1;
  2359.   {$EXTERNALSYM CHARDEVQ_INFO_1}
  2360.   PChardevqInfo1002 = ^TChardevqInfo1002;
  2361.   _CHARDEVQ_INFO_1002 = record
  2362.     cq1002_priority: DWORD;
  2363.   end;
  2364.   {$EXTERNALSYM _CHARDEVQ_INFO_1002}
  2365.   TChardevqInfo1002 = _CHARDEVQ_INFO_1002;
  2366.   CHARDEVQ_INFO_1002 = _CHARDEVQ_INFO_1002;
  2367.   {$EXTERNALSYM CHARDEVQ_INFO_1002}
  2368.   PChardevqInfo1003 = ^TChardevqInfo1003;
  2369.   _CHARDEVQ_INFO_1003 = record
  2370.     cq1003_devs: LPWSTR;
  2371.   end;
  2372.   {$EXTERNALSYM _CHARDEVQ_INFO_1003}
  2373.   TChardevqInfo1003 = _CHARDEVQ_INFO_1003;
  2374.   CHARDEVQ_INFO_1003 = _CHARDEVQ_INFO_1003;
  2375.   {$EXTERNALSYM CHARDEVQ_INFO_1003}
  2376. // Bits for chardev_info_1 field ch1_status.
  2377. const
  2378.   CHARDEV_STAT_OPENED             = $02;
  2379.   {$EXTERNALSYM CHARDEV_STAT_OPENED}
  2380.   CHARDEV_STAT_ERROR              = $04;
  2381.   {$EXTERNALSYM CHARDEV_STAT_ERROR}
  2382. // Opcodes for NetCharDevControl
  2383.   CHARDEV_CLOSE                   = 0;
  2384.   {$EXTERNALSYM CHARDEV_CLOSE}
  2385. // Values for parm_err parameter.
  2386.   CHARDEVQ_DEV_PARMNUM        = 1;
  2387.   {$EXTERNALSYM CHARDEVQ_DEV_PARMNUM}
  2388.   CHARDEVQ_PRIORITY_PARMNUM   = 2;
  2389.   {$EXTERNALSYM CHARDEVQ_PRIORITY_PARMNUM}
  2390.   CHARDEVQ_DEVS_PARMNUM       = 3;
  2391.   {$EXTERNALSYM CHARDEVQ_DEVS_PARMNUM}
  2392.   CHARDEVQ_NUMUSERS_PARMNUM   = 4;
  2393.   {$EXTERNALSYM CHARDEVQ_NUMUSERS_PARMNUM}
  2394.   CHARDEVQ_NUMAHEAD_PARMNUM   = 5;
  2395.   {$EXTERNALSYM CHARDEVQ_NUMAHEAD_PARMNUM}
  2396. // Single-field infolevels for NetCharDevQSetInfo.
  2397.   CHARDEVQ_PRIORITY_INFOLEVEL = (PARMNUM_BASE_INFOLEVEL + CHARDEVQ_PRIORITY_PARMNUM);
  2398.   {$EXTERNALSYM CHARDEVQ_PRIORITY_INFOLEVEL}
  2399.   CHARDEVQ_DEVS_INFOLEVEL = (PARMNUM_BASE_INFOLEVEL + CHARDEVQ_DEVS_PARMNUM);
  2400.   {$EXTERNALSYM CHARDEVQ_DEVS_INFOLEVEL}
  2401. // Minimum, maximum, and recommended default for priority.
  2402.   CHARDEVQ_MAX_PRIORITY           = 1;
  2403.   {$EXTERNALSYM CHARDEVQ_MAX_PRIORITY}
  2404.   CHARDEVQ_MIN_PRIORITY           = 9;
  2405.   {$EXTERNALSYM CHARDEVQ_MIN_PRIORITY}
  2406.   CHARDEVQ_DEF_PRIORITY           = 5;
  2407.   {$EXTERNALSYM CHARDEVQ_DEF_PRIORITY}
  2408. // Value indicating no requests in the queue.
  2409.   CHARDEVQ_NO_REQUESTS            = -1;
  2410.   {$EXTERNALSYM CHARDEVQ_NO_REQUESTS}
  2411. // Handle Class
  2412. // Function Prototypes
  2413. function NetHandleGetInfo(handle: THandle; level: DWORD; bufptr: Pointer): NET_API_STATUS; stdcall;
  2414. {$EXTERNALSYM NetHandleGetInfo}
  2415. function NetHandleSetInfo(handle: THandle; level: DWORD; buf: Pointer;
  2416.   parmnum: DWORD; parmerr: PDWORD): NET_API_STATUS; stdcall;
  2417. {$EXTERNALSYM NetHandleSetInfo}
  2418. //
  2419. //  Data Structures
  2420. //
  2421. type
  2422.   PHandleInfo1 = ^THandleInfo1;
  2423.   _HANDLE_INFO_1 = record
  2424.     hdli1_chartime: DWORD;
  2425.     hdli1_charcount: DWORD;
  2426.   end;
  2427.   {$EXTERNALSYM _HANDLE_INFO_1}
  2428.   THandleInfo1 = _HANDLE_INFO_1;
  2429.   HANDLE_INFO_1 = _HANDLE_INFO_1;
  2430.   {$EXTERNALSYM HANDLE_INFO_1}
  2431. // Handle Get Info Levels
  2432. const
  2433.   HANDLE_INFO_LEVEL_1                 = 1;
  2434.   {$EXTERNALSYM HANDLE_INFO_LEVEL_1}
  2435. // Handle Set Info parm numbers
  2436.   HANDLE_CHARTIME_PARMNUM     = 1;
  2437.   {$EXTERNALSYM HANDLE_CHARTIME_PARMNUM}
  2438.   HANDLE_CHARCOUNT_PARMNUM    = 2;
  2439.   {$EXTERNALSYM HANDLE_CHARCOUNT_PARMNUM}
  2440. // Translated from LMSNAME.H
  2441. //  Standard LAN Manager service names.
  2442. const
  2443.   SERVICE_WORKSTATION       = 'LanmanWorkstation';
  2444.   {$EXTERNALSYM SERVICE_WORKSTATION}
  2445.   SERVICE_LM20_WORKSTATION  = 'WORKSTATION';
  2446.   {$EXTERNALSYM SERVICE_LM20_WORKSTATION}
  2447.   WORKSTATION_DISPLAY_NAME  = 'Workstation';
  2448.   {$EXTERNALSYM WORKSTATION_DISPLAY_NAME}
  2449.   SERVICE_SERVER            = 'LanmanServer';
  2450.   {$EXTERNALSYM SERVICE_SERVER}
  2451.   SERVICE_LM20_SERVER       = 'SERVER';
  2452.   {$EXTERNALSYM SERVICE_LM20_SERVER}
  2453.   SERVER_DISPLAY_NAME       = 'Server';
  2454.   {$EXTERNALSYM SERVER_DISPLAY_NAME}
  2455.   SERVICE_BROWSER           = 'BROWSER';
  2456.   {$EXTERNALSYM SERVICE_BROWSER}
  2457.   SERVICE_LM20_BROWSER      = SERVICE_BROWSER;
  2458.   {$EXTERNALSYM SERVICE_LM20_BROWSER}
  2459.   SERVICE_MESSENGER         = 'MESSENGER';
  2460.   {$EXTERNALSYM SERVICE_MESSENGER}
  2461.   SERVICE_LM20_MESSENGER    = SERVICE_MESSENGER;
  2462.   {$EXTERNALSYM SERVICE_LM20_MESSENGER}
  2463.   SERVICE_NETRUN            = 'NETRUN';
  2464.   {$EXTERNALSYM SERVICE_NETRUN}
  2465.   SERVICE_LM20_NETRUN       = SERVICE_NETRUN;
  2466.   {$EXTERNALSYM SERVICE_LM20_NETRUN}
  2467.   SERVICE_SPOOLER           = 'SPOOLER';
  2468.   {$EXTERNALSYM SERVICE_SPOOLER}
  2469.   SERVICE_LM20_SPOOLER      = SERVICE_SPOOLER;
  2470.   {$EXTERNALSYM SERVICE_LM20_SPOOLER}
  2471.   SERVICE_ALERTER           = 'ALERTER';
  2472.   {$EXTERNALSYM SERVICE_ALERTER}
  2473.   SERVICE_LM20_ALERTER      = SERVICE_ALERTER;
  2474.   {$EXTERNALSYM SERVICE_LM20_ALERTER}
  2475.   SERVICE_NETLOGON          = 'NETLOGON';
  2476.   {$EXTERNALSYM SERVICE_NETLOGON}
  2477.   SERVICE_LM20_NETLOGON     = SERVICE_NETLOGON;
  2478.   {$EXTERNALSYM SERVICE_LM20_NETLOGON}
  2479.   SERVICE_NETPOPUP          = 'NETPOPUP';
  2480.   {$EXTERNALSYM SERVICE_NETPOPUP}
  2481.   SERVICE_LM20_NETPOPUP     = SERVICE_NETPOPUP;
  2482.   {$EXTERNALSYM SERVICE_LM20_NETPOPUP}
  2483.   SERVICE_SQLSERVER         = 'SQLSERVER';
  2484.   {$EXTERNALSYM SERVICE_SQLSERVER}
  2485.   SERVICE_LM20_SQLSERVER    = SERVICE_SQLSERVER;
  2486.   {$EXTERNALSYM SERVICE_LM20_SQLSERVER}
  2487.   SERVICE_REPL              = 'REPLICATOR';
  2488.   {$EXTERNALSYM SERVICE_REPL}
  2489.   SERVICE_LM20_REPL         = SERVICE_REPL;
  2490.   {$EXTERNALSYM SERVICE_LM20_REPL}
  2491.   SERVICE_RIPL              = 'REMOTEBOOT';
  2492.   {$EXTERNALSYM SERVICE_RIPL}
  2493.   SERVICE_LM20_RIPL         = SERVICE_RIPL;
  2494.   {$EXTERNALSYM SERVICE_LM20_RIPL}
  2495.   SERVICE_TIMESOURCE        = 'TIMESOURCE';
  2496.   {$EXTERNALSYM SERVICE_TIMESOURCE}
  2497.   SERVICE_LM20_TIMESOURCE   = SERVICE_TIMESOURCE;
  2498.   {$EXTERNALSYM SERVICE_LM20_TIMESOURCE}
  2499.   SERVICE_AFP               = 'AFP';
  2500.   {$EXTERNALSYM SERVICE_AFP}
  2501.   SERVICE_LM20_AFP          = SERVICE_AFP;
  2502.   {$EXTERNALSYM SERVICE_LM20_AFP}
  2503.   SERVICE_UPS               = 'UPS';
  2504.   {$EXTERNALSYM SERVICE_UPS}
  2505.   SERVICE_LM20_UPS          = SERVICE_UPS;
  2506.   {$EXTERNALSYM SERVICE_LM20_UPS}
  2507.   SERVICE_XACTSRV           = 'XACTSRV';
  2508.   {$EXTERNALSYM SERVICE_XACTSRV}
  2509.   SERVICE_LM20_XACTSRV      = SERVICE_XACTSRV;
  2510.   {$EXTERNALSYM SERVICE_LM20_XACTSRV}
  2511.   SERVICE_TCPIP             = 'TCPIP';
  2512.   {$EXTERNALSYM SERVICE_TCPIP}
  2513.   SERVICE_LM20_TCPIP        = SERVICE_TCPIP;
  2514.   {$EXTERNALSYM SERVICE_LM20_TCPIP}
  2515.   SERVICE_NBT               = 'NBT';
  2516.   {$EXTERNALSYM SERVICE_NBT}
  2517.   SERVICE_LM20_NBT          = SERVICE_NBT;
  2518.   {$EXTERNALSYM SERVICE_LM20_NBT}
  2519.   SERVICE_LMHOSTS           = 'LMHOSTS';
  2520.   {$EXTERNALSYM SERVICE_LMHOSTS}
  2521.   SERVICE_LM20_LMHOSTS      = SERVICE_LMHOSTS;
  2522.   {$EXTERNALSYM SERVICE_LM20_LMHOSTS}
  2523.   SERVICE_TELNET            = 'Telnet';
  2524.   {$EXTERNALSYM SERVICE_TELNET}
  2525.   SERVICE_LM20_TELNET       = SERVICE_TELNET;
  2526.   {$EXTERNALSYM SERVICE_LM20_TELNET}
  2527.   SERVICE_SCHEDULE          = 'Schedule';
  2528.   {$EXTERNALSYM SERVICE_SCHEDULE}
  2529.   SERVICE_LM20_SCHEDULE     = SERVICE_SCHEDULE;
  2530.   {$EXTERNALSYM SERVICE_LM20_SCHEDULE}
  2531.   SERVICE_NTLMSSP           = 'NtLmSsp';
  2532.   {$EXTERNALSYM SERVICE_NTLMSSP}
  2533.   SERVICE_DHCP              = 'DHCP';
  2534.   {$EXTERNALSYM SERVICE_DHCP}
  2535.   SERVICE_LM20_DHCP         = SERVICE_DHCP;
  2536.   {$EXTERNALSYM SERVICE_LM20_DHCP}
  2537.   SERVICE_NWSAP             = 'NwSapAgent';
  2538.   {$EXTERNALSYM SERVICE_NWSAP}
  2539.   SERVICE_LM20_NWSAP        = SERVICE_NWSAP;
  2540.   {$EXTERNALSYM SERVICE_LM20_NWSAP}
  2541.   NWSAP_DISPLAY_NAME        = 'NW Sap Agent';
  2542.   {$EXTERNALSYM NWSAP_DISPLAY_NAME}
  2543.   SERVICE_NWCS              = 'NWCWorkstation';
  2544.   {$EXTERNALSYM SERVICE_NWCS}
  2545.   SERVICE_DNS_CACHE         = 'DnsCache';
  2546.   {$EXTERNALSYM SERVICE_DNS_CACHE}
  2547.   SERVICE_W32TIME           = 'w32time';
  2548.   {$EXTERNALSYM SERVICE_W32TIME}
  2549.   SERVCE_LM20_W32TIME       = SERVICE_W32TIME;
  2550.   {$EXTERNALSYM SERVCE_LM20_W32TIME}
  2551.   SERVICE_KDC               = 'kdc';
  2552.   {$EXTERNALSYM SERVICE_KDC}
  2553.   SERVICE_LM20_KDC          = SERVICE_KDC;
  2554.   {$EXTERNALSYM SERVICE_LM20_KDC}
  2555.   SERVICE_RPCLOCATOR        = 'RPCLOCATOR';
  2556.   {$EXTERNALSYM SERVICE_RPCLOCATOR}
  2557.   SERVICE_LM20_RPCLOCATOR   = SERVICE_RPCLOCATOR;
  2558.   {$EXTERNALSYM SERVICE_LM20_RPCLOCATOR}
  2559.   SERVICE_TRKSVR            = 'TrkSvr';
  2560.   {$EXTERNALSYM SERVICE_TRKSVR}
  2561.   SERVICE_LM20_TRKSVR       = SERVICE_TRKSVR;
  2562.   {$EXTERNALSYM SERVICE_LM20_TRKSVR}
  2563.   SERVICE_TRKWKS            = 'TrkWks';
  2564.   {$EXTERNALSYM SERVICE_TRKWKS}
  2565.   SERVICE_LM20_TRKWKS       = SERVICE_TRKWKS;
  2566.   {$EXTERNALSYM SERVICE_LM20_TRKWKS}
  2567.   SERVICE_NTFRS             = 'NtFrs';
  2568.   {$EXTERNALSYM SERVICE_NTFRS}
  2569.   SERVICE_LM20_NTFRS        = SERVICE_NTFRS;
  2570.   {$EXTERNALSYM SERVICE_LM20_NTFRS}
  2571.   SERVICE_ISMSERV           = 'IsmServ';
  2572.   {$EXTERNALSYM SERVICE_ISMSERV}
  2573.   SERVICE_LM20_ISMSERV      = SERVICE_ISMSERV;
  2574.   {$EXTERNALSYM SERVICE_LM20_ISMSERV}
  2575. // Translated from LMUSEFLG.H
  2576. // Definition for NetWkstaTransportDel and NetUseDel deletion force levels
  2577. const
  2578.   {$EXTERNALSYM USE_NOFORCE}
  2579.   USE_NOFORCE = 0;
  2580.   {$EXTERNALSYM USE_FORCE}
  2581.   USE_FORCE = 1;
  2582.   {$EXTERNALSYM USE_LOTS_OF_FORCE}
  2583.   USE_LOTS_OF_FORCE = 2;
  2584. // Translated from LMDFS.H
  2585. // DFS Volume state
  2586. const
  2587.   DFS_VOLUME_STATE_OK            = 1;
  2588.   {$EXTERNALSYM DFS_VOLUME_STATE_OK}
  2589.   DFS_VOLUME_STATE_INCONSISTENT  = 2;
  2590.   {$EXTERNALSYM DFS_VOLUME_STATE_INCONSISTENT}
  2591.   DFS_VOLUME_STATE_OFFLINE       = 3;
  2592.   {$EXTERNALSYM DFS_VOLUME_STATE_OFFLINE}
  2593.   DFS_VOLUME_STATE_ONLINE        = 4;
  2594.   {$EXTERNALSYM DFS_VOLUME_STATE_ONLINE}
  2595. // DFS Storage State
  2596.   DFS_STORAGE_STATE_OFFLINE      = 1;
  2597.   {$EXTERNALSYM DFS_STORAGE_STATE_OFFLINE}
  2598.   DFS_STORAGE_STATE_ONLINE       = 2;
  2599.   {$EXTERNALSYM DFS_STORAGE_STATE_ONLINE}
  2600.   DFS_STORAGE_STATE_ACTIVE       = 4;
  2601.   {$EXTERNALSYM DFS_STORAGE_STATE_ACTIVE}
  2602. // Level 1:
  2603. type
  2604.   PDfsInfo1 = ^TDfsInfo1;
  2605.   _DFS_INFO_1 = packed record
  2606.     EntryPath: LPWSTR;                // Dfs name for the top of this piece of storage
  2607.   end;
  2608.   {$EXTERNALSYM _DFS_INFO_1}
  2609.   TDfsInfo1 = _DFS_INFO_1;
  2610.   DFS_INFO_1 = _DFS_INFO_1;
  2611.   {$EXTERNALSYM DFS_INFO_1}
  2612. // Level 2:
  2613.   PDfsInfo2 = ^TDfsInfo2;
  2614.   _DFS_INFO_2 = packed record
  2615.     EntryPath: LPWSTR;                // Dfs name for the top of this volume
  2616.     Comment: LPWSTR;                  // Comment for this volume
  2617.     State: DWORD;                     // State of this volume, one of DFS_VOLUME_STATE_*
  2618.     NumberOfStorages: DWORD;          // Number of storages for this volume
  2619.   end;
  2620.   {$EXTERNALSYM _DFS_INFO_2}
  2621.   TDfsInfo2 = _DFS_INFO_2;
  2622.   DFS_INFO_2 = _DFS_INFO_2;
  2623.   {$EXTERNALSYM DFS_INFO_2}
  2624.   PDfsStorageInfo = ^TDfsStorageInfo;
  2625.   _DFS_STORAGE_INFO = packed record
  2626.     State: ULONG;                     // State of this storage, one of DFS_STORAGE_STATE_*
  2627.                                       // possibly OR'd with DFS_STORAGE_STATE_ACTIVE
  2628.     ServerName: LPWSTR;               // Name of server hosting this storage
  2629.     ShareName: LPWSTR;                // Name of share hosting this storage
  2630.   end;
  2631.   {$EXTERNALSYM _DFS_STORAGE_INFO}
  2632.   TDfsStorageInfo = _DFS_STORAGE_INFO;
  2633.   DFS_STORAGE_INFO = _DFS_STORAGE_INFO;
  2634.   {$EXTERNALSYM DFS_STORAGE_INFO}
  2635. // Level 3:
  2636.   PDfsInfo3 = ^TDfsInfo3;
  2637.   _DFS_INFO_3 = packed record
  2638.     EntryPath: LPWSTR;                // Dfs name for the top of this volume
  2639.     Comment: LPWSTR;                  // Comment for this volume
  2640.     State: DWORD;                     // State of this volume, one of DFS_VOLUME_STATE_*
  2641.     NumberOfStorages: DWORD;          // Number of storage servers for this volume
  2642.     Storage: PDfsStorageInfo;         // An array (of NumberOfStorages elements) of storage-specific information.
  2643.   end;
  2644.   {$EXTERNALSYM _DFS_INFO_3}
  2645.   TDfsInfo3 = _DFS_INFO_3;
  2646.   DFS_INFO_3 = _DFS_INFO_3;
  2647.   {$EXTERNALSYM DFS_INFO_3}
  2648. // Level 4:
  2649.   PDfsInfo4 = ^TDfsInfo4;
  2650.   _DFS_INFO_4 = packed record
  2651.     EntryPath: LPWSTR;                // Dfs name for the top of this volume
  2652.     Comment: LPWSTR;                  // Comment for this volume
  2653.     State: DWORD;                     // State of this volume, one of DFS_VOLUME_STATE_*
  2654.     Timeout: ULONG;                   // Timeout, in seconds, of this junction point
  2655.     Guid: TGUID;                      // Guid of this junction point
  2656.     NumberOfStorages: DWORD;          // Number of storage servers for this volume
  2657.     Storage: PDfsStorageInfo;         // An array (of NumberOfStorages elements) of storage-specific information.
  2658.   end;
  2659.   {$EXTERNALSYM _DFS_INFO_4}
  2660.   TDfsInfo4 = _DFS_INFO_4;
  2661.   DFS_INFO_4 = _DFS_INFO_4;
  2662.   {$EXTERNALSYM DFS_INFO_4}
  2663. // Level 100:
  2664.   PDfsInfo100 = ^TDfsInfo100;
  2665.   _DFS_INFO_100 = packed record
  2666.     Comment: LPWSTR;                  // Comment for this volume or storage
  2667.   end;
  2668.   {$EXTERNALSYM _DFS_INFO_100}
  2669.   TDfsInfo100 = _DFS_INFO_100;
  2670.   DFS_INFO_100 = _DFS_INFO_100;
  2671.   {$EXTERNALSYM DFS_INFO_100}
  2672. // Level 101:
  2673.   PDfsInfo101 = ^TDfsInfo101;
  2674.   _DFS_INFO_101 = packed record
  2675.     State: DWORD;                     // State of this storage, one of DFS_STORAGE_STATE_*
  2676.                                       // possibly OR'd with DFS_STORAGE_STATE_ACTIVE
  2677.   end;
  2678.   {$EXTERNALSYM _DFS_INFO_101}
  2679.   TDfsInfo101 = _DFS_INFO_101;
  2680.   DFS_INFO_101 = _DFS_INFO_101;
  2681.   {$EXTERNALSYM DFS_INFO_101}
  2682. // Level 102:
  2683.   PDfsInfo102 = ^TDfsInfo102;
  2684.   _DFS_INFO_102 = packed record
  2685.     Timeout: ULONG;                   // Timeout, in seconds, of the junction
  2686.   end;
  2687.   {$EXTERNALSYM _DFS_INFO_102}
  2688.   TDfsInfo102 = _DFS_INFO_102;
  2689.   DFS_INFO_102 = _DFS_INFO_102;
  2690.   {$EXTERNALSYM DFS_INFO_102}
  2691. // Level 200:
  2692.   PDfsInfo200 = ^TDfsInfo200;
  2693.   _DFS_INFO_200 = packed record
  2694.     FtDfsName: LPWSTR;                // FtDfs name
  2695.   end;
  2696.   {$EXTERNALSYM _DFS_INFO_200}
  2697.   TDfsInfo200 = _DFS_INFO_200;
  2698.   DFS_INFO_200 = _DFS_INFO_200;
  2699.   {$EXTERNALSYM DFS_INFO_200}
  2700. // Add a new volume or additional storage for an existing volume at
  2701. // DfsEntryPath.
  2702. function NetDfsAdd(DfsEntryPath, ServerName, ShareName, Comment: LPWSTR;
  2703.   Flags: DWORD): NET_API_STATUS; stdcall;
  2704. {$EXTERNALSYM NetDfsAdd}
  2705. // Flags:
  2706. const
  2707.   DFS_ADD_VOLUME          = 1;   // Add a new volume to the DFS if not already there
  2708.   {$EXTERNALSYM DFS_ADD_VOLUME}
  2709.   DFS_RESTORE_VOLUME      = 2;   // Volume/Replica is being restored - do not verify share etc.
  2710.   {$EXTERNALSYM DFS_RESTORE_VOLUME}
  2711. // Setup/teardown API's for standard and FtDfs roots.
  2712. function NetDfsAddStdRoot(ServerName, RootShare, Comment: LPWSTR;