WindowService.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef __WINDOWS_SERVICE_20160113__
  2. #define __WINDOWS_SERVICE_20160113__
  3. #include <WinSvc.h>
  4. namespace WindowsService
  5. {
  6. // 工作启动回调函数;
  7. typedef void (CALLBACK *WorkStartCallback)();
  8. // 工作结束回调函数;
  9. typedef void (CALLBACK *WorkEndofCallback)();
  10. //////////////////////////////////////////////////////////////////////////
  11. // 全局变量;
  12. //////////////////////////////////////////////////////////////////////////
  13. extern SERVICE_STATUS_HANDLE g_SvcStatusHandle;
  14. extern SERVICE_STATUS g_SvcStatus;
  15. extern HANDLE g_hCtrlSvc;
  16. extern TCHAR g_szlpSvrDescription[MAX_PATH] ;
  17. extern TCHAR g_szSvcName[MAX_PATH];
  18. extern WorkStartCallback g_lpStartWorkCallBack;
  19. extern WorkEndofCallback g_lpEndofWorkCallBack;
  20. //////////////////////////////////////////////////////////////////////////
  21. // 全局函数;
  22. // 初始化服务变量;
  23. extern void InitSvcVar();
  24. // 服务是否已安装;
  25. extern BOOL IsSvcInstalled();
  26. // 安装服务;
  27. extern BOOL SvcInstall();
  28. // windows服务程序入口函数;
  29. extern void WINAPI ServiceMain();
  30. // windows服务状态控制;
  31. extern void WINAPI SvcCtrlHandler(IN DWORD dwControlCode);
  32. // 初始化SOCKET库;
  33. extern int InitWinSock();
  34. // 服务日志事件;
  35. extern void SvcReportEvent(IN LPCTSTR pFormat, ...);
  36. // 向SCM报告服务状态;
  37. extern BOOL ReportSvcStatus(
  38. IN DWORD dwCurrentState,
  39. IN DWORD dwWin32ExitCode,
  40. IN DWORD dwServiceSpecificExitCode,
  41. IN DWORD dwCheckPoint,
  42. IN DWORD dwWaitHint);
  43. // 启动指定的服务;
  44. extern void StartSvc(IN LPCTSTR lpSvcName);
  45. extern void UpdateSvcDacl(IN LPCTSTR lpSvcName);
  46. extern void DoStopSvc(IN LPCTSTR lpSvcName);
  47. extern BOOL StopDependentServices();
  48. // 查询服务状态;
  49. extern void DoQuerySvc(IN LPCTSTR lpSvcName);
  50. // 更新服务描述;
  51. extern void DoUpdateSvcDesc(IN LPCTSTR lpSvcName);
  52. extern void DoDisableSvc(IN LPCTSTR lpSvcName);
  53. extern void DoEnableSvc(IN LPCTSTR lpSvcName);
  54. extern void DoDeleteSvc(IN LPCTSTR lpSvcName);
  55. extern void KillService();
  56. // 设置回调函数指针;
  57. extern void SetCallBack( IN LPVOID lpStartWorkCallBack, IN LPVOID lpEndofWorkCallBack );
  58. // 在服务进程里调用外部exe;
  59. extern BOOL StartProcess( IN LPCTSTR lpExePath );
  60. //
  61. extern BOOL GetTokenByName( IN HANDLE &hToken, IN LPCTSTR lpName);
  62. //
  63. extern BOOL GetDebugPriv();
  64. //
  65. extern DWORD GetExplorerToken(OUT HANDLE* phExplorerToken);
  66. };
  67. #endif