<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<appendix xml:id="win32service.constants" xmlns="http://docbook.org/ns/docbook">
 &reftitle.constants;
 &extension.constants;

 <section xml:id="win32service.constants.servicetype">
  <table>
   <title>Win32Service Service Type Bitmasks</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-service-win32-own-process">
      <entry><constant>WIN32_SERVICE_WIN32_OWN_PROCESS</constant></entry>
      <entry>0x00000010</entry>
      <entry>
       The service runs in its own process.
      </entry>
     </row>
     <row xml:id="constant.win32-service-interactive-process">
      <entry><constant>WIN32_SERVICE_INTERACTIVE_PROCESS</constant></entry>
      <entry>0x00000100</entry>
      <entry>
       The service can interact with the desktop. This option is not available on Windows Vista or later.
      </entry>
     </row>
     <row xml:id="constant.win32-service-win32-own-process-interactive">
      <entry><constant>WIN32_SERVICE_WIN32_OWN_PROCESS_INTERACTIVE</constant></entry>
      <entry>0x00000110</entry>
      <entry>
       The service runs in its own process and can interact with the desktop. This option is not available on Windows Vista or later.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.servicestatus">
  <table>
   <title>Win32Service Service Status Constants</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-service-continue-pending">
      <entry><constant>WIN32_SERVICE_CONTINUE_PENDING</constant></entry>
      <entry>0x00000005</entry>
      <entry>
       The service continue is pending.
      </entry>
     </row>
     <row xml:id="constant.win32-service-pause-pending">
      <entry><constant>WIN32_SERVICE_PAUSE_PENDING</constant></entry>
      <entry>0x00000006</entry>
      <entry>
       The service pause is pending.
      </entry>
     </row>
     <row xml:id="constant.win32-service-paused">
      <entry><constant>WIN32_SERVICE_PAUSED</constant></entry>
      <entry>0x00000007</entry>
      <entry>
       The service is paused.
      </entry>
     </row>
     <row xml:id="constant.win32-service-running">
      <entry><constant>WIN32_SERVICE_RUNNING</constant></entry>
      <entry>0x00000004</entry>
      <entry>
       The service is running.
      </entry>
     </row>
     <row xml:id="constant.win32-service-start-pending">
      <entry><constant>WIN32_SERVICE_START_PENDING</constant></entry>
      <entry>0x00000002</entry>
      <entry>
       The service is starting.
      </entry>
     </row>
     <row xml:id="constant.win32-service-stop-pending">
      <entry><constant>WIN32_SERVICE_STOP_PENDING</constant></entry>
      <entry>0x00000003</entry>
      <entry>
       The service is stopping.
      </entry>
     </row>
     <row xml:id="constant.win32-service-stopped">
      <entry><constant>WIN32_SERVICE_STOPPED</constant></entry>
      <entry>0x00000001</entry>
      <entry>
       The service is not running.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.servicecontrol">
  <table>
   <title>Win32Service Service Control Message Constants</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-service-control-continue">
      <entry><constant>WIN32_SERVICE_CONTROL_CONTINUE</constant></entry>
      <entry>0x00000003</entry>
      <entry>
       Notifies a paused service that it should resume.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-deviceevent">
      <entry><constant>WIN32_SERVICE_CONTROL_DEVICEEVENT</constant></entry>
      <entry>0x0000000B</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-hardwareprofilechange">
      <entry><constant>WIN32_SERVICE_CONTROL_HARDWAREPROFILECHANGE</constant></entry>
      <entry>0x0000000C</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-interrogate">
      <entry><constant>WIN32_SERVICE_CONTROL_INTERROGATE</constant></entry>
      <entry>0x00000004</entry>
      <entry>
       Notifies a service that it should report its current status information
       to the service control manager.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-netbindadd">
      <entry><constant>WIN32_SERVICE_CONTROL_NETBINDADD</constant></entry>
      <entry>0x00000007</entry>
      <entry>
       Notifies a network service that there is a new component for binding.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-netbinddisable">
      <entry><constant>WIN32_SERVICE_CONTROL_NETBINDDISABLE</constant></entry>
      <entry>0x0000000A</entry>
      <entry>
       Notifies a network service that one of its bindings has been disabled.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-netbindenable">
      <entry><constant>WIN32_SERVICE_CONTROL_NETBINDENABLE</constant></entry>
      <entry>0x00000009</entry>
      <entry>
       Notifies a network service that a disabled binding has been enabled.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-netbindremove">
      <entry><constant>WIN32_SERVICE_CONTROL_NETBINDREMOVE</constant></entry>
      <entry>0x00000008</entry>
      <entry>
       Notifies a network service that a component for binding has been removed.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-paramchange">
      <entry><constant>WIN32_SERVICE_CONTROL_PARAMCHANGE</constant></entry>
      <entry>0x00000006</entry>
      <entry>
       Notifies a service that its startup parameters have changed.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-pause">
      <entry><constant>WIN32_SERVICE_CONTROL_PAUSE</constant></entry>
      <entry>0x00000002</entry>
      <entry>
       Notifies a service that it should pause.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-powerevent">
      <entry><constant>WIN32_SERVICE_CONTROL_POWEREVENT</constant></entry>
      <entry>0x0000000D</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-preshutdown">
      <entry><constant>WIN32_SERVICE_CONTROL_PRESHUTDOWN</constant></entry>
      <entry>0x0000000F</entry>
      <entry>
       Notifies a service that the system will be shutting down. A service that
       handles this notification blocks system shutdown until the service stops
       or the preshutdown time-out interval expires. This value is not supported
       by Windows Server 2003 and Windows XP/2000.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-sessionchange">
      <entry><constant>WIN32_SERVICE_CONTROL_SESSIONCHANGE</constant></entry>
      <entry>0x0000000E</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-shutdown">
      <entry><constant>WIN32_SERVICE_CONTROL_SHUTDOWN</constant></entry>
      <entry>0x00000005</entry>
      <entry>
       Notifies a service that the system is shutting down so the service can
       perform cleanup tasks. If a service accepts this control code, it must
       stop after it performs its cleanup tasks. After the SCM sends this
       control code, it will not send other control codes to the service.
      </entry>
     </row>
     <row xml:id="constant.win32-service-control-stop">
      <entry><constant>WIN32_SERVICE_CONTROL_STOP</constant></entry>
      <entry>0x00000001</entry>
      <entry>
       Notifies a service that it should stop.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.controlsaccepted">
  <table>
   <title>Win32Service Service Control Message Accepted Bitmasks</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-service-accept-hardwareprofilechange">
      <entry><constant>WIN32_SERVICE_ACCEPT_HARDWAREPROFILECHANGE</constant></entry>
      <entry>0x00000020</entry>
      <entry>
        The service is notified when the computer's hardware profile has changed.
        This enables the system to send 
        <constant>WIN32_SERVICE_CONTROL_HARDWAREPROFILECHANGE</constant> 
        notifications to the service.
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-netbindchange">
      <entry><constant>WIN32_SERVICE_ACCEPT_NETBINDCHANGE</constant></entry>
      <entry>0x00000010</entry>
      <entry>
        The service is a network component that can accept changes in its 
        binding without being stopped and restarted.
        This control code allows the service to receive 
        <constant>WIN32_SERVICE_CONTROL_NETBINDADD</constant>, 
        <constant>WIN32_SERVICE_CONTROL_NETBINDREMOVE</constant>, 
        <constant>WIN32_SERVICE_CONTROL_NETBINDENABLE</constant>, and 
        <constant>WIN32_SERVICE_CONTROL_NETBINDDISABLE</constant> notifications.
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-paramchange">
      <entry><constant>WIN32_SERVICE_ACCEPT_PARAMCHANGE</constant></entry>
      <entry>0x00000008</entry>
      <entry>
        The service can reread its startup parameters without being stopped and restarted.
        This control code allows the service to receive 
        <constant>WIN32_SERVICE_CONTROL_PARAMCHANGE</constant> notifications.
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-pause-continue">
      <entry><constant>WIN32_SERVICE_ACCEPT_PAUSE_CONTINUE</constant></entry>
      <entry>0x00000002</entry>
      <entry>
       The service can be paused and continued. This control code allows the
       service to receive <constant>WIN32_SERVICE_CONTROL_PAUSE</constant> and
       <constant>WIN32_SERVICE_CONTROL_CONTINUE</constant> notifications.
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-powerevent">
      <entry><constant>WIN32_SERVICE_ACCEPT_POWEREVENT</constant></entry>
      <entry>0x00000040</entry>
      <entry>
        The service is notified when the computer's power status has changed.
        This enables the system to send 
        <constant>WIN32_SERVICE_CONTROL_POWEREVENT</constant> notifications 
        to the service.
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-preshutdown">
      <entry><constant>WIN32_SERVICE_ACCEPT_PRESHUTDOWN</constant></entry>
      <entry>0x00000100</entry>
      <entry>
       The service can perform preshutdown tasks. This control code enables the
       service to receive <constant>WIN32_SERVICE_CONTROL_PRESHUTDOWN</constant>
       notifications. This value is not supported by Windows Server 2003 and
       Windows XP/2000.
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-sessionchange">
      <entry><constant>WIN32_SERVICE_ACCEPT_SESSIONCHANGE</constant></entry>
      <entry>0x00000080</entry>
      <entry>
        The service is notified when the computer's session status has changed.
        This enables the system to send 
        <constant>WIN32_SERVICE_CONTROL_SESSIONCHANGE</constant> notifications 
        to the service.
        Windows 2000:  This value is not supported
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-shutdown">
      <entry><constant>WIN32_SERVICE_ACCEPT_SHUTDOWN</constant></entry>
      <entry>0x00000004</entry>
      <entry>
       The service is notified when system shutdown occurs. This control code
       allows the service to receive <constant>WIN32_SERVICE_CONTROL_SHUTDOWN</constant>
       notifications.
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-stop">
      <entry><constant>WIN32_SERVICE_ACCEPT_STOP</constant></entry>
      <entry>0x00000001</entry>
      <entry>
       The service can be stopped. This control code allows the service to
       receive <constant>WIN32_SERVICE_CONTROL_STOP</constant> notifications.
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-timechange">
      <entry><constant>WIN32_SERVICE_ACCEPT_TIMECHANGE</constant></entry>
      <entry>0x00000200</entry>
      <entry>
        The service is notified when the system time has changed.
        This enables the system to send 
        <constant>WIN32_SERVICE_CONTROL_TIMECHANGE</constant> notifications to the service.
        Windows Server 2008, Windows Vista, Windows Server 2003, 
        and Windows XP/2000:  This control code is not supported.
      </entry>
     </row>
     <row xml:id="constant.win32-service-accept-triggerevent">
      <entry><constant>WIN32_SERVICE_ACCEPT_TRIGGEREVENT</constant></entry>
      <entry>0x00000400</entry>
      <entry>
        The service is notified when an event for which the service has registered occurs.
        This enables the system to send 
        <constant>WIN32_SERVICE_CONTROL_TRIGGEREVENT</constant> notifications to the service.
        Windows Server 2008, Windows Vista, Windows Server 2003, 
        and Windows XP/2000:  This control code is not supported.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.servicestarttype">
  <table>
   <title>Win32Service Service Start Type Constants</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-service-boot-start">
      <entry><constant>WIN32_SERVICE_BOOT_START</constant></entry>
      <entry>0x00000000</entry>
      <entry>
       A device driver started by the system loader. This value is valid only for driver services.
      </entry>
     </row>
     <row xml:id="constant.win32-service-system-start">
      <entry><constant>WIN32_SERVICE_SYSTEM_START</constant></entry>
      <entry>0x00000001</entry>
      <entry>
       A device driver started by the IoInitSystem function. This value is valid only for driver services.
      </entry>
     </row>
     <row xml:id="constant.win32-service-auto-start">
      <entry><constant>WIN32_SERVICE_AUTO_START</constant></entry>
      <entry>0x00000002</entry>
      <entry>
       A service started automatically by the service control manager during
       system startup.
      </entry>
     </row>
     <row xml:id="constant.win32-service-demand-start">
      <entry><constant>WIN32_SERVICE_DEMAND_START</constant></entry>
      <entry>0x00000003</entry>
      <entry>
       A service started by the service control manager when a process calls the
       StartService function.
      </entry>
     </row>
     <row xml:id="constant.win32-service-disabled">
      <entry><constant>WIN32_SERVICE_DISABLED</constant></entry>
      <entry>0x00000004</entry>
      <entry>
       A service that cannot be started. Attempts to start the service result in
       the error code <constant>WIN32_ERROR_SERVICE_DISABLED</constant>.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.errorcontrol">
  <table>
   <title>Win32Service Service Error Control Constants</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-service-error-ignore">
      <entry><constant>WIN32_SERVICE_ERROR_IGNORE</constant></entry>
      <entry>0x00000000</entry>
      <entry>
       The startup program ignores the error and continues the startup operation.
      </entry>
     </row>
     <row xml:id="constant.win32-service-error-normal">
      <entry><constant>WIN32_SERVICE_ERROR_NORMAL</constant></entry>
      <entry>0x00000001</entry>
      <entry>
       The startup program logs the error in the event log but continues the
       startup operation.
      </entry>
     </row>
     <row xml:id="constant.win32-service-error-severe">
      <entry><constant>WIN32_SERVICE_ERROR_SEVERE</constant></entry>
      <entry>0x00000002</entry>
      <entry>
       The startup program logs the error in the event log.
       If the last-known-good configuration is being started, the startup 
       operation continues. Otherwise, the system is restarted with the 
       last-known-good configuration.
      </entry>
     </row>
     <row xml:id="constant.win32-service-error-critical">
      <entry><constant>WIN32_SERVICE_ERROR_CRITICAL</constant></entry>
      <entry>0x00000003</entry>
      <entry>
       The startup program logs the error in the event log, if possible.
       If the last-known-good configuration is being started, the startup 
       operation fails. Otherwise, the system is restarted with the 
       last-known good configuration.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.serviceflag">
  <table>
   <title>Win32Service Service Flag Constants</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-service-runs-in-system-process">
      <entry><constant>WIN32_SERVICE_RUNS_IN_SYSTEM_PROCESS</constant></entry>
      <entry>0x00000001</entry>
      <entry>
       The service runs in a system process that must always be running.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.errors">
    <note>
    <para>
      These constants are no longer in use as of Win32Service 1.0.0.
    </para>
  </note>
  <table>
   <title>Win32 Error Codes</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-error-access-denied">
      <entry><constant>WIN32_ERROR_ACCESS_DENIED</constant></entry>
      <entry>0x00000005</entry>
      <entry>
       The handle to the SCM database does not have the appropriate access rights.
      </entry>
     </row>
     <row xml:id="constant.win32-error-circular-dependency">
      <entry><constant>WIN32_ERROR_CIRCULAR_DEPENDENCY</constant></entry>
      <entry>0x00000423</entry>
      <entry>
       A circular service dependency was specified.
      </entry>
     </row>
     <row xml:id="constant.win32-error-database-does-not-exist">
      <entry><constant>WIN32_ERROR_DATABASE_DOES_NOT_EXIST</constant></entry>
      <entry>0x00000429</entry>
      <entry>
       The specified database does not exist.
      </entry>
     </row>
     <row xml:id="constant.win32-error-dependent-services-running">
      <entry><constant>WIN32_ERROR_DEPENDENT_SERVICES_RUNNING</constant></entry>
      <entry>0x0000041B</entry>
      <entry>
       The service cannot be stopped because other running services are dependent
       on it.
      </entry>
     </row>
     <row xml:id="constant.win32-error-duplicate-service-name">
      <entry><constant>WIN32_ERROR_DUPLICATE_SERVICE_NAME</constant></entry>
      <entry>0x00000436</entry>
      <entry>
       The display name already exists in the service control manager database
       either as a service name or as another display name.
      </entry>
     </row>
     <row xml:id="constant.win32-error-failed-service-controller-connect">
      <entry><constant>WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT</constant></entry>
      <entry>0x00000427</entry>
      <entry>
       This error is returned if the program is being run as a console application
       rather than as a service. If the program will be run as a console application
       for debugging purposes, structure it such that service-specific code is not
       called.
      </entry>
     </row>
     <row xml:id="constant.win32-error-insufficient-buffer">
      <entry><constant>WIN32_ERROR_INSUFFICIENT_BUFFER</constant></entry>
      <entry>0x0000007A</entry>
      <entry>
       The buffer is too small for the service status structure. Nothing was
       written to the structure.
      </entry>
     </row>
     <row xml:id="constant.win32-error-invalid-data">
      <entry><constant>WIN32_ERROR_INVALID_DATA</constant></entry>
      <entry>0x0000000D</entry>
      <entry>
       The specified service status structure is invalid.
      </entry>
     </row>
     <row xml:id="constant.win32-error-invalid-handle">
      <entry><constant>WIN32_ERROR_INVALID_HANDLE</constant></entry>
      <entry>0x00000006</entry>
      <entry>
       The handle to the specified service control manager database is invalid.
      </entry>
     </row>
     <row xml:id="constant.win32-error-invalid-level">
      <entry><constant>WIN32_ERROR_INVALID_LEVEL</constant></entry>
      <entry>0x0000007C</entry>
      <entry>
       The InfoLevel parameter contains an unsupported value.
      </entry>
     </row>
     <row xml:id="constant.win32-error-invalid-name">
      <entry><constant>WIN32_ERROR_INVALID_NAME</constant></entry>
      <entry>0x0000007B</entry>
      <entry>
       The specified service name is invalid.
      </entry>
     </row>
     <row xml:id="constant.win32-error-invalid-parameter">
      <entry><constant>WIN32_ERROR_INVALID_PARAMETER</constant></entry>
      <entry>0x00000057</entry>
      <entry>
       A parameter that was specified is invalid.
      </entry>
     </row>
     <row xml:id="constant.win32-error-invalid-service-account">
      <entry><constant>WIN32_ERROR_INVALID_SERVICE_ACCOUNT</constant></entry>
      <entry>0x00000421</entry>
      <entry>
       The user account name specified in the <parameter>user</parameter>
       parameter does not exist. See <function>win32_create_service</function>.
      </entry>
     </row>
     <row xml:id="constant.win32-error-invalid-service-control">
      <entry><constant>WIN32_ERROR_INVALID_SERVICE_CONTROL</constant></entry>
      <entry>0x0000041C</entry>
      <entry>
       The requested control code is not valid, or it is unacceptable to the service.
      </entry>
     </row>
     <row xml:id="constant.win32-error-path-not-found">
      <entry><constant>WIN32_ERROR_PATH_NOT_FOUND</constant></entry>
      <entry>0x00000003</entry>
      <entry>
       The service binary file could not be found.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-already-running">
      <entry><constant>WIN32_ERROR_SERVICE_ALREADY_RUNNING</constant></entry>
      <entry>0x00000420</entry>
      <entry>
       An instance of the service is already running.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-cannot-accept-ctrl">
      <entry><constant>WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL</constant></entry>
      <entry>0x00000425</entry>
      <entry>
       The requested control code cannot be sent to the service because the state
       of the service is <constant>WIN32_SERVICE_STOPPED</constant>,
       <constant>WIN32_SERVICE_START_PENDING</constant>, or
       <constant>WIN32_SERVICE_STOP_PENDING</constant>.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-database-locked">
      <entry><constant>WIN32_ERROR_SERVICE_DATABASE_LOCKED</constant></entry>
      <entry>0x0000041F</entry>
      <entry>
       The database is locked.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-dependency-deleted">
      <entry><constant>WIN32_ERROR_SERVICE_DEPENDENCY_DELETED</constant></entry>
      <entry>0x00000433</entry>
      <entry>
       The service depends on a service that does not exist or has been marked
       for deletion.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-dependency-fail">
      <entry><constant>WIN32_ERROR_SERVICE_DEPENDENCY_FAIL</constant></entry>
      <entry>0x0000042C</entry>
      <entry>
       The service depends on another service that has failed to start.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-disabled">
      <entry><constant>WIN32_ERROR_SERVICE_DISABLED</constant></entry>
      <entry>0x00000422</entry>
      <entry>
       The service has been disabled.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-does-not-exist">
      <entry><constant>WIN32_ERROR_SERVICE_DOES_NOT_EXIST</constant></entry>
      <entry>0x00000424</entry>
      <entry>
       The specified service does not exist as an installed service.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-exists">
      <entry><constant>WIN32_ERROR_SERVICE_EXISTS</constant></entry>
      <entry>0x00000431</entry>
      <entry>
       The specified service already exists in this database.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-logon-failed">
      <entry><constant>WIN32_ERROR_SERVICE_LOGON_FAILED</constant></entry>
      <entry>0x0000042D</entry>
      <entry>
       The service did not start due to a logon failure. This error occurs if
       the service is configured to run under an account that does not have the
       "Log on as a service" right.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-marked-for-delete">
      <entry><constant>WIN32_ERROR_SERVICE_MARKED_FOR_DELETE</constant></entry>
      <entry>0x00000430</entry>
      <entry>
       The specified service has already been marked for deletion.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-no-thread">
      <entry><constant>WIN32_ERROR_SERVICE_NO_THREAD</constant></entry>
      <entry>0x0000041E</entry>
      <entry>
       A thread could not be created for the service.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-not-active">
      <entry><constant>WIN32_ERROR_SERVICE_NOT_ACTIVE</constant></entry>
      <entry>0x00000426</entry>
      <entry>
       The service has not been started.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-request-timeout">
      <entry><constant>WIN32_ERROR_SERVICE_REQUEST_TIMEOUT</constant></entry>
      <entry>0x0000041D</entry>
      <entry>
       The process for the service was started, but it did not call
       StartServiceCtrlDispatcher, or the thread that called
       StartServiceCtrlDispatcher may be blocked in a control handler function.
      </entry>
     </row>
     <row xml:id="constant.win32-error-shutdown-in-progress">
      <entry><constant>WIN32_ERROR_SHUTDOWN_IN_PROGRESS</constant></entry>
      <entry>0x0000045B</entry>
      <entry>
       The system is shutting down; this function cannot be called.
      </entry>
     </row>
     <row xml:id="constant.win32-error-service-specific-error">
      <entry><constant>WIN32_ERROR_SERVICE_SPECIFIC_ERROR</constant></entry>
      <entry>0x0000042A</entry>
      <entry>
       The service has returned a service-specific error code.
      </entry>
     </row>
     <row xml:id="constant.win32-no-error">
      <entry><constant>WIN32_NO_ERROR</constant></entry>
      <entry>0x00000000</entry>
      <entry>
       No error.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.basepriorities">
  <table>
   <title>Win32 Base Priority Classes</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-above-normal-priority-class">
      <entry><constant>WIN32_ABOVE_NORMAL_PRIORITY_CLASS</constant></entry>
      <entry>0x00008000</entry>
      <entry>
       Process that has priority above WIN32_NORMAL_PRIORITY_CLASS but below
       WIN32_HIGH_PRIORITY_CLASS.
      </entry>
     </row>
     <row xml:id="constant.win32-below-normal-priority-class">
      <entry><constant>WIN32_BELOW_NORMAL_PRIORITY_CLASS</constant></entry>
      <entry>0x00004000</entry>
      <entry>
       Process that has priority above WIN32_IDLE_PRIORITY_CLASS but below
       WIN32_NORMAL_PRIORITY_CLASS.
      </entry>
     </row>
     <row xml:id="constant.win32-high-priority-class">
      <entry><constant>WIN32_HIGH_PRIORITY_CLASS</constant></entry>
      <entry>0x00000080</entry>
      <entry>
       Process that performs time-critical tasks that must be executed
       immediately. The threads of the process preempt the threads of normal or
       idle priority class processes. An example is the Task List, which must
       respond quickly when called by the user, regardless of the load on the
       operating system. Use extreme care when using the high-priority class,
       because a high-priority class application can use nearly all available
       CPU time.
      </entry>
     </row>
     <row xml:id="constant.win32-idle-priority-class">
      <entry><constant>WIN32_IDLE_PRIORITY_CLASS</constant></entry>
      <entry>0x00000040</entry>
      <entry>
       Process whose threads run only when the system is idle. The threads of the
       process are preempted by the threads of any process running in a higher
       priority class. An example is a screen saver. The idle-priority class is
       inherited by child processes.
      </entry>
     </row>
     <row xml:id="constant.win32-normal-priority-class">
      <entry><constant>WIN32_NORMAL_PRIORITY_CLASS</constant></entry>
      <entry>0x00000020</entry>
      <entry>
       Process with no special scheduling needs.
      </entry>
     </row>
     <row xml:id="constant.win32-realtime-priority-class">
      <entry><constant>WIN32_REALTIME_PRIORITY_CLASS</constant></entry>
      <entry>0x00000100</entry>
      <entry>
       Process that has the highest possible priority. The threads of the
       process preempt the threads of all other processes, including operating
       system processes performing important tasks. For example, a real-time
       process that executes for more than a very brief interval can cause disk
       caches not to flush or cause the mouse to be unresponsive.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.recovery-action">
  <table>
   <title>Win32 Recovery action</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-sc-action-none">
      <entry><constant>WIN32_SC_ACTION_NONE</constant></entry>
      <entry>0x00000000</entry>
      <entry>
       No action.
      </entry>
     </row>
     <row xml:id="constant.win32-sc-action-restart">
      <entry><constant>WIN32_SC_ACTION_RESTART</constant></entry>
      <entry>0x00000001</entry>
      <entry>
       Restart the service.
      </entry>
     </row>
     <row xml:id="constant.win32-sc-action-reboot">
      <entry><constant>WIN32_SC_ACTION_REBOOT</constant></entry>
      <entry>0x00000002</entry>
      <entry>
       Restart the server.
      </entry>
     </row>
     <row xml:id="constant.win32-sc-action-run-command">
      <entry><constant>WIN32_SC_ACTION_RUN_COMMAND</constant></entry>
      <entry>0x00000003</entry>
      <entry>
       Run a command.
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>

 <section xml:id="win32service.constants.serviceinfos">
  <table>
   <title>Win32 Service informations</title>
   <tgroup cols="3">
    <thead>
     <row>
      <entry>Constant</entry>
      <entry>Value</entry>
      <entry>Description</entry>
     </row>
    </thead>
    <tbody>
     <row xml:id="constant.win32-info-service">
      <entry><constant>WIN32_INFO_SERVICE</constant></entry>
      <entry>"service"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-display">
      <entry><constant>WIN32_INFO_DISPLAY</constant></entry>
      <entry>"display"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-user">
      <entry><constant>WIN32_INFO_USER</constant></entry>
      <entry>"user"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-password">
      <entry><constant>WIN32_INFO_PASSWORD</constant></entry>
      <entry>"password"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-path">
      <entry><constant>WIN32_INFO_PATH</constant></entry>
      <entry>"path"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-params">
      <entry><constant>WIN32_INFO_PARAMS</constant></entry>
      <entry>"params"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-description">
      <entry><constant>WIN32_INFO_DESCRIPTION</constant></entry>
      <entry>"description"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-start-type">
      <entry><constant>WIN32_INFO_START_TYPE</constant></entry>
      <entry>"start_type"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-load-order">
      <entry><constant>INFO_LOAD_ORDER</constant></entry>
      <entry>"load_order"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-svc-type">
      <entry><constant>INFO_SVC_TYPE</constant></entry>
      <entry>"svc_type"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-error-control">
      <entry><constant>INFO_ERROR_CONTROL</constant></entry>
      <entry>"error_control"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-delayed-start">
      <entry><constant>INFO_DELAYED_START</constant></entry>
      <entry>"delayed_start"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-base-priority">
      <entry><constant>INFO_BASE_PRIORITY</constant></entry>
      <entry>"base_priority"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-dependencies">
      <entry><constant>INFO_DEPENDENCIES</constant></entry>
      <entry>"dependencies"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-recovery-delay">
      <entry><constant>INFO_RECOVERY_DELAY</constant></entry>
      <entry>"recovery_delay"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-recovery-action-1">
      <entry><constant>INFO_RECOVERY_ACTION_1</constant></entry>
      <entry>"recovery_action_1"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-recovery-action-2">
      <entry><constant>INFO_RECOVERY_ACTION_2</constant></entry>
      <entry>"recovery_action_2"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-recovery-action-3">
      <entry><constant>INFO_RECOVERY_ACTION_3</constant></entry>
      <entry>"recovery_action_3"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-recovery-reset-period">
      <entry><constant>INFO_RECOVERY_RESET_PERIOD</constant></entry>
      <entry>"recovery_reset_period"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-recovery-enabled">
      <entry><constant>INFO_RECOVERY_ENABLED</constant></entry>
      <entry>"recovery_enabled"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-recovery-reboot-msg">
      <entry><constant>INFO_RECOVERY_REBOOT_MSG</constant></entry>
      <entry>"recovery_reboot_msg"</entry>
      <entry>
      </entry>
     </row>
     <row xml:id="constant.win32-info-recovery-command">
      <entry><constant>INFO_RECOVERY_COMMAND</constant></entry>
      <entry>"recovery_command"</entry>
      <entry>
      </entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </section>
</appendix>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
