SERVICE.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:

Windows编程

开发平台:

Visual C++

  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- 1996, 1995  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 (MSTOOLSBINSC.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. #ifndef _SERVICE_H
  52. #define _SERVICE_H
  53. #ifdef __cplusplus
  54. extern "C" {
  55. #endif
  56. //////////////////////////////////////////////////////////////////////////////
  57. //// todo: change to desired strings
  58. ////
  59. // name of the executable
  60. #define SZAPPNAME            "nsserv"
  61. // internal name of the service
  62. #define SZSERVICENAME        "NSHelloService"
  63. // displayed name of the service
  64. #define SZSERVICEDISPLAYNAME "NS Hello Service"
  65. // list of service dependencies - "dep1dep2"
  66. #define SZDEPENDENCIES       "RPCSSRPCLOCATOR"
  67. //////////////////////////////////////////////////////////////////////////////
  68. //////////////////////////////////////////////////////////////////////////////
  69. //// todo: ServiceStart()must be defined by in your code.
  70. ////       The service should use ReportStatusToSCMgr to indicate
  71. ////       progress.  This routine must also be used by StartService()
  72. ////       to report to the SCM when the service is running.
  73. ////
  74. ////       If a ServiceStop procedure is going to take longer than
  75. ////       3 seconds to execute, it should spawn a thread to
  76. ////       execute the stop code, and return.  Otherwise, the
  77. ////       ServiceControlManager will believe that the service has
  78. ////       stopped responding
  79. ////
  80. VOID ServiceStart(DWORD dwArgc, LPTSTR *lpszArgv);
  81. VOID ServiceStop();
  82. //////////////////////////////////////////////////////////////////////////////
  83. //////////////////////////////////////////////////////////////////////////////
  84. //// The following are procedures which
  85. //// may be useful to call within the above procedures,
  86. //// but require no implementation by the user.
  87. //// They are implemented in service.c
  88. //
  89. //  FUNCTION: ReportStatusToSCMgr()
  90. //
  91. //  PURPOSE: Sets the current status of the service and
  92. //           reports it to the Service Control Manager
  93. //
  94. //  PARAMETERS:
  95. //    dwCurrentState - the state of the service
  96. //    dwWin32ExitCode - error code to report
  97. //    dwWaitHint - worst case estimate to next checkpoint
  98. //
  99. //  RETURN VALUE:
  100. //    TRUE  - success
  101. //    FALSE - failure
  102. //
  103. BOOL ReportStatusToSCMgr(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint);
  104. //
  105. //  FUNCTION: AddToMessageLog(LPTSTR lpszMsg)
  106. //
  107. //  PURPOSE: Allows any thread to log an error message
  108. //
  109. //  PARAMETERS:
  110. //    lpszMsg - text for message
  111. //
  112. //  RETURN VALUE:
  113. //    none
  114. //
  115. void AddToMessageLog(LPTSTR lpszMsg);
  116. //////////////////////////////////////////////////////////////////////////////
  117. #ifdef __cplusplus
  118. }
  119. #endif
  120. #endif