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

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Lan Manager Error Log API interface Unit for Object Pascal                   }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: lmerrlog.h, released November 2001. The original Pascal}
  9. { code is: LmErrLog.pas, released Februari 2002. The initial developer of the  }
  10. { Pascal code is Marcel van Brakel (brakelm@chello.nl).                        }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaLmErrLog;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "lmerrlog.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51.   JwaLmCons, JwaWinType;
  52. //
  53. // Data Structures - Config
  54. //
  55. type
  56.   _ERROR_LOG = record
  57.      el_len: DWORD;
  58.      el_reserved: DWORD;
  59.      el_time: DWORD;
  60.      el_error: DWORD;
  61.      el_name: LPWSTR;             // pointer to service name
  62.      el_text: LPWSTR;             // pointer to string array
  63.      el_data: LPBYTE;             // pointer to BYTE array
  64.      el_data_size: DWORD;         // byte count of el_data area
  65.      el_nstrings: DWORD;          // number of strings in el_text.
  66.   end;
  67.   {$EXTERNALSYM _ERROR_LOG}
  68.   ERROR_LOG = _ERROR_LOG;
  69.   {$EXTERNALSYM ERROR_LOG}
  70.   PERROR_LOG = ^ERROR_LOG;
  71.   {$EXTERNALSYM PERROR_LOG}
  72.   LPERROR_LOG = ^ERROR_LOG;
  73.   {$EXTERNALSYM LPERROR_LOG}
  74.   TErrorLog = ERROR_LOG;
  75.   PErrorLog = PERROR_LOG;
  76. {$DEFINE REVISED_ERROR_LOG_STRUCT}
  77.   _HLOG = record
  78.      time: DWORD;
  79.      last_flags: DWORD;
  80.      offset: DWORD;
  81.      rec_offset: DWORD;
  82.   end;
  83.   {$EXTERNALSYM _HLOG}
  84.   HLOG = _HLOG;
  85.   {$EXTERNALSYM HLOG}
  86.   PHLOG = ^HLOG;
  87.   {$EXTERNALSYM PHLOG}
  88.   LPHLOG = ^HLOG;
  89.   {$EXTERNALSYM LPHLOG}
  90. const
  91.   LOGFLAGS_FORWARD   = 0;
  92.   {$EXTERNALSYM LOGFLAGS_FORWARD}
  93.   LOGFLAGS_BACKWARD  = $1;
  94.   {$EXTERNALSYM LOGFLAGS_BACKWARD}
  95.   LOGFLAGS_SEEK      = $2;
  96.   {$EXTERNALSYM LOGFLAGS_SEEK}
  97. //
  98. // Function Prototypes - ErrorLog
  99. //
  100. function NetErrorLogClear(server, backupfile: LPCWSTR; reserved: LPBYTE): NET_API_STATUS; stdcall;
  101. {$EXTERNALSYM NetErrorLogClear}
  102. function NetErrorLogRead(server: LPCWSTR; reserved1: LPWSTR; errloghandle: LPHLOG; offset: DWORD; reserved2: LPDWORD;
  103.   reserved3, offsetflag: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; bytesread, totalbytes: LPDWORD): NET_API_STATUS; stdcall;
  104. {$EXTERNALSYM NetErrorLogRead}
  105. function NetErrorLogWrite(reserved1: LPBYTE; code: DWORD; component: LPCWSTR; buffer: LPBYTE; numbytes: DWORD;
  106.   msgbuf: LPBYTE; strcount: DWORD; reserved2: LPBYTE): NET_API_STATUS; stdcall;
  107. {$EXTERNALSYM NetErrorLogWrite}
  108. //
  109. // Special Values and Constants
  110. //
  111. //
  112. //  Generic (could be used by more than one service)
  113. //   error log messages from 0 to 25
  114. //
  115. // Do not change the comments following the manifest constants without
  116. // understanding how mapmsg works.
  117. //
  118. const
  119.   ERRLOG_BASE = 3100;        { NELOG errors start here }
  120.   {$EXTERNALSYM ERRLOG_BASE}
  121.   NELOG_Internal_Error = (ERRLOG_BASE + 0);
  122.   {$EXTERNALSYM NELOG_Internal_Error}
  123.     {
  124.     * The operation failed because a network software error occurred.
  125.     }
  126.   NELOG_Resource_Shortage = (ERRLOG_BASE + 1);
  127.   {$EXTERNALSYM NELOG_Resource_Shortage}
  128.     {
  129.     * The system ran out of a resource controlled by the %1 option.
  130.     }
  131.   NELOG_Unable_To_Lock_Segment = (ERRLOG_BASE + 2);
  132.   {$EXTERNALSYM NELOG_Unable_To_Lock_Segment}
  133.     {
  134.     * The service failed to obtain a long-term lock on the
  135.     *  segment for network control blocks (NCBs). The error code is the data.
  136.     }
  137.   NELOG_Unable_To_Unlock_Segment = (ERRLOG_BASE + 3);
  138.   {$EXTERNALSYM NELOG_Unable_To_Unlock_Segment}
  139.     {
  140.     * The service failed to release the long-term lock on the
  141.     *  segment for network control blocks (NCBs). The error code is the data.
  142.     }
  143.   NELOG_Uninstall_Service = (ERRLOG_BASE + 4);
  144.   {$EXTERNALSYM NELOG_Uninstall_Service}
  145.     {
  146.     * There was an error stopping service %1.
  147.     *  The error code from NetServiceControl is the data.
  148.     }
  149.   NELOG_Init_Exec_Fail = (ERRLOG_BASE + 5);
  150.   {$EXTERNALSYM NELOG_Init_Exec_Fail}
  151.     {
  152.     * Initialization failed because of a system execution failure on
  153.     *  path %1. The system error code is the data.
  154.     }
  155.   NELOG_Ncb_Error = (ERRLOG_BASE + 6);
  156.   {$EXTERNALSYM NELOG_Ncb_Error}
  157.     {
  158.     * An unexpected network control block (NCB) was received. The NCB is the data.
  159.     }
  160.   NELOG_Net_Not_Started = (ERRLOG_BASE + 7);
  161.   {$EXTERNALSYM NELOG_Net_Not_Started}
  162.     {
  163.     * The network is not started.
  164.     }
  165.   NELOG_Ioctl_Error = (ERRLOG_BASE + 8);
  166.   {$EXTERNALSYM NELOG_Ioctl_Error}
  167.     {
  168.     * A DosDevIoctl or DosFsCtl to NETWKSTA.SYS failed.
  169.     * The data shown is in this format:
  170.     *     DWORD  approx CS:IP of call to ioctl or fsctl
  171.     *     WORD   error code
  172.     *     WORD   ioctl or fsctl number
  173.     }
  174.   NELOG_System_Semaphore = (ERRLOG_BASE + 9);
  175.   {$EXTERNALSYM NELOG_System_Semaphore}
  176.     {
  177.     * Unable to create or open system semaphore %1.
  178.     *  The error code is the data.
  179.     }
  180.   NELOG_Init_OpenCreate_Err = (ERRLOG_BASE + 10);
  181.   {$EXTERNALSYM NELOG_Init_OpenCreate_Err}
  182.     {
  183.     * Initialization failed because of an open/create error on the
  184.     *  file %1. The system error code is the data.
  185.     }
  186.   NELOG_NetBios = (ERRLOG_BASE + 11);
  187.   {$EXTERNALSYM NELOG_NetBios}
  188.     {
  189.     * An unexpected NetBIOS error occurred.
  190.     *  The error code is the data.
  191.     }
  192.   NELOG_SMB_Illegal = (ERRLOG_BASE + 12);
  193.   {$EXTERNALSYM NELOG_SMB_Illegal}
  194.     {
  195.     * An illegal server message block (SMB) was received.
  196.     *  The SMB is the data.
  197.     }
  198.   NELOG_Service_Fail = (ERRLOG_BASE + 13);
  199.   {$EXTERNALSYM NELOG_Service_Fail}
  200.     {
  201.     * Initialization failed because the requested service %1
  202.     *  could not be started.
  203.    }
  204.   NELOG_Entries_Lost = (ERRLOG_BASE + 14);
  205.   {$EXTERNALSYM NELOG_Entries_Lost}
  206.     {
  207.     * Some entries in the error log were lost because of a buffer
  208.     * overflow.
  209.     }
  210. //
  211. //  Server specific error log messages from 20 to 40
  212. //
  213.   NELOG_Init_Seg_Overflow = (ERRLOG_BASE + 20);
  214.   {$EXTERNALSYM NELOG_Init_Seg_Overflow}
  215.     {
  216.     * Initialization parameters controlling resource usage other
  217.     *  than net buffers are sized so that too much memory is needed.
  218.     }
  219.   NELOG_Srv_No_Mem_Grow = (ERRLOG_BASE + 21);
  220.   {$EXTERNALSYM NELOG_Srv_No_Mem_Grow}
  221.     {
  222.     * The server cannot increase the size of a memory segment.
  223.     }
  224.   NELOG_Access_File_Bad = (ERRLOG_BASE + 22);
  225.   {$EXTERNALSYM NELOG_Access_File_Bad}
  226.     {
  227.     * Initialization failed because account file %1 is either incorrect
  228.     * or not present.
  229.     }
  230.   NELOG_Srvnet_Not_Started = (ERRLOG_BASE + 23);
  231.   {$EXTERNALSYM NELOG_Srvnet_Not_Started}
  232.     {
  233.     * Initialization failed because network %1 was not started.
  234.     }
  235.   NELOG_Init_Chardev_Err = (ERRLOG_BASE + 24);
  236.   {$EXTERNALSYM NELOG_Init_Chardev_Err}
  237.     {
  238.     * The server failed to start. Either all three chdev
  239.     *  parameters must be zero or all three must be nonzero.
  240.     }
  241.   NELOG_Remote_API = (ERRLOG_BASE + 25);
  242.   {$EXTERNALSYM NELOG_Remote_API}
  243.     { A remote API request was halted due to the following
  244.     * invalid description string: %1.
  245.     }
  246.   NELOG_Ncb_TooManyErr = (ERRLOG_BASE + 26);
  247.   {$EXTERNALSYM NELOG_Ncb_TooManyErr}
  248.     { The network %1 ran out of network control blocks (NCBs).  You may need to increase NCBs
  249.     * for this network.  The following information includes the
  250.     * number of NCBs submitted by the server when this error occurred:
  251.     }
  252.   NELOG_Mailslot_err = (ERRLOG_BASE + 27);
  253.   {$EXTERNALSYM NELOG_Mailslot_err}
  254.     { The server cannot create the %1 mailslot needed to send
  255.     * the ReleaseMemory alert message.  The error received is:
  256.     }
  257.   NELOG_ReleaseMem_Alert = (ERRLOG_BASE + 28);
  258.   {$EXTERNALSYM NELOG_ReleaseMem_Alert}
  259.     { The server failed to register for the ReleaseMemory alert,
  260.     * with recipient %1. The error code from
  261.     * NetAlertStart is the data.
  262.     }
  263.   NELOG_AT_cannot_write = (ERRLOG_BASE + 29);
  264.   {$EXTERNALSYM NELOG_AT_cannot_write}
  265.     { The server cannot update the AT schedule file. The file
  266.     * is corrupted.
  267.     }
  268.   NELOG_Cant_Make_Msg_File = (ERRLOG_BASE + 30);
  269.   {$EXTERNALSYM NELOG_Cant_Make_Msg_File}
  270.     { The server encountered an error when calling
  271.     * NetIMakeLMFileName. The error code is the data.
  272.     }
  273.   NELOG_Exec_Netservr_NoMem = (ERRLOG_BASE + 31);
  274.   {$EXTERNALSYM NELOG_Exec_Netservr_NoMem}
  275.     { Initialization failed because of a system execution failure on
  276.     * path %1. There is not enough memory to start the process.
  277.     * The system error code is the data.
  278.     }
  279.   NELOG_Server_Lock_Failure = (ERRLOG_BASE + 32);
  280.   {$EXTERNALSYM NELOG_Server_Lock_Failure}
  281.     { Longterm lock of the server buffers failed.
  282.     * Check swap disk's free space and restart the system to start the server.
  283.     }
  284. //
  285. //  Message service and POPUP specific error log messages from 40 to 55
  286. //
  287.   NELOG_Msg_Shutdown = (ERRLOG_BASE + 40);
  288.   {$EXTERNALSYM NELOG_Msg_Shutdown}
  289.     {
  290.     * The service has stopped due to repeated consecutive
  291.     *  occurrences of a network control block (NCB) error.  The last bad NCB follows
  292.     *  in raw data.
  293.     }
  294.   NELOG_Msg_Sem_Shutdown = (ERRLOG_BASE + 41);
  295.   {$EXTERNALSYM NELOG_Msg_Sem_Shutdown}
  296.     {
  297.     * The Message server has stopped due to a lock on the
  298.     *  Message server shared data segment.
  299.     }
  300.   NELOG_Msg_Log_Err = (ERRLOG_BASE + 50);
  301.   {$EXTERNALSYM NELOG_Msg_Log_Err}
  302.     {
  303.     * A file system error occurred while opening or writing to the
  304.     *  system message log file %1. Message logging has been
  305.     *  switched off due to the error. The error code is the data.
  306.     }
  307.   NELOG_VIO_POPUP_ERR = (ERRLOG_BASE + 51);
  308.   {$EXTERNALSYM NELOG_VIO_POPUP_ERR}
  309.     {
  310.     * Unable to display message POPUP due to system VIO call error.
  311.     *  The error code is the data.
  312.     }
  313.   NELOG_Msg_Unexpected_SMB_Type = (ERRLOG_BASE + 52);
  314.   {$EXTERNALSYM NELOG_Msg_Unexpected_SMB_Type}
  315.     {
  316.     * An illegal server message block (SMB) was received.  The SMB is the data.
  317.     }
  318. //
  319. //  Workstation specific error log messages from 60 to 75
  320. //
  321.   NELOG_Wksta_Infoseg = (ERRLOG_BASE + 60);
  322.   {$EXTERNALSYM NELOG_Wksta_Infoseg}
  323.     {
  324.     * The workstation information segment is bigger than 64K.
  325.     *  The size follows, in DWORD format:
  326.     }
  327.   NELOG_Wksta_Compname = (ERRLOG_BASE + 61);
  328.   {$EXTERNALSYM NELOG_Wksta_Compname}
  329.     {
  330.     * The workstation was unable to get the name-number of the computer.
  331.     }
  332.   NELOG_Wksta_BiosThreadFailure = (ERRLOG_BASE + 62);
  333.   {$EXTERNALSYM NELOG_Wksta_BiosThreadFailure}
  334.     {
  335.     * The workstation could not initialize the Async NetBIOS Thread.
  336.     *  The error code is the data.
  337.     }
  338.   NELOG_Wksta_IniSeg = (ERRLOG_BASE + 63);
  339.   {$EXTERNALSYM NELOG_Wksta_IniSeg}
  340.     {
  341.     * The workstation could not open the initial shared segment.
  342.     *  The error code is the data.
  343.     }
  344.   NELOG_Wksta_HostTab_Full = (ERRLOG_BASE + 64);
  345.   {$EXTERNALSYM NELOG_Wksta_HostTab_Full}
  346.     {
  347.     * The workstation host table is full.
  348.     }
  349.   NELOG_Wksta_Bad_Mailslot_SMB = (ERRLOG_BASE + 65);
  350.   {$EXTERNALSYM NELOG_Wksta_Bad_Mailslot_SMB}
  351.     {
  352.     * A bad mailslot server message block (SMB) was received.  The SMB is the data.
  353.     }
  354.   NELOG_Wksta_UASInit = (ERRLOG_BASE + 66);
  355.   {$EXTERNALSYM NELOG_Wksta_UASInit}
  356.     {
  357.     * The workstation encountered an error while trying to start the user accounts database.
  358.     *  The error code is the data.
  359.     }
  360.   NELOG_Wksta_SSIRelogon = (ERRLOG_BASE + 67);
  361.   {$EXTERNALSYM NELOG_Wksta_SSIRelogon}
  362.     {
  363.     * The workstation encountered an error while responding to an SSI revalidation request.
  364.     *  The function code and the error codes are the data.
  365.     }
  366. //
  367. //  Alerter service specific error log messages from 70 to 79
  368. //
  369.   NELOG_Build_Name = (ERRLOG_BASE + 70);
  370.   {$EXTERNALSYM NELOG_Build_Name}
  371.     {
  372.     * The Alerter service had a problem creating the list of
  373.     * alert recipients.  The error code is %1.
  374.     }
  375.   NELOG_Name_Expansion = (ERRLOG_BASE + 71);
  376.   {$EXTERNALSYM NELOG_Name_Expansion}
  377.     {
  378.     * There was an error expanding %1 as a group name. Try
  379.     *  splitting the group into two or more smaller groups.
  380.     }
  381.   NELOG_Message_Send = (ERRLOG_BASE + 72);
  382.   {$EXTERNALSYM NELOG_Message_Send}
  383.     {
  384.     * There was an error sending %2 the alert message -
  385.     *  (
  386.     *  %3 )
  387.     *  The error code is %1.
  388.     }
  389.   NELOG_Mail_Slt_Err = (ERRLOG_BASE + 73);
  390.   {$EXTERNALSYM NELOG_Mail_Slt_Err}
  391.     {
  392.     * There was an error in creating or reading the alerter mailslot.
  393.     *  The error code is %1.
  394.     }
  395.   NELOG_AT_cannot_read = (ERRLOG_BASE + 74);
  396.   {$EXTERNALSYM NELOG_AT_cannot_read}
  397.     {
  398.     * The server could not read the AT schedule file.
  399.     }
  400.   NELOG_AT_sched_err = (ERRLOG_BASE + 75);
  401.   {$EXTERNALSYM NELOG_AT_sched_err}
  402.     {
  403.     * The server found an invalid AT schedule record.
  404.     }
  405.   NELOG_AT_schedule_file_created = (ERRLOG_BASE + 76);
  406.   {$EXTERNALSYM NELOG_AT_schedule_file_created}
  407.     {
  408.     * The server could not find an AT schedule file so it created one.
  409.     }
  410.   NELOG_Srvnet_NB_Open = (ERRLOG_BASE + 77);
  411.   {$EXTERNALSYM NELOG_Srvnet_NB_Open}
  412.     {
  413.     * The server could not access the %1 network with NetBiosOpen.
  414.     }
  415.   NELOG_AT_Exec_Err = (ERRLOG_BASE + 78);
  416.   {$EXTERNALSYM NELOG_AT_Exec_Err}
  417.     {
  418.     * The AT command processor could not run %1.
  419.    }
  420. //
  421. //      Cache Lazy Write and HPFS386 specific error log messages from 80 to 89
  422. //
  423.   NELOG_Lazy_Write_Err = (ERRLOG_BASE + 80);
  424.   {$EXTERNALSYM NELOG_Lazy_Write_Err}
  425.         {
  426.         * WARNING:  Because of a lazy-write error, drive %1 now
  427.         *  contains some corrupted data.  The cache is stopped.
  428.         }
  429.   NELOG_HotFix = (ERRLOG_BASE + 81);
  430.   {$EXTERNALSYM NELOG_HotFix}
  431.     {
  432.     * A defective sector on drive %1 has been replaced (hotfixed).
  433.     * No data was lost.  You should run CHKDSK soon to restore full
  434.     * performance and replenish the volume's spare sector pool.
  435.     *
  436.     * The hotfix occurred while processing a remote request.
  437.     }
  438.   NELOG_HardErr_From_Server = (ERRLOG_BASE + 82);
  439.   {$EXTERNALSYM NELOG_HardErr_From_Server}
  440.     {
  441.     * A disk error occurred on the HPFS volume in drive %1.
  442.     * The error occurred while processing a remote request.
  443.     }
  444.   NELOG_LocalSecFail1 = (ERRLOG_BASE + 83);
  445.   {$EXTERNALSYM NELOG_LocalSecFail1}
  446.     {
  447.     * The user accounts database (NET.ACC) is corrupted.  The local security
  448.     * system is replacing the corrupted NET.ACC with the backup
  449.     * made at %1.
  450.     * Any updates made to the database after this time are lost.
  451.     *
  452.     }
  453.   NELOG_LocalSecFail2 = (ERRLOG_BASE + 84);
  454.   {$EXTERNALSYM NELOG_LocalSecFail2}
  455.     {
  456.     * The user accounts database (NET.ACC) is missing.  The local
  457.     * security system is restoring the backup database
  458.     * made at %1.
  459.     * Any updates made to the database made after this time are lost.
  460.     *
  461.     }
  462.   NELOG_LocalSecFail3 = (ERRLOG_BASE + 85);
  463.   {$EXTERNALSYM NELOG_LocalSecFail3}
  464.     {
  465.     * Local security could not be started because the user accounts database
  466.     * (NET.ACC) was missing or corrupted, and no usable backup
  467.     * database was present.
  468.     *
  469.     * THE SYSTEM IS NOT SECURE.
  470.     }
  471.   NELOG_LocalSecGeneralFail = (ERRLOG_BASE + 86);
  472.   {$EXTERNALSYM NELOG_LocalSecGeneralFail}
  473.     {
  474.     * Local security could not be started because an error
  475.     * occurred during initialization. The error code returned is %1.
  476.     *
  477.     * THE SYSTEM IS NOT SECURE.
  478.     *
  479.     }
  480. //
  481. //  NETWKSTA.SYS specific error log messages from 90 to 99
  482. //
  483.   NELOG_NetWkSta_Internal_Error = (ERRLOG_BASE + 90);
  484.   {$EXTERNALSYM NELOG_NetWkSta_Internal_Error}
  485.     {
  486.     * A NetWksta internal error has occurred:
  487.     *  %1
  488.     }
  489.   NELOG_NetWkSta_No_Resource = (ERRLOG_BASE + 91);
  490.   {$EXTERNALSYM NELOG_NetWkSta_No_Resource}
  491.     {
  492.     * The redirector is out of a resource: %1.
  493.     }
  494.   NELOG_NetWkSta_SMB_Err = (ERRLOG_BASE + 92);
  495.   {$EXTERNALSYM NELOG_NetWkSta_SMB_Err}
  496.     {
  497.     * A server message block (SMB) error occurred on the connection to %1.
  498.     *  The SMB header is the data.
  499.     }
  500.   NELOG_NetWkSta_VC_Err = (ERRLOG_BASE + 93);
  501.   {$EXTERNALSYM NELOG_NetWkSta_VC_Err}
  502.     {
  503.     * A virtual circuit error occurred on the session to %1.
  504.     *  The network control block (NCB) command and return code is the data.
  505.     }
  506.   NELOG_NetWkSta_Stuck_VC_Err = (ERRLOG_BASE + 94);
  507.   {$EXTERNALSYM NELOG_NetWkSta_Stuck_VC_Err}
  508.     {
  509.     * Hanging up a stuck session to %1.
  510.     }
  511.   NELOG_NetWkSta_NCB_Err = (ERRLOG_BASE + 95);
  512.   {$EXTERNALSYM NELOG_NetWkSta_NCB_Err}
  513.     {
  514.     * A network control block (NCB) error occurred (%1).
  515.     *  The NCB is the data.
  516.     }
  517.   NELOG_NetWkSta_Write_Behind_Err = (ERRLOG_BASE + 96);
  518.   {$EXTERNALSYM NELOG_NetWkSta_Write_Behind_Err}
  519.     {
  520.     * A write operation to %1 failed.
  521.     *  Data may have been lost.
  522.     }
  523.   NELOG_NetWkSta_Reset_Err = (ERRLOG_BASE + 97);
  524.   {$EXTERNALSYM NELOG_NetWkSta_Reset_Err}
  525.     {
  526.     * Reset of driver %1 failed to complete the network control block (NCB).
  527.     *  The NCB is the data.
  528.     }
  529.   NELOG_NetWkSta_Too_Many = (ERRLOG_BASE + 98);
  530.   {$EXTERNALSYM NELOG_NetWkSta_Too_Many}
  531.     {
  532.     * The amount of resource %1 requested was more
  533.     *  than the maximum. The maximum amount was allocated.
  534.     }
  535. //
  536. //  Spooler specific error log messages from 100 to 103
  537. //
  538.   NELOG_Srv_Thread_Failure = (ERRLOG_BASE + 104);
  539.   {$EXTERNALSYM NELOG_Srv_Thread_Failure}
  540.     {
  541.     * The server could not create a thread.
  542.     *  The THREADS parameter in the CONFIG.SYS file should be increased.
  543.     }
  544.   NELOG_Srv_Close_Failure = (ERRLOG_BASE + 105);
  545.   {$EXTERNALSYM NELOG_Srv_Close_Failure}
  546.     {
  547.     * The server could not close %1.
  548.     *  The file is probably corrupted.
  549.     }
  550.   NELOG_ReplUserCurDir = (ERRLOG_BASE + 106);
  551.   {$EXTERNALSYM NELOG_ReplUserCurDir}
  552.     {
  553.     *The replicator cannot update directory %1. It has tree integrity
  554.     * and is the current directory for some process.
  555.     }
  556.   NELOG_ReplCannotMasterDir = (ERRLOG_BASE + 107);
  557.   {$EXTERNALSYM NELOG_ReplCannotMasterDir}
  558.     {
  559.     *The server cannot export directory %1 to client %2.
  560.     * It is exported from another server.
  561.     }
  562.   NELOG_ReplUpdateError = (ERRLOG_BASE + 108);
  563.   {$EXTERNALSYM NELOG_ReplUpdateError}
  564.     {
  565.     *The replication server could not update directory %2 from the source
  566.     * on %3 due to error %1.
  567.     }
  568.   NELOG_ReplLostMaster = (ERRLOG_BASE + 109);
  569.   {$EXTERNALSYM NELOG_ReplLostMaster}
  570.     {
  571.     *Master %1 did not send an update notice for directory %2 at the expected
  572.     * time.
  573.     }
  574.   NELOG_NetlogonAuthDCFail = (ERRLOG_BASE + 110);
  575.   {$EXTERNALSYM NELOG_NetlogonAuthDCFail}
  576.     {
  577.     *This computer could not authenticate with %2, a Windows domain controller
  578.     * for domain %1, and therefore this computer might deny logon requests.
  579.     * This inability to authenticate might be caused by another computer on the
  580.     * same network using the same name or the password for this computer account
  581.     * is not recognized. If this message appears again, contact your system
  582.     * administrator.
  583.     }
  584.   NELOG_ReplLogonFailed = (ERRLOG_BASE + 111);
  585.   {$EXTERNALSYM NELOG_ReplLogonFailed}
  586.     {
  587.     *The replicator attempted to log on at %2 as %1 and failed.
  588.     }
  589.   NELOG_ReplNetErr = (ERRLOG_BASE + 112);
  590.   {$EXTERNALSYM NELOG_ReplNetErr}
  591.     {
  592.     *  Network error %1 occurred.
  593.     }
  594.   NELOG_ReplMaxFiles = (ERRLOG_BASE + 113);
  595.   {$EXTERNALSYM NELOG_ReplMaxFiles}
  596.     {
  597.     *  Replicator limit for files in a directory has been exceeded.
  598.     }
  599.   NELOG_ReplMaxTreeDepth = (ERRLOG_BASE + 114);
  600.   {$EXTERNALSYM NELOG_ReplMaxTreeDepth}
  601.     {
  602.     *  Replicator limit for tree depth has been exceeded.
  603.     }
  604.   NELOG_ReplBadMsg = (ERRLOG_BASE + 115);
  605.   {$EXTERNALSYM NELOG_ReplBadMsg}
  606.     {
  607.     *  Unrecognized message received in mailslot.
  608.     }
  609.   NELOG_ReplSysErr = (ERRLOG_BASE + 116);
  610.   {$EXTERNALSYM NELOG_ReplSysErr}
  611.     {
  612.     *  System error %1 occurred.
  613.     }
  614.   NELOG_ReplUserLoged = (ERRLOG_BASE + 117);
  615.   {$EXTERNALSYM NELOG_ReplUserLoged}
  616.     {
  617.     *  Cannot log on. User is currently logged on and argument TRYUSER
  618.     *  is set to NO.
  619.     }
  620.   NELOG_ReplBadImport = (ERRLOG_BASE + 118);
  621.   {$EXTERNALSYM NELOG_ReplBadImport}
  622.     {
  623.     *  IMPORT path %1 cannot be found.
  624.     }
  625.   NELOG_ReplBadExport = (ERRLOG_BASE + 119);
  626.   {$EXTERNALSYM NELOG_ReplBadExport}
  627.     {
  628.     *  EXPORT path %1 cannot be found.
  629.     }
  630.   NELOG_ReplSignalFileErr = (ERRLOG_BASE + 120);
  631.   {$EXTERNALSYM NELOG_ReplSignalFileErr}
  632.     {
  633.     *  Replicator failed to update signal file in directory %2 due to
  634.     *  %1 system error.
  635.     }
  636.   NELOG_DiskFT = (ERRLOG_BASE+121);
  637.   {$EXTERNALSYM NELOG_DiskFT}
  638.     {
  639.     * Disk Fault Tolerance Error
  640.     *
  641.     * %1
  642.     }
  643.   NELOG_ReplAccessDenied = (ERRLOG_BASE + 122);
  644.   {$EXTERNALSYM NELOG_ReplAccessDenied}
  645.     {
  646.     *  Replicator could not access %2
  647.     *  on %3 due to system error %1.
  648.     }
  649.   NELOG_NetlogonFailedPrimary = (ERRLOG_BASE + 123);
  650.   {$EXTERNALSYM NELOG_NetlogonFailedPrimary}
  651.     {
  652.     *The primary domain controller for domain %1 has apparently failed.
  653.     }
  654.   NELOG_NetlogonPasswdSetFailed = (ERRLOG_BASE + 124);
  655.   {$EXTERNALSYM NELOG_NetlogonPasswdSetFailed}
  656.     {
  657.     * Changing machine account password for account %1 failed with
  658.     * the following error: %n%2
  659.     }
  660.   NELOG_NetlogonTrackingError = (ERRLOG_BASE + 125);
  661.   {$EXTERNALSYM NELOG_NetlogonTrackingError}
  662.     {
  663.     *An error occurred while updating the logon or logoff information for %1.
  664.     }
  665.   NELOG_NetlogonSyncError = (ERRLOG_BASE + 126);
  666.   {$EXTERNALSYM NELOG_NetlogonSyncError}
  667.     {
  668.     *An error occurred while synchronizing with primary domain controller %1
  669.     }
  670.   NELOG_NetlogonRequireSignOrSealError = (ERRLOG_BASE + 127);
  671.   {$EXTERNALSYM NELOG_NetlogonRequireSignOrSealError}
  672.     {
  673.     * The session setup to the Windows NT or Windows 2000 Domain Controller %1 for the domain %2
  674.     * failed because %1 does not support signing or sealing the Netlogon
  675.     * session.
  676.     *
  677.     * Either upgrade the Domain controller or set the RequireSignOrSeal
  678.     * registry entry on this machine to 0.
  679.     }
  680. //
  681. //  UPS service specific error log messages from 130 to 135
  682. //
  683.   NELOG_UPS_PowerOut = (ERRLOG_BASE + 130);
  684.   {$EXTERNALSYM NELOG_UPS_PowerOut}
  685.     {
  686.     * A power failure was detected at the server.
  687.     }
  688.   NELOG_UPS_Shutdown = (ERRLOG_BASE + 131);
  689.   {$EXTERNALSYM NELOG_UPS_Shutdown}
  690.     {
  691.     * The UPS service performed server shut down.
  692.     }
  693.   NELOG_UPS_CmdFileError = (ERRLOG_BASE + 132);
  694.   {$EXTERNALSYM NELOG_UPS_CmdFileError}
  695.     {
  696.     * The UPS service did not complete execution of the
  697.     * user specified shut down command file.
  698.     }
  699.   NELOG_UPS_CannotOpenDriver = (ERRLOG_BASE+133);
  700.   {$EXTERNALSYM NELOG_UPS_CannotOpenDriver}
  701.     {
  702.     * The UPS driver could not be opened.  The error code is
  703.     * the data.
  704.     }
  705.   NELOG_UPS_PowerBack = (ERRLOG_BASE + 134);
  706.   {$EXTERNALSYM NELOG_UPS_PowerBack}
  707.     {
  708.     * Power has been restored.
  709.     }
  710.   NELOG_UPS_CmdFileConfig = (ERRLOG_BASE + 135);
  711.   {$EXTERNALSYM NELOG_UPS_CmdFileConfig}
  712.     {
  713.     * There is a problem with a configuration of user specified
  714.     * shut down command file.
  715.     }
  716.   NELOG_UPS_CmdFileExec = (ERRLOG_BASE + 136);
  717.   {$EXTERNALSYM NELOG_UPS_CmdFileExec}
  718.     {
  719.     * The UPS service failed to execute a user specified shutdown
  720.     * command file %1.  The error code is the data.
  721.     }
  722. //
  723. //  Remoteboot server specific error log messages are from 150 to 157
  724. //
  725.   NELOG_Missing_Parameter = (ERRLOG_BASE + 150);
  726.   {$EXTERNALSYM NELOG_Missing_Parameter}
  727.     {
  728.     * Initialization failed because of an invalid or missing
  729.     *  parameter in the configuration file %1.
  730.     }
  731.   NELOG_Invalid_Config_Line = (ERRLOG_BASE + 151);
  732.   {$EXTERNALSYM NELOG_Invalid_Config_Line}
  733.     {
  734.     * Initialization failed because of an invalid line in the
  735.     *  configuration file %1. The invalid line is the data.
  736.     }
  737.   NELOG_Invalid_Config_File = (ERRLOG_BASE + 152);
  738.   {$EXTERNALSYM NELOG_Invalid_Config_File}
  739.     {
  740.     * Initialization failed because of an error in the configuration
  741.     *  file %1.
  742.     }
  743.   NELOG_File_Changed = (ERRLOG_BASE + 153);
  744.   {$EXTERNALSYM NELOG_File_Changed}
  745.     {
  746.     * The file %1 has been changed after initialization.
  747.     *  The boot-block loading was temporarily terminated.
  748.     }
  749.   NELOG_Files_Dont_Fit = (ERRLOG_BASE + 154);
  750.   {$EXTERNALSYM NELOG_Files_Dont_Fit}
  751.     {
  752.     * The files do not fit to the boot-block configuration
  753.     * file %1. Change the BASE and ORG definitions or the order
  754.     * of the files.
  755.     }
  756.   NELOG_Wrong_DLL_Version = (ERRLOG_BASE + 155);
  757.   {$EXTERNALSYM NELOG_Wrong_DLL_Version}
  758.     {
  759.     * Initialization failed because the dynamic-link
  760.     *  library %1 returned an incorrect version number.
  761.     }
  762.   NELOG_Error_in_DLL = (ERRLOG_BASE + 156);
  763.   {$EXTERNALSYM NELOG_Error_in_DLL}
  764.     {
  765.     * There was an unrecoverable error in the dynamic-
  766.     *  link library of the service.
  767.     }
  768.   NELOG_System_Error = (ERRLOG_BASE + 157);
  769.   {$EXTERNALSYM NELOG_System_Error}
  770.     {
  771.     * The system returned an unexpected error code.
  772.     *  The error code is the data.
  773.     }
  774.   NELOG_FT_ErrLog_Too_Large = (ERRLOG_BASE + 158);
  775.   {$EXTERNALSYM NELOG_FT_ErrLog_Too_Large}
  776.     {
  777.     * The fault-tolerance error log file, LANROOTLOGSFT.LOG,
  778.     *  is more than 64K.
  779.     }
  780.   NELOG_FT_Update_In_Progress = (ERRLOG_BASE + 159);
  781.   {$EXTERNALSYM NELOG_FT_Update_In_Progress}
  782.     {
  783.     * The fault-tolerance error-log file, LANROOTLOGSFT.LOG, had the
  784.     * update in progress bit set upon opening, which means that the
  785.     * system crashed while working on the error log.
  786.     }
  787.   NELOG_Joined_Domain = (ERRLOG_BASE + 160);
  788.   {$EXTERNALSYM NELOG_Joined_Domain}
  789.     {
  790.     * This computer has been successfully joined to %1 '%2'.
  791.     }
  792.   NELOG_Joined_Workgroup = (ERRLOG_BASE + 161);
  793.   {$EXTERNALSYM NELOG_Joined_Workgroup}
  794.     (*
  795.     * This computer has been successfully joined to workgroup '%1'.
  796.     *)
  797. //
  798. // Microsoft has created a generic error log entry for OEMs to use to
  799. // log errors from OEM value added services.  The code, which is the
  800. // 2nd arg to NetErrorLogWrite, is 3299.  This value is manifest in
  801. // NET/H/ERRLOG.H as NELOG_OEM_Code.  The text for error log entry
  802. // NELOG_OEM_Code is:  "%1 %2 %3 %4 %5 %6 %7 %8 %9.".
  803. //
  804. // Microsoft suggests that OEMs use the insertion strings as follows:
  805. // %1:  OEM System Name (e.g. 3+Open)
  806. // %2:  OEM Service Name (e.g. 3+Mail)
  807. // %3:  Severity level (e.g.  error, warning, etc.)
  808. // %4:  OEM error log entry sub-identifier  (e.g. error code #)
  809. // %5 - % 9:  Text.
  810. //
  811. // The call to NetErrorWrite must set nstrings = 9, and provide 9
  812. // ASCIIZ strings.  If the caller does not have 9 insertion strings,
  813. // provide null strings for the empty insertion strings.
  814. //
  815.   NELOG_OEM_Code = (ERRLOG_BASE + 199);
  816.   {$EXTERNALSYM NELOG_OEM_Code}
  817.     {
  818.     * %1 %2 %3 %4 %5 %6 %7 %8 %9.
  819.     }
  820. //
  821. // another error log range defined for NT Lanman.
  822. //
  823.   ERRLOG2_BASE = 5700        { New NT NELOG errors start here };
  824.   {$EXTERNALSYM ERRLOG2_BASE}
  825.   NELOG_NetlogonSSIInitError = (ERRLOG2_BASE + 0);
  826.   {$EXTERNALSYM NELOG_NetlogonSSIInitError}
  827.     {
  828.      * The Netlogon service could not initialize the replication data
  829.      * structures successfully. The service was terminated.  The following
  830.      * error occurred: %n%1
  831.      }
  832.   NELOG_NetlogonFailedToUpdateTrustList = (ERRLOG2_BASE + 1);
  833.   {$EXTERNALSYM NELOG_NetlogonFailedToUpdateTrustList}
  834.     {
  835.      * The Netlogon service failed to update the domain trust list.  The
  836.      * following error occurred: %n%1
  837.      }
  838.   NELOG_NetlogonFailedToAddRpcInterface = (ERRLOG2_BASE + 2);
  839.   {$EXTERNALSYM NELOG_NetlogonFailedToAddRpcInterface}
  840.     {
  841.      * The Netlogon service could not add the RPC interface.  The
  842.      * service was terminated. The following error occurred: %n%1
  843.      }
  844.   NELOG_NetlogonFailedToReadMailslot = (ERRLOG2_BASE + 3);
  845.   {$EXTERNALSYM NELOG_NetlogonFailedToReadMailslot}
  846.     {
  847.      * The Netlogon service could not read a mailslot message from %1 due
  848.      * to the following error: %n%2
  849.      }
  850.   NELOG_NetlogonFailedToRegisterSC = (ERRLOG2_BASE + 4);
  851.   {$EXTERNALSYM NELOG_NetlogonFailedToRegisterSC}
  852.     (*
  853.      * The Netlogon service failed to register the service with the
  854.      * service controller. The service was terminated. The following
  855.      * error occurred: %n%1
  856.      *)
  857.   NELOG_NetlogonChangeLogCorrupt = (ERRLOG2_BASE + 5);
  858.   {$EXTERNALSYM NELOG_NetlogonChangeLogCorrupt}
  859.     {
  860.      * The change log cache maintained by the Netlogon service for %1
  861.      * database changes is inconsistent. The Netlogon service is resetting
  862.      * the change log.
  863.      }
  864.   NELOG_NetlogonFailedToCreateShare = (ERRLOG2_BASE + 6);
  865.   {$EXTERNALSYM NELOG_NetlogonFailedToCreateShare}
  866.     {
  867.      * The Netlogon service could not create server share %1.  The following
  868.      * error occurred: %n%2
  869.      }
  870.   NELOG_NetlogonDownLevelLogonFailed = (ERRLOG2_BASE + 7);
  871.   {$EXTERNALSYM NELOG_NetlogonDownLevelLogonFailed}
  872.     {
  873.      * The down-level logon request for the user %1 from %2 failed.
  874.      }
  875.   NELOG_NetlogonDownLevelLogoffFailed = (ERRLOG2_BASE + 8);
  876.   {$EXTERNALSYM NELOG_NetlogonDownLevelLogoffFailed}
  877.     {
  878.      * The down-level logoff request for the user %1 from %2 failed.
  879.      }
  880.   NELOG_NetlogonNTLogonFailed = (ERRLOG2_BASE + 9);
  881.   {$EXTERNALSYM NELOG_NetlogonNTLogonFailed}
  882.     {
  883.      * The Windows NT or Windows 2000 %1 logon request for the user %2%3 from %4 (via %5)
  884.      * failed.
  885.      }
  886.   NELOG_NetlogonNTLogoffFailed = (ERRLOG2_BASE + 10);
  887.   {$EXTERNALSYM NELOG_NetlogonNTLogoffFailed}
  888.     {
  889.      * The Windows NT or Windows 2000 %1 logoff request for the user %2%3 from %4
  890.      * failed.
  891.      }
  892.   NELOG_NetlogonPartialSyncCallSuccess = (ERRLOG2_BASE + 11);
  893.   {$EXTERNALSYM NELOG_NetlogonPartialSyncCallSuccess}
  894.     {
  895.      * The partial synchronization request from the server %1 completed
  896.      * successfully. %2 changes(s) has(have) been returned to the
  897.      * caller.
  898.      }
  899.   NELOG_NetlogonPartialSyncCallFailed = (ERRLOG2_BASE + 12);
  900.   {$EXTERNALSYM NELOG_NetlogonPartialSyncCallFailed}
  901.     {
  902.      * The partial synchronization request from the server %1 failed with
  903.      * the following error: %n%2
  904.      }
  905.   NELOG_NetlogonFullSyncCallSuccess = (ERRLOG2_BASE + 13);
  906.   {$EXTERNALSYM NELOG_NetlogonFullSyncCallSuccess}
  907.     {
  908.      * The full synchronization request from the server %1 completed
  909.      * successfully. %2 object(s) has(have) been returned to
  910.      * the caller.
  911.      }
  912.   NELOG_NetlogonFullSyncCallFailed = (ERRLOG2_BASE + 14);
  913.   {$EXTERNALSYM NELOG_NetlogonFullSyncCallFailed}
  914.     {
  915.      * The full synchronization request from the server %1 failed with
  916.      * the following error: %n%2
  917.      }
  918.   NELOG_NetlogonPartialSyncSuccess = (ERRLOG2_BASE + 15);
  919.   {$EXTERNALSYM NELOG_NetlogonPartialSyncSuccess}
  920.     {
  921.      * The partial synchronization replication of the %1 database from the
  922.      * primary domain controller %2 completed successfully. %3 change(s) is(are)
  923.      * applied to the database.
  924.      }
  925.   NELOG_NetlogonPartialSyncFailed = (ERRLOG2_BASE + 16);
  926.   {$EXTERNALSYM NELOG_NetlogonPartialSyncFailed}
  927.     {
  928.      * The partial synchronization replication of the %1 database from the
  929.      * primary domain controller %2 failed with the following error: %n%3
  930.      }
  931.   NELOG_NetlogonFullSyncSuccess = (ERRLOG2_BASE + 17);
  932.   {$EXTERNALSYM NELOG_NetlogonFullSyncSuccess}
  933.     {
  934.      * The full synchronization replication of the %1 database from the
  935.      * primary domain controller %2 completed successfully.
  936.      }
  937.   NELOG_NetlogonFullSyncFailed = (ERRLOG2_BASE + 18);
  938.   {$EXTERNALSYM NELOG_NetlogonFullSyncFailed}
  939.     {
  940.      * The full synchronization replication of the %1 database from the
  941.      * primary domain controller %2 failed with the following error: %n%3
  942.      }
  943.   NELOG_NetlogonAuthNoDomainController = (ERRLOG2_BASE + 19);
  944.   {$EXTERNALSYM NELOG_NetlogonAuthNoDomainController}
  945.     {
  946.      * This computer was not able to set up a secure session with a domain
  947.      * controller in domain %1 due to the following: %n%2
  948.      * %nThis may lead to authentication problems. Make sure that this
  949.      * computer is connected to the network. If the problem persists,
  950.      * please contact your domain administrator.
  951.      *
  952.      * %n%nADDITIONAL INFO
  953.      * %nIf this computer is a domain controller for the specified domain, it
  954.      * sets up the secure session to the primary domain controller emulator in the specified
  955.      * domain. Otherwise, this computer sets up the secure session to any domain controller
  956.      * in the specified domain.
  957.      }
  958.   NELOG_NetlogonAuthNoTrustLsaSecret = (ERRLOG2_BASE + 20);
  959.   {$EXTERNALSYM NELOG_NetlogonAuthNoTrustLsaSecret}
  960.     {
  961.      * The session setup to the Windows NT or Windows 2000 Domain Controller %1 for the domain %2
  962.      * failed because the computer %3 does not have a local security database account.
  963.      }
  964.   NELOG_NetlogonAuthNoTrustSamAccount = (ERRLOG2_BASE + 21);
  965.   {$EXTERNALSYM NELOG_NetlogonAuthNoTrustSamAccount}
  966.     {
  967.      * The session setup to the Windows NT or Windows 2000 Domain Controller %1 for the domain %2
  968.      * failed because the Domain Controller did not have an account %4
  969.      * needed to set up the session by this computer %3.
  970.      *
  971.      * %n%nADDITIONAL DATA
  972.      * %nIf this computer is a member of or a Domain Controller in the specified domain, the
  973.      * aforementioned account is a computer account for this computer in the specified domain.
  974.      * Otherwise, the account is an interdomain trust account with the specified domain.
  975.      }
  976.   NELOG_NetlogonServerAuthFailed = (ERRLOG2_BASE + 22);
  977.   {$EXTERNALSYM NELOG_NetlogonServerAuthFailed}
  978.     {
  979.      * The session setup from the computer %1 failed to authenticate.
  980.      * The name(s) of the account(s) referenced in the security database is
  981.      * %2.  The following error occurred: %n%3
  982.      }
  983.   NELOG_NetlogonServerAuthNoTrustSamAccount = (ERRLOG2_BASE + 23);
  984.   {$EXTERNALSYM NELOG_NetlogonServerAuthNoTrustSamAccount}
  985.     {
  986.      * The session setup from computer '%1' failed because the security database
  987.      * does not contain a trust account '%2' referenced by the specified computer.
  988.      *
  989.      * %n%nUSER ACTION
  990.      *
  991.      * %nIf this is the first occurrence of this event for the specified computer
  992.      * and account, this may be a transient issue that doesn't require any action
  993.      * at this time. Otherwise, the following steps may be taken to resolve this problem:
  994.      *
  995.      * %n%nIf '%2' is a legitimate machine account for the computer '%1', then '%1'
  996.      * should be rejoined to the domain.
  997.      *
  998.      * %n%nIf '%2' is a legitimate interdomain trust account, then the trust should
  999.      * be recreated.
  1000.      *
  1001.      * %n%nOtherwise, assuming that '%2' is not a legitimate account, the following
  1002.      * action should be taken on '%1':
  1003.      *
  1004.      * %n%nIf '%1' is a Domain Controller, then the trust associated with '%2' should be deleted.
  1005.      *
  1006.      * %n%nIf '%1' is not a Domain Controller, it should be disjoined from the domain.
  1007.      }
  1008. //
  1009. // General log messages for NT services.
  1010. //
  1011.   NELOG_FailedToRegisterSC = (ERRLOG2_BASE + 24);
  1012.   {$EXTERNALSYM NELOG_FailedToRegisterSC}
  1013.     {
  1014.      * Could not register control handler with service controller %1.
  1015.      }
  1016.   NELOG_FailedToSetServiceStatus = (ERRLOG2_BASE + 25);
  1017.   {$EXTERNALSYM NELOG_FailedToSetServiceStatus}
  1018.     {
  1019.      * Could not set service status with service controller %1.
  1020.      }
  1021.   NELOG_FailedToGetComputerName = (ERRLOG2_BASE + 26);
  1022.   {$EXTERNALSYM NELOG_FailedToGetComputerName}
  1023.     {
  1024.      * Could not find the computer name %1.
  1025.      }
  1026.   NELOG_DriverNotLoaded = (ERRLOG2_BASE + 27);
  1027.   {$EXTERNALSYM NELOG_DriverNotLoaded}
  1028.     {
  1029.      * Could not load %1 device driver.
  1030.      }
  1031.   NELOG_NoTranportLoaded = (ERRLOG2_BASE + 28);
  1032.   {$EXTERNALSYM NELOG_NoTranportLoaded}
  1033.     {
  1034.      * Could not load any transport.
  1035.      }
  1036. //
  1037. // More Netlogon service events
  1038. //
  1039.   NELOG_NetlogonFailedDomainDelta = (ERRLOG2_BASE + 29);
  1040.   {$EXTERNALSYM NELOG_NetlogonFailedDomainDelta}
  1041.     {
  1042.      * Replication of the %1 Domain Object "%2" from primary domain controller
  1043.      * %3 failed with the following error: %n%4
  1044.      }
  1045.   NELOG_NetlogonFailedGlobalGroupDelta = (ERRLOG2_BASE + 30);
  1046.   {$EXTERNALSYM NELOG_NetlogonFailedGlobalGroupDelta}
  1047.     {
  1048.      * Replication of the %1 Global Group "%2" from primary domain controller
  1049.      * %3 failed with the following error: %n%4
  1050.      }
  1051.   NELOG_NetlogonFailedLocalGroupDelta = (ERRLOG2_BASE + 31);
  1052.   {$EXTERNALSYM NELOG_NetlogonFailedLocalGroupDelta}
  1053.     {
  1054.      * Replication of the %1 Local Group "%2" from primary domain controller
  1055.      * %3 failed with the following error: %n%4
  1056.      }
  1057.   NELOG_NetlogonFailedUserDelta = (ERRLOG2_BASE + 32);
  1058.   {$EXTERNALSYM NELOG_NetlogonFailedUserDelta}
  1059.     {
  1060.      * Replication of the %1 User "%2" from primary domain controller
  1061.      * %3 failed with the following error: %n%4
  1062.      }
  1063.   NELOG_NetlogonFailedPolicyDelta = (ERRLOG2_BASE + 33);
  1064.   {$EXTERNALSYM NELOG_NetlogonFailedPolicyDelta}
  1065.     {
  1066.      * Replication of the %1 Policy Object "%2" from primary domain controller
  1067.      * %3 failed with the following error: %n%4
  1068.      }
  1069.   NELOG_NetlogonFailedTrustedDomainDelta = (ERRLOG2_BASE + 34);
  1070.   {$EXTERNALSYM NELOG_NetlogonFailedTrustedDomainDelta}
  1071.     {
  1072.      * Replication of the %1 Trusted Domain Object "%2" from primary domain controller
  1073.      * %3 failed with the following error: %n%4
  1074.      }
  1075.   NELOG_NetlogonFailedAccountDelta = (ERRLOG2_BASE + 35);
  1076.   {$EXTERNALSYM NELOG_NetlogonFailedAccountDelta}
  1077.     {
  1078.      * Replication of the %1 Account Object "%2" from primary domain controller
  1079.      * %3 failed with the following error: %n%4
  1080.      }
  1081.   NELOG_NetlogonFailedSecretDelta = (ERRLOG2_BASE + 36);
  1082.   {$EXTERNALSYM NELOG_NetlogonFailedSecretDelta}
  1083.     {
  1084.      * Replication of the %1 Secret "%2" from primary domain controller
  1085.      * %3 failed with the following error: %n%4
  1086.      }
  1087.   NELOG_NetlogonSystemError = (ERRLOG2_BASE + 37);
  1088.   {$EXTERNALSYM NELOG_NetlogonSystemError}
  1089.     {
  1090.     * The system returned the following unexpected error code: %n%1
  1091.     }
  1092.   NELOG_NetlogonDuplicateMachineAccounts = (ERRLOG2_BASE + 38);
  1093.   {$EXTERNALSYM NELOG_NetlogonDuplicateMachineAccounts}
  1094.     {
  1095.     * Netlogon has detected two machine accounts for server "%1".
  1096.     * The server can be either a Windows 2000 Server that is a member of the
  1097.     * domain or the server can be a LAN Manager server with an account in the
  1098.     * SERVERS global group.  It cannot be both.
  1099.     }
  1100.   NELOG_NetlogonTooManyGlobalGroups = (ERRLOG2_BASE + 39);
  1101.   {$EXTERNALSYM NELOG_NetlogonTooManyGlobalGroups}
  1102.     {
  1103.     * This domain has more global groups than can be replicated to a LanMan
  1104.     * BDC.  Either delete some of your global groups or remove the LanMan
  1105.     * BDCs from the domain.
  1106.     }
  1107.   NELOG_NetlogonBrowserDriver = (ERRLOG2_BASE + 40);
  1108.   {$EXTERNALSYM NELOG_NetlogonBrowserDriver}
  1109.     {
  1110.     * The Browser driver returned the following error to Netlogon: %n%1
  1111.     }
  1112.   NELOG_NetlogonAddNameFailure = (ERRLOG2_BASE + 41);
  1113.   {$EXTERNALSYM NELOG_NetlogonAddNameFailure}
  1114.     {
  1115.     * Netlogon could not register the %1<1B> name for the following reason: %n%2
  1116.     }
  1117. //
  1118. //  More Remoteboot service events.
  1119. //
  1120.   NELOG_RplMessages = (ERRLOG2_BASE + 42);
  1121.   {$EXTERNALSYM NELOG_RplMessages}
  1122.     {
  1123.     * Service failed to retrieve messages needed to boot remote boot clients.
  1124.     }
  1125.   NELOG_RplXnsBoot = (ERRLOG2_BASE + 43);
  1126.   {$EXTERNALSYM NELOG_RplXnsBoot}
  1127.     {
  1128.     * Service experienced a severe error and can no longer provide remote boot
  1129.     * for 3Com 3Start remote boot clients.
  1130.     }
  1131.   NELOG_RplSystem = (ERRLOG2_BASE + 44);
  1132.   {$EXTERNALSYM NELOG_RplSystem}
  1133.     {
  1134.     * Service experienced a severe system error and will shut itself down.
  1135.     }
  1136.   NELOG_RplWkstaTimeout = (ERRLOG2_BASE + 45);
  1137.   {$EXTERNALSYM NELOG_RplWkstaTimeout}
  1138.     {
  1139.     * Client with computer name %1 failed to acknowledge receipt of the
  1140.     * boot data.  Remote boot of this client was not completed.
  1141.     }
  1142.   NELOG_RplWkstaFileOpen = (ERRLOG2_BASE + 46);
  1143.   {$EXTERNALSYM NELOG_RplWkstaFileOpen}
  1144.     {
  1145.     * Client with computer name %1 was not booted due to an error in opening
  1146.     * file %2.
  1147.     }
  1148.   NELOG_RplWkstaFileRead = (ERRLOG2_BASE + 47);
  1149.   {$EXTERNALSYM NELOG_RplWkstaFileRead}
  1150.     {
  1151.     * Client with computer name %1 was not booted due to an error in reading
  1152.     * file %2.
  1153.     }
  1154.   NELOG_RplWkstaMemory = (ERRLOG2_BASE + 48);
  1155.   {$EXTERNALSYM NELOG_RplWkstaMemory}
  1156.     {
  1157.     * Client with computer name %1 was not booted due to insufficient memory
  1158.     * at the remote boot server.
  1159.     }
  1160.   NELOG_RplWkstaFileChecksum = (ERRLOG2_BASE + 49);
  1161.   {$EXTERNALSYM NELOG_RplWkstaFileChecksum}
  1162.     {
  1163.     * Client with computer name %1 will be booted without using checksums
  1164.     * because checksum for file %2 could not be calculated.
  1165.     }
  1166.   NELOG_RplWkstaFileLineCount = (ERRLOG2_BASE + 50);
  1167.   {$EXTERNALSYM NELOG_RplWkstaFileLineCount}
  1168.     {
  1169.     * Client with computer name %1 was not booted due to too many lines in
  1170.     * file %2.
  1171.     }
  1172.   NELOG_RplWkstaBbcFile = (ERRLOG2_BASE + 51);
  1173.   {$EXTERNALSYM NELOG_RplWkstaBbcFile}
  1174.     {
  1175.     * Client with computer name %1 was not booted because the boot block
  1176.     * configuration file %2 for this client does not contain boot block
  1177.     * line and/or loader line.
  1178.     }
  1179.   NELOG_RplWkstaFileSize = (ERRLOG2_BASE + 52);
  1180.   {$EXTERNALSYM NELOG_RplWkstaFileSize}
  1181.     {
  1182.     * Client with computer name %1 was not booted due to a bad size of
  1183.     * file %2.
  1184.     }
  1185.   NELOG_RplWkstaInternal = (ERRLOG2_BASE + 53);
  1186.   {$EXTERNALSYM NELOG_RplWkstaInternal}
  1187.     {
  1188.     * Client with computer name %1 was not booted due to remote boot
  1189.     * service internal error.
  1190.     }
  1191.   NELOG_RplWkstaWrongVersion = (ERRLOG2_BASE + 54);
  1192.   {$EXTERNALSYM NELOG_RplWkstaWrongVersion}
  1193.     {
  1194.     * Client with computer name %1 was not booted because file %2 has an
  1195.     * invalid boot header.
  1196.     }
  1197.   NELOG_RplWkstaNetwork = (ERRLOG2_BASE + 55);
  1198.   {$EXTERNALSYM NELOG_RplWkstaNetwork}
  1199.     {
  1200.     * Client with computer name %1 was not booted due to network error.
  1201.     }
  1202.   NELOG_RplAdapterResource = (ERRLOG2_BASE + 56);
  1203.   {$EXTERNALSYM NELOG_RplAdapterResource}
  1204.     {
  1205.     * Client with adapter id %1 was not booted due to lack of resources.
  1206.     }
  1207.   NELOG_RplFileCopy = (ERRLOG2_BASE + 57);
  1208.   {$EXTERNALSYM NELOG_RplFileCopy}
  1209.     {
  1210.     * Service experienced error copying file or directory %1.
  1211.     }
  1212.   NELOG_RplFileDelete = (ERRLOG2_BASE + 58);
  1213.   {$EXTERNALSYM NELOG_RplFileDelete}
  1214.     {
  1215.     * Service experienced error deleting file or directory %1.
  1216.     }
  1217.   NELOG_RplFilePerms = (ERRLOG2_BASE + 59);
  1218.   {$EXTERNALSYM NELOG_RplFilePerms}
  1219.     {
  1220.     * Service experienced error setting permissions on file or directory %1.
  1221.     }
  1222.   NELOG_RplCheckConfigs = (ERRLOG2_BASE + 60);
  1223.   {$EXTERNALSYM NELOG_RplCheckConfigs}
  1224.     {
  1225.     * Service experienced error evaluating RPL configurations.
  1226.     }
  1227.   NELOG_RplCreateProfiles = (ERRLOG2_BASE + 61);
  1228.   {$EXTERNALSYM NELOG_RplCreateProfiles}
  1229.     {
  1230.     * Service experienced error creating RPL profiles for all configurations.
  1231.     }
  1232.   NELOG_RplRegistry = (ERRLOG2_BASE + 62);
  1233.   {$EXTERNALSYM NELOG_RplRegistry}
  1234.     {
  1235.     * Service experienced error accessing registry.
  1236.     }
  1237.   NELOG_RplReplaceRPLDISK = (ERRLOG2_BASE + 63);
  1238.   {$EXTERNALSYM NELOG_RplReplaceRPLDISK}
  1239.     {
  1240.     * Service experienced error replacing possibly outdated RPLDISK.SYS.
  1241.     }
  1242.   NELOG_RplCheckSecurity = (ERRLOG2_BASE + 64);
  1243.   {$EXTERNALSYM NELOG_RplCheckSecurity}
  1244.     {
  1245.     * Service experienced error adding security accounts or setting
  1246.     * file permissions.  These accounts are the RPLUSER local group
  1247.     * and the user accounts for the individual RPL workstations.
  1248.     }
  1249.   NELOG_RplBackupDatabase = (ERRLOG2_BASE + 65);
  1250.   {$EXTERNALSYM NELOG_RplBackupDatabase}
  1251.     {
  1252.     * Service failed to back up its database.
  1253.     }
  1254.   NELOG_RplInitDatabase = (ERRLOG2_BASE + 66);
  1255.   {$EXTERNALSYM NELOG_RplInitDatabase}
  1256.     {
  1257.     * Service failed to initialize from its database.  The database may be
  1258.     * missing or corrupted.  Service will attempt restoring the database
  1259.     * from the backup.
  1260.     }
  1261.   NELOG_RplRestoreDatabaseFailure = (ERRLOG2_BASE + 67);
  1262.   {$EXTERNALSYM NELOG_RplRestoreDatabaseFailure}
  1263.     {
  1264.     * Service failed to restore its database from the backup.  Service
  1265.     * will not start.
  1266.     }
  1267.   NELOG_RplRestoreDatabaseSuccess = (ERRLOG2_BASE + 68);
  1268.   {$EXTERNALSYM NELOG_RplRestoreDatabaseSuccess}
  1269.     {
  1270.     * Service successfully restored its database from the backup.
  1271.     }
  1272.   NELOG_RplInitRestoredDatabase = (ERRLOG2_BASE + 69);
  1273.   {$EXTERNALSYM NELOG_RplInitRestoredDatabase}
  1274.     {
  1275.     * Service failed to initialize from its restored database.  Service
  1276.     * will not start.
  1277.     }
  1278. //
  1279. // More Netlogon and RPL service events
  1280. //
  1281.   NELOG_NetlogonSessionTypeWrong = (ERRLOG2_BASE + 70);
  1282.   {$EXTERNALSYM NELOG_NetlogonSessionTypeWrong}
  1283.     {
  1284.      * The session setup to the Windows NT or Windows 2000 Domain Controller %1 from computer
  1285.      * %2 using account %4 failed.  %2 is declared to be a BDC in domain %3.
  1286.      * However, %2 tried to connect as either a DC in a trusted domain,
  1287.      * a member workstation in domain %3, or as a server in domain %3.
  1288.      * Use the Active Directory Users and Computers tool or Server Manager to remove the BDC account for %2.
  1289.      }
  1290.   NELOG_RplUpgradeDBTo40 = (ERRLOG2_BASE + 71);
  1291.   {$EXTERNALSYM NELOG_RplUpgradeDBTo40}
  1292.     {
  1293.     * The Remoteboot database was in NT 3.5 / NT 3.51 format and NT is
  1294.     * attempting to convert it to NT 4.0 format. The JETCONV converter
  1295.     * will write to the Application event log when it is finished.
  1296.     }
  1297.   NELOG_NetlogonLanmanBdcsNotAllowed = (ERRLOG2_BASE + 72);
  1298.   {$EXTERNALSYM NELOG_NetlogonLanmanBdcsNotAllowed}
  1299.     {
  1300.      * Global group SERVERS exists in domain %1 and has members.
  1301.      * This group defines Lan Manager BDCs in the domain.
  1302.      * Lan Manager BDCs are not permitted in NT domains.
  1303.      }
  1304.   NELOG_NetlogonNoDynamicDns = (ERRLOG2_BASE + 73);
  1305.   {$EXTERNALSYM NELOG_NetlogonNoDynamicDns}
  1306.     {
  1307.      * The following DNS server that is authoritative for the DNS domain controller
  1308.      * locator records of this domain controller does not support dynamic DNS updates:
  1309.      *
  1310.      * %n%nDNS server IP address: %1
  1311.      * %nReturned Response Code (RCODE): %2
  1312.      * %nReturned Status Code: %3
  1313.      *
  1314.      * %n%nUSER ACTION
  1315.      *
  1316.      * %nConfigure the DNS server to allow dynamic DNS updates or manually add the DNS
  1317.      * records from the file '%SystemRoot%System32ConfigNetlogon.dns' to the DNS database.
  1318.      }
  1319.   NELOG_NetlogonDynamicDnsRegisterFailure = (ERRLOG2_BASE + 74);
  1320.   {$EXTERNALSYM NELOG_NetlogonDynamicDnsRegisterFailure}
  1321.     {
  1322.       * The dynamic registration of the DNS record '%1' failed on the following DNS server:
  1323.       *
  1324.       * %n%nDNS server IP address: %3
  1325.       * %nReturned Response Code (RCODE): %4
  1326.       * %nReturned Status Code: %5
  1327.       *
  1328.       * %n%nFor computers and users to locate this domain controller, this record must be
  1329.       * registered in DNS.
  1330.       *
  1331.       * %n%nUSER ACTION
  1332.       *
  1333.       * %nDetermine what might have caused this failure, resolve the problem, and initiate
  1334.       * registration of the DNS records by the domain controller. To determine what might
  1335.       * have caused this failure, run DCDiag.exe. You can find this program on the Whistler
  1336.       * installation CD in the SupportTools folder. To learn more about DCDiag.exe, see
  1337.       * Help and Suport Center. To initiate registration of the DNS records by this domain
  1338.       * controller, run 'nltest.exe /dsregdns' from the command prompt on the domain controller
  1339.       * or restart Net Logon service. Nltest.exe is available in the Microsoft Windows Server
  1340.       * Resource Kit CD. %n  Or, you can manually add this record to DNS, but it is not
  1341.       * recommended.
  1342.       *
  1343.       * %n%nADDITIONAL DATA
  1344.       * %nError Value: %2
  1345.      }
  1346.   NELOG_NetlogonDynamicDnsDeregisterFailure = (ERRLOG2_BASE + 75);
  1347.   {$EXTERNALSYM NELOG_NetlogonDynamicDnsDeregisterFailure}
  1348.     {
  1349.       * The dynamic deletion of the DNS record '%1' failed on the following DNS server:
  1350.       *
  1351.       * %n%nDNS server IP address: %3
  1352.       * %nReturned Response Code (RCODE): %4
  1353.       * %nReturned Status Code: %5
  1354.       *
  1355.       * %n%nUSER ACTION
  1356.       *
  1357.       * %nTo prevent remote computers from connecting unnecessarily to the domain controller,
  1358.       * delete the record manually or troubleshoot the failure to dynamically delete the
  1359.       * record. To learn more about debugging DNS, see Help and Support Center.
  1360.       *
  1361.       * %n%nADDITIONAL DATA
  1362.       * %nError Value: %2
  1363.      }
  1364.   NELOG_NetlogonFailedFileCreate = (ERRLOG2_BASE + 76);
  1365.   {$EXTERNALSYM NELOG_NetlogonFailedFileCreate}
  1366.     {
  1367.      * Failed to create/open file %1 with the following error: %n%2
  1368.      }
  1369.   NELOG_NetlogonGetSubnetToSite = (ERRLOG2_BASE + 77);
  1370.   {$EXTERNALSYM NELOG_NetlogonGetSubnetToSite}
  1371.     {
  1372.      * Netlogon got the following error while trying to get the subnet to site
  1373.      * mapping information from the DS: %n%1
  1374.      }
  1375.   NELOG_NetlogonNoSiteForClient = (ERRLOG2_BASE + 78);
  1376.   {$EXTERNALSYM NELOG_NetlogonNoSiteForClient}
  1377.    {
  1378.     * '%1' tried to determine its site by looking up its IP address ('%2')
  1379.     * in the ConfigurationSitesSubnets container in the DS.  No subnet matched
  1380.     * the IP address.  Consider adding a subnet object for this IP address.
  1381.     }
  1382.   NELOG_NetlogonBadSiteName = (ERRLOG2_BASE + 79);
  1383.   {$EXTERNALSYM NELOG_NetlogonBadSiteName}
  1384.     {
  1385.      * The site name for this computer is '%1'.  That site name is not a valid
  1386.      * site name.  A site name must be a valid DNS label.
  1387.      * Rename the site to be a valid name.
  1388.      }
  1389.   NELOG_NetlogonBadSubnetName = (ERRLOG2_BASE + 80);
  1390.   {$EXTERNALSYM NELOG_NetlogonBadSubnetName}
  1391.     {
  1392.      * The subnet object '%1' appears in the ConfigurationSitesSubnets
  1393.      * container in the DS.  The name is not syntactically valid.  The valid
  1394.      * syntax is xx.xx.xx.xx/yy where xx.xx.xx.xx is a valid IP subnet number
  1395.      * and yy is the number of bits in the subnet mask.
  1396.      *
  1397.      * Correct the name of the subnet object.
  1398.      }
  1399.   NELOG_NetlogonDynamicDnsServerFailure = (ERRLOG2_BASE + 81);
  1400.   {$EXTERNALSYM NELOG_NetlogonDynamicDnsServerFailure}
  1401.     {
  1402.      * Dynamic registration or deletion of one or more DNS records associated with DNS
  1403.      * domain '%1' failed.  These records are used by other computers to locate this
  1404.      * server as a domain controller (if the specified domain is an Active Directory
  1405.      * domain) or as an LDAP server (if the specified domain is an application partition).
  1406.      *
  1407.      * %n%nPossible causes of failure include:
  1408.      *
  1409.      * %n- TCP/IP properties of the network connections of this computer contain wrong IP address(es) of the preferred and alternate DNS servers
  1410.      * %n- Specified preferred and alternate DNS servers are not running
  1411.      * %n- DNS server(s) primary for the records to be registered is not running
  1412.      * %n- Preferred or alternate DNS servers are configured with wrong root hints
  1413.      * %n- Parent DNS zone contains incorrect delegation to the child zone authoritative for the DNS records that failed registration
  1414.      *
  1415.      * %n%nUSER ACTION
  1416.      *
  1417.      * %nFix possible misconfiguration(s) specified above and initiate registration or deletion of
  1418.      * the DNS records by running 'nltest.exe /dsregdns' from the command prompt or by restarting
  1419.      * Net Logon service. Nltest.exe is available in the Microsoft Windows Server Resource Kit CD.
  1420.      }
  1421.   NELOG_NetlogonDynamicDnsFailure = (ERRLOG2_BASE + 82);
  1422.   {$EXTERNALSYM NELOG_NetlogonDynamicDnsFailure}
  1423.     {
  1424.      * Dynamic registration or deregistration of one or more DNS records failed with the following error: %n%1
  1425.      }
  1426.   NELOG_NetlogonRpcCallCancelled = (ERRLOG2_BASE + 83);
  1427.   {$EXTERNALSYM NELOG_NetlogonRpcCallCancelled}
  1428.     {
  1429.      * The session setup to the Windows NT or Windows 2000 Domain Controller %1 for the domain %2
  1430.      * is not responsive.  The current RPC call from Netlogon on \%3 to %1 has been cancelled.
  1431.      }
  1432.   NELOG_NetlogonDcSiteCovered = (ERRLOG2_BASE + 84);
  1433.   {$EXTERNALSYM NELOG_NetlogonDcSiteCovered}
  1434.     {
  1435.      * Site '%2' does not have any Domain Controllers for domain '%3'.
  1436.      * Domain Controllers in site '%1' have been automatically
  1437.      * selected to cover site '%2' for domain '%3' based on configured
  1438.      * Directory Server replication costs.
  1439.      }
  1440.   NELOG_NetlogonDcSiteNotCovered = (ERRLOG2_BASE + 85);
  1441.   {$EXTERNALSYM NELOG_NetlogonDcSiteNotCovered}
  1442.     {
  1443.      * This Domain Controller no longer automatically covers site '%1' for domain '%2'.
  1444.      }
  1445.   NELOG_NetlogonGcSiteCovered = (ERRLOG2_BASE + 86);
  1446.   {$EXTERNALSYM NELOG_NetlogonGcSiteCovered}
  1447.     {
  1448.      * Site '%2' does not have any Global Catalog servers for forest '%3'.
  1449.      * Global Catalog servers in site '%1' have been automatically
  1450.      * selected to cover site '%2' for forest '%3' based on configured
  1451.      * Directory Server replication costs.
  1452.      }
  1453.   NELOG_NetlogonGcSiteNotCovered = (ERRLOG2_BASE + 87);
  1454.   {$EXTERNALSYM NELOG_NetlogonGcSiteNotCovered}
  1455.     {
  1456.      * This Global Catalog server no longer automatically covers site '%1' for forest '%2'.
  1457.      }
  1458.   NELOG_NetlogonFailedSpnUpdate = (ERRLOG2_BASE + 88);
  1459.   {$EXTERNALSYM NELOG_NetlogonFailedSpnUpdate}
  1460.     {
  1461.      * Attempt to update HOST Service Principal Names (SPNs) of the computer
  1462.      * object in Active Directory failed. The updated values were '%1' and '%2'.
  1463.      * The following error occurred: %n%3
  1464.      }
  1465.   NELOG_NetlogonFailedDnsHostNameUpdate = (ERRLOG2_BASE + 89);
  1466.   {$EXTERNALSYM NELOG_NetlogonFailedDnsHostNameUpdate}
  1467.     {
  1468.      * Attempt to update DNS Host Name of the computer object
  1469.      * in Active Directory failed. The updated value was '%1'.
  1470.      * The following error occurred: %n%2
  1471.      }
  1472.   NELOG_NetlogonAuthNoUplevelDomainController = (ERRLOG2_BASE + 90);
  1473.   {$EXTERNALSYM NELOG_NetlogonAuthNoUplevelDomainController}
  1474.     {
  1475.      * No suitable Domain Controller is available for domain %1.
  1476.      * An NT4 or older domain controller is available but it cannot
  1477.      * be used for authentication purposes in the Windows 2000 or newer
  1478.      * domain that this computer is a member of.
  1479.      * The following error occurred:%n%2
  1480.      }
  1481.   NELOG_NetlogonAuthDomainDowngraded = (ERRLOG2_BASE + 91);
  1482.   {$EXTERNALSYM NELOG_NetlogonAuthDomainDowngraded}
  1483.     {
  1484.      * The domain of this computer, %1 has been downgraded from Windows 2000
  1485.      * or newer to Windows NT4 or older. The computer cannot function properly
  1486.      * in this case for authentication purposes. This computer needs to rejoin
  1487.      * the domain.
  1488.      * The following error occurred:%n%2
  1489.      }
  1490.   NELOG_NetlogonNdncSiteCovered = (ERRLOG2_BASE + 92);
  1491.   {$EXTERNALSYM NELOG_NetlogonNdncSiteCovered}
  1492.     {
  1493.      * Site '%2' does not have any LDAP servers for non-domain NC '%3'.
  1494.      * LDAP servers in site '%1' have been automatically selected to
  1495.      * cover site '%2' for non-domain NC '%3' based on configured
  1496.      * Directory Server replication costs.
  1497.      }
  1498.   NELOG_NetlogonNdncSiteNotCovered = (ERRLOG2_BASE + 93);
  1499.   {$EXTERNALSYM NELOG_NetlogonNdncSiteNotCovered}
  1500.     {
  1501.      * This LDAP server no longer automatically covers site '%1' for non-domain NC '%2'.
  1502.      }
  1503.   NELOG_NetlogonDcOldSiteCovered = (ERRLOG2_BASE + 94);
  1504.   {$EXTERNALSYM NELOG_NetlogonDcOldSiteCovered}
  1505.     {
  1506.      * Site '%2' is no longer manually configured in the registry as
  1507.      * covered by this Domain Controller for domain '%3'. As a result,
  1508.      * site '%2' does not have any Domain Controllers for domain '%3'.
  1509.      * Domain Controllers in site '%1' have been automatically
  1510.      * selected to cover site '%2' for domain '%3' based on configured
  1511.      * Directory Server replication costs.
  1512.      }
  1513.   NELOG_NetlogonDcSiteNotCoveredAuto = (ERRLOG2_BASE + 95);
  1514.   {$EXTERNALSYM NELOG_NetlogonDcSiteNotCoveredAuto}
  1515.     {
  1516.      * This Domain Controller no longer automatically covers site '%1' for domain '%2'.
  1517.      * However, site '%1' is still (manually) covered by this Domain Controller for
  1518.      * domain '%2' since this site has been manually configured in the registry.
  1519.      }
  1520.   NELOG_NetlogonGcOldSiteCovered = (ERRLOG2_BASE + 96);
  1521.   {$EXTERNALSYM NELOG_NetlogonGcOldSiteCovered}
  1522.     {
  1523.      * Site '%2' is no longer manually configured in the registry as
  1524.      * covered by this Global Catalog server for forest '%3'. As a result,
  1525.      * site '%2' does not have any Global Catalog servers for forest '%3'.
  1526.      * Global Catalog servers in site '%1' have been automatically
  1527.      * selected to cover site '%2' for forest '%3' based on configured
  1528.      * Directory Server replication costs.
  1529.      }
  1530.   NELOG_NetlogonGcSiteNotCoveredAuto = (ERRLOG2_BASE + 97);
  1531.   {$EXTERNALSYM NELOG_NetlogonGcSiteNotCoveredAuto}
  1532.     {
  1533.      * This Global Catalog server no longer automatically covers site '%1' for forest '%2'.
  1534.      * However, site '%1' is still (manually) covered by this Global catalog for
  1535.      * forest '%2' since this site has been manually configured in the registry.
  1536.      }
  1537.   NELOG_NetlogonNdncOldSiteCovered = (ERRLOG2_BASE + 98);
  1538.   {$EXTERNALSYM NELOG_NetlogonNdncOldSiteCovered}
  1539.     {
  1540.      * Site '%2' is no longer manually configured in the registry as
  1541.      * covered by this LDAP server for non-domain NC '%3'. As a result,
  1542.      * site '%2' does not have any LDAP servers for non-domain NC '%3'.
  1543.      * LDAP servers in site '%1' have been automatically
  1544.      * selected to cover site '%2' for non-domain NC '%3' based on
  1545.      * configured Directory Server replication costs.
  1546.      }
  1547.   NELOG_NetlogonNdncSiteNotCoveredAuto = (ERRLOG2_BASE + 99);
  1548.   {$EXTERNALSYM NELOG_NetlogonNdncSiteNotCoveredAuto}
  1549.     {
  1550.      * This LDAP server no longer automatically covers site '%1' for non-domain NC '%2'.
  1551.      * However, site '%1' is still (manually) covered by this LDAP server for
  1552.      * non-domain NC '%2' since this site has been manually configured in the registry.
  1553.      }
  1554.   NELOG_NetlogonSpnMultipleSamAccountNames = (ERRLOG2_BASE + 100);
  1555.   {$EXTERNALSYM NELOG_NetlogonSpnMultipleSamAccountNames}
  1556.     {
  1557.      * Attempt to update DnsHostName and HOST Service Principal Name (SPN) attributes
  1558.      * of the computer object in Active Directory failed because the Domain Controller
  1559.      * '%1' had more than one account with the name '%2' corresponding to this computer.
  1560.      * Not having SPNs registered may result in authentication failures for this computer.
  1561.      * Contact your domain administrator who may need to manually resolve the account name
  1562.      * collision.
  1563.      }
  1564.   NELOG_NetlogonSpnCrackNamesFailure = (ERRLOG2_BASE + 101);
  1565.   {$EXTERNALSYM NELOG_NetlogonSpnCrackNamesFailure}
  1566.     {
  1567.      * Attempt to update DnsHostName and HOST Service Principal Name (SPN) attributes
  1568.      * of the computer object in Active Directory failed because this computer account
  1569.      * name, '%2' could not be mapped to the computer object on Domain Controller '%1'.
  1570.      * Not having SPNs registered may result in authentication failures for this computer.
  1571.      * Contact your domain administrator. The following technical information may be
  1572.      * useful for the resolution of this failure:%n
  1573.      * DsCrackNames status = 0x%3, crack error = 0x%4.
  1574.      }
  1575.   NELOG_NetlogonNoAddressToSiteMapping = (ERRLOG2_BASE + 102);
  1576.   {$EXTERNALSYM NELOG_NetlogonNoAddressToSiteMapping}
  1577.     {
  1578.      * None of the IP addresses (%2) of this Domain Controller map to the configured site '%1'.
  1579.      * While this may be a temporary situation due to IP address changes, it is generally
  1580.      * recommended that the IP address of the Domain Controller (accessible to machines in
  1581.      * its domain) maps to the Site which it services. If the above list of IP addresses is
  1582.      * stable, consider moving this server to a site (or create one if it does not already
  1583.      * exist) such that the above IP address maps to the selected site. This may require the
  1584.      * creation of a new subnet object (whose range includes the above IP address) which maps
  1585.      * to the selected site object.
  1586.      }
  1587.   NELOG_NetlogonInvalidGenericParameterValue = (ERRLOG2_BASE + 103);
  1588.   {$EXTERNALSYM NELOG_NetlogonInvalidGenericParameterValue}
  1589.     {
  1590.      * The following error occurred while reading a parameter '%2' in the
  1591.      * Netlogon %1 registry section:%n%3
  1592.      }
  1593.   NELOG_NetlogonInvalidDwordParameterValue = (ERRLOG2_BASE + 104);
  1594.   {$EXTERNALSYM NELOG_NetlogonInvalidDwordParameterValue}
  1595.     {
  1596.      * The Netlogon %1 registry key contains an invalid value 0x%2 for parameter '%3'.
  1597.      * The minimum and maximum values allowed for this parameter are 0x%4 and 0x%5, respectively.
  1598.      * The value of 0x%6 has been assigned to this parameter.
  1599.      }
  1600.   NELOG_NetlogonServerAuthFailedNoAccount = (ERRLOG2_BASE + 105);
  1601.   {$EXTERNALSYM NELOG_NetlogonServerAuthFailedNoAccount}
  1602.     {
  1603.      * The session setup from the computer %1 failed to authenticate.
  1604.      * The following error occurred: %n%2
  1605.      }
  1606.   NELOG_NetlogonNoDynamicDnsManual = (ERRLOG2_BASE + 106);
  1607.   {$EXTERNALSYM NELOG_NetlogonNoDynamicDnsManual}
  1608.     (*
  1609.      * Dynamic DNS updates have been manually disabled on this domain controller.
  1610.      *
  1611.      * %n%nUSER ACTION
  1612.      *
  1613.      * %nReconfigure this domain controller to use dynamic DNS updates or manually add the DNS
  1614.      * records from the file '%SystemRoot%System32ConfigNetlogon.dns' to the DNS database.
  1615.      *)
  1616.   NELOG_NetlogonNoSiteForClients = (ERRLOG2_BASE + 107);
  1617.   {$EXTERNALSYM NELOG_NetlogonNoSiteForClients}
  1618.     {
  1619.      * During the past %1 hours there have been %2 connections to this Domain
  1620.      * Controller from client machines whose IP addresses don't map to any of
  1621.      * the existing sites in the enterprise. Those clients, therefore, have
  1622.      * undefined sites and may connect to any Domain Controller including
  1623.      * those that are in far distant locations from the clients. A client's site
  1624.      * is determined by the mapping of its subnet to one of the existing sites.
  1625.      * To move the above clients to one of the sites, please consider creating
  1626.      * subnet object(s) covering the above IP addresses with mapping to one of the
  1627.      * existing sites.  The names and IP addresses of the clients in question have
  1628.      * been logged on this computer in the following log file
  1629.      * '%SystemRoot%debugnetlogon.log' and, potentially, in the log file
  1630.      * '%SystemRoot%debugnetlogon.bak' created if the former log becomes full.
  1631.      * The log(s) may contain additional unrelated debugging information. To filter
  1632.      * out the needed information, please search for lines which contain text
  1633.      * 'NO_CLIENT_SITE:'. The first word after this string is the client name and
  1634.      * the second word is the client IP address. The maximum size of the log(s) is
  1635.      * controlled by the following registry DWORD value
  1636.      * 'HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetlogonParametersLogFileMaxSize';
  1637.      * the default is %3 bytes.  The current maximum size is %4 bytes.  To set a
  1638.      * different maximum size, create the above registry value and set the desired
  1639.      * maximum size in bytes.
  1640.      }
  1641.   NELOG_NetlogonDnsDeregAborted               = (ERRLOG2_BASE + 108);
  1642.   {$EXTERNALSYM NELOG_NetlogonDnsDeregAborted}
  1643.     (*
  1644.      * The deregistration of some DNS domain controller locator records was aborted
  1645.      * at the time of this domain controller demotion because the DNS deregistrations
  1646.      * took too long.
  1647.      *
  1648.      * %n%nUSER ACTION
  1649.      *
  1650.      * %nManually delete the DNS records listed in the file
  1651.      * '%SystemRoot%System32ConfigNetlogon.dns' from the DNS database.
  1652.      *)
  1653.   NELOG_NetlogonRpcPortRequestFailure         = (ERRLOG2_BASE + 109);
  1654.   {$EXTERNALSYM NELOG_NetlogonRpcPortRequestFailure}
  1655.     (*
  1656.      * The NetLogon service on this domain controller has been configured to use port %1
  1657.      * for incoming RPC connections over TCP/IP from remote machines. However, the
  1658.      * following error occurred when Netlogon attempted to register this port with the RPC
  1659.      * endpoint mapper service: %n%2 %nThis will prevent the NetLogon service on remote
  1660.      * machines from connecting to this domain controller over TCP/IP that may result in
  1661.      * authentication problems.
  1662.      *
  1663.      * %n%nUSER ACTION
  1664.      *
  1665.      * %nThe specified port is configured via the Group Policy or via a registry value 'DcTcpipPort'
  1666.      * under the 'HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetlogonParameters'
  1667.      * registry key; the value configured through the Group Policy takes precedence. If the
  1668.      * port specified is in error, reset it to a correct value. You can also remove this
  1669.      * configuration for the port in which case the port will be assigned dynamically by
  1670.      * the endpoint mapper at the time the NetLogon service on remote machines makes RPC connections
  1671.      * to this domain controller. After the misconfiguration is corrected, restart the NetLogon
  1672.      * service on this machine and verify that this event log no longer appears.
  1673.      *)
  1674. implementation
  1675. {$IFDEF DYNAMIC_LINK}
  1676. var
  1677.   _NetErrorLogClear: Pointer;
  1678. function NetErrorLogClear;
  1679. begin
  1680.   GetProcedureAddress(_NetErrorLogClear, netapi32, 'NetErrorLogClear');
  1681.   asm
  1682.     mov esp, ebp
  1683.     pop ebp
  1684.     jmp [_NetErrorLogClear]
  1685.   end;
  1686. end;
  1687. {$ELSE}
  1688. function NetErrorLogClear; external netapi32 name 'NetErrorLogClear';
  1689. {$ENDIF DYNAMIC_LINK}
  1690. {$IFDEF DYNAMIC_LINK}
  1691. var
  1692.   _NetErrorLogRead: Pointer;
  1693. function NetErrorLogRead;
  1694. begin
  1695.   GetProcedureAddress(_NetErrorLogRead, netapi32, 'NetErrorLogRead');
  1696.   asm
  1697.     mov esp, ebp
  1698.     pop ebp
  1699.     jmp [_NetErrorLogRead]
  1700.   end;
  1701. end;
  1702. {$ELSE}
  1703. function NetErrorLogRead; external netapi32 name 'NetErrorLogRead';
  1704. {$ENDIF DYNAMIC_LINK}
  1705. {$IFDEF DYNAMIC_LINK}
  1706. var
  1707.   _NetErrorLogWrite: Pointer;
  1708. function NetErrorLogWrite;
  1709. begin
  1710.   GetProcedureAddress(_NetErrorLogWrite, netapi32, 'NetErrorLogWrite');
  1711.   asm
  1712.     mov esp, ebp
  1713.     pop ebp
  1714.     jmp [_NetErrorLogWrite]
  1715.   end;
  1716. end;
  1717. {$ELSE}
  1718. function NetErrorLogWrite; external netapi32 name 'NetErrorLogWrite';
  1719. {$ENDIF DYNAMIC_LINK}
  1720. end.