home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / winbase / winnt / service / service.h < prev    next >
C/C++ Source or Header  |  1997-10-05  |  5KB  |  138 lines

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1997  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  MODULE: service.h
  9. //
  10. //  AUTHOR: Craig Link
  11. //
  12. //
  13. //  Comments:  The use of this header file and the accompanying service.c
  14. //  file simplifies the process of writting a service.  You as a developer
  15. //  simply need to follow the TODO's outlined in this header file, and 
  16. //  implement the ServiceStart() and ServiceStop() functions.
  17. //  
  18. //  There is no need to modify the code in service.c.  Just add service.c
  19. //  to your project and link with the following libraries...
  20. //
  21. //  libcmt.lib kernel32.lib advapi.lib shell32.lib
  22. //
  23. //  This code also supports unicode.  Be sure to compile both service.c and
  24. //  and code #include "service.h" with the same Unicode setting.
  25. //
  26. //  Upon completion, your code will have the following command line interface
  27. //
  28. //  <service exe> -?                to display this list
  29. //  <service exe> -install          to install the service
  30. //  <service exe> -remove           to remove the service
  31. //  <service exe> -debug <params>   to run as a console app for debugging
  32. //
  33. //  Note: This code also implements Ctrl+C and Ctrl+Break handlers
  34. //        when using the debug option.  These console events cause
  35. //        your ServiceStop routine to be called
  36. //
  37. //        Also, this code only handles the OWN_SERVICE service type
  38. //        running in the LOCAL_SYSTEM security context.
  39. //
  40. //        To control your service ( start, stop, etc ) you may use the
  41. //        Services control panel applet or the NET.EXE program.
  42. //
  43. //        To aid in writing/debugging service, the
  44. //        SDK contains a utility (MSTOOLS\BIN\SC.EXE) that
  45. //        can be used to control, configure, or obtain service status.
  46. //        SC displays complete status for any service/driver
  47. //        in the service database, and allows any of the configuration
  48. //        parameters to be easily changed at the command line.
  49. //        For more information on SC.EXE, type SC at the command line.
  50. //
  51.  
  52. #ifndef _SERVICE_H
  53. #define _SERVICE_H
  54.  
  55.  
  56. #ifdef __cplusplus
  57. extern "C" {
  58. #endif
  59.  
  60.  
  61. //////////////////////////////////////////////////////////////////////////////
  62. //// todo: change to desired strings
  63. ////
  64. // name of the executable
  65. #define SZAPPNAME            "Simple"
  66. // internal name of the service
  67. #define SZSERVICENAME        "SimpleService"
  68. // displayed name of the service
  69. #define SZSERVICEDISPLAYNAME "Simple Service"
  70. // list of service dependencies - "dep1\0dep2\0\0"
  71. #define SZDEPENDENCIES       ""
  72. //////////////////////////////////////////////////////////////////////////////
  73.  
  74.  
  75.  
  76. //////////////////////////////////////////////////////////////////////////////
  77. //// todo: ServiceStart()must be defined by in your code.
  78. ////       The service should use ReportStatusToSCMgr to indicate
  79. ////       progress.  This routine must also be used by StartService()
  80. ////       to report to the SCM when the service is running.
  81. ////
  82. ////       If a ServiceStop procedure is going to take longer than
  83. ////       3 seconds to execute, it should spawn a thread to
  84. ////       execute the stop code, and return.  Otherwise, the
  85. ////       ServiceControlManager will believe that the service has
  86. ////       stopped responding
  87. ////
  88. VOID ServiceStart(DWORD dwArgc, LPTSTR *lpszArgv);
  89. VOID ServiceStop();
  90. //////////////////////////////////////////////////////////////////////////////
  91.  
  92.  
  93.  
  94. //////////////////////////////////////////////////////////////////////////////
  95. //// The following are procedures which
  96. //// may be useful to call within the above procedures,
  97. //// but require no implementation by the user.
  98. //// They are implemented in service.c
  99.  
  100. //
  101. //  FUNCTION: ReportStatusToSCMgr()
  102. //
  103. //  PURPOSE: Sets the current status of the service and
  104. //           reports it to the Service Control Manager
  105. //
  106. //  PARAMETERS:
  107. //    dwCurrentState - the state of the service
  108. //    dwWin32ExitCode - error code to report
  109. //    dwWaitHint - worst case estimate to next checkpoint
  110. //
  111. //  RETURN VALUE:
  112. //    TRUE  - success 
  113. //    FALSE - failure
  114. //
  115. BOOL ReportStatusToSCMgr(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint);
  116.  
  117.  
  118. //
  119. //  FUNCTION: AddToMessageLog(LPTSTR lpszMsg)
  120. //
  121. //  PURPOSE: Allows any thread to log an error message
  122. //
  123. //  PARAMETERS:
  124. //    lpszMsg - text for message
  125. //
  126. //  RETURN VALUE:
  127. //    none
  128. //
  129. void AddToMessageLog(LPTSTR lpszMsg);
  130. //////////////////////////////////////////////////////////////////////////////
  131.  
  132.  
  133. #ifdef __cplusplus
  134. }
  135. #endif
  136.  
  137. #endif
  138.