serviceControl.h
上传用户:ykzxjx
上传日期:2022-04-03
资源大小:1175k
文件大小:3k
开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. // (C) Copyright 1999 - 2000 Mark Roddy
  4. // All Rights Reserved
  5. //
  6. // Hollis Technology Solutions
  7. // 94 Dow Road
  8. // Hollis, NH 03049
  9. // info@hollistech.com
  10. //
  11. // Synopsis: 
  12. // 
  13. //
  14. // Version Information:
  15. //
  16. // $Header: /iphook/usr/IpMonitor/serviceControl.h 2     1/27/00 10:35p Markr $ 
  17. //
  18. ///////////////////////////////////////////////////////////////////////////////
  19. #ifndef HTS_SERVICE_CONTROL
  20. #define HTS_SERVICE_CONTROL
  21. ///////////////////////////////////////////////////////////////////////////////
  22. //
  23. // ServiceControl.h
  24. //
  25. // This class defines a service control object. The service control object provides a simple tool to
  26. // dynamically load and unload a device driver in windows nt.
  27. //
  28. // The simplest way to use this class is to allocate an instance using new, which will install load and start
  29. // your driver. Conversely delete will stop and unload your driver. 
  30. //
  31. // The public constructor will throw an integer exception if it fails.
  32. // The value of the integer exception is one of the return values from GetLastError().
  33. //
  34. // If the constructor succeeds, the driver is up and running, and the handle() method is a valid handle to the
  35. // device.
  36. //
  37. #ifndef __AFXWIN_H__
  38. #error include 'stdafx.h' before including this file for PCH
  39. #endif
  40. #include "winsvc.h"
  41. class ServiceControl {
  42. //
  43. // private data
  44. //
  45. private:
  46. HANDLE driverHandle;
  47. SC_HANDLE SchSCManager;
  48. CString DriverName;
  49. CString BinaryPath;
  50. CString DosDevice;
  51.     DWORD lastError;
  52. BOOL RemoveInDestructor;
  53. DWORD attributes;
  54.     BOOL UnloadInDestructor;
  55. BOOL ChangeIfExists;
  56. //
  57. // constructor/destructor
  58. //
  59. private:
  60. ServiceControl& operator=(const ServiceControl& lhs);
  61. ServiceControl(const ServiceControl& lhs);
  62. public:
  63. //
  64. // input: 
  65. //
  66. // Name -- the display name for the driver.
  67.     //
  68.     //  flagsAndAttributes -- how the device will be opened.
  69. //
  70. // Path -- the fully qualified path of the driver executible.
  71. // DEFAULT VALUE %SYSTEMROOT%system32drivers"Name".sys,
  72. //
  73. // DosName -- the user space visible device name (dos device name) used to access devices
  74. // supported by the driver.
  75. // DEFAULT VALUE "Name". (i.e. \.Name)
  76. //
  77. ServiceControl();
  78. ~ServiceControl();
  79. DWORD init(LPCTSTR Name, 
  80.    DWORD flagsAndAttributes=FILE_ATTRIBUTE_NORMAL, 
  81.    LPCTSTR Path=NULL, 
  82.    LPCTSTR DosName=NULL);
  83.     DWORD getError() { return lastError; }
  84. void ChangeConfig(BOOL val) { ChangeIfExists = val; }
  85. //
  86. // public methods
  87. //
  88. public:
  89. void RemoveDriverOnExit(BOOL val);
  90. HANDLE handle() { return driverHandle; }
  91.     void UnloadDriverOnExit(BOOL val) { UnloadInDestructor = val; }
  92. //
  93. // private methods
  94. //
  95. private:
  96. void LoadDriver();
  97. void UnloadDriver();
  98. BOOL InstallDriver();
  99. BOOL StartDriver();
  100. BOOL OpenDevice();
  101. BOOL StopDriver();
  102. BOOL RemoveDriver();
  103. SC_HANDLE closeSVC(SC_HANDLE scHandle) 
  104. CloseServiceHandle(scHandle); 
  105.         return (SC_HANDLE) INVALID_HANDLE_VALUE; 
  106. }
  107. void closeDevice() 
  108. CloseHandle(driverHandle); driverHandle = INVALID_HANDLE_VALUE; 
  109. }
  110. };
  111. #endif
  112. ///////////////////////////////////////////////////////////////////////////////
  113. // 
  114. // Change History Log
  115. //
  116. // $Log: /iphook/usr/IpMonitor/serviceControl.h $
  117. // 
  118. // 2     1/27/00 10:35p Markr
  119. // Prepare to release!
  120. //
  121. ///////////////////////////////////////////////////////////////////////////////