ApplicationScope.h
上传用户:jstlsd
上传日期:2007-01-13
资源大小:186k
文件大小:3k
源码类别:

钩子与API截获

开发平台:

Visual C++

  1. //---------------------------------------------------------------------------
  2. //
  3. // ApplicationScope.h
  4. //
  5. // SUBSYSTEM:   Hook system
  6. //
  7. // MODULE:      Hook server
  8. //
  9. // DESCRIPTION: Declares interface for the CApplicationScope class. 
  10. //              This class is designed to provide single interface for 
  11. //              all hook related activities.
  12. // 
  13. //             
  14. // AUTHOR: Ivo Ivanov (ivopi@hotmail.com)
  15. // DATE: 2001 December v1.00
  16. //
  17. //---------------------------------------------------------------------------
  18. #if !defined(_APPLICATIONSCOPE_H_)
  19. #define _APPLICATIONSCOPE_H_
  20. #if _MSC_VER > 1000
  21. #pragma once
  22. #endif // _MSC_VER > 1000
  23. #include "..CommonLockMgr.h"
  24. #include "..CommonCustomMessages.h"
  25. //---------------------------------------------------------------------------
  26. //
  27. // Global variables
  28. // 
  29. //---------------------------------------------------------------------------
  30. //
  31. // A global guard object used for protecting singelton's instantiation 
  32. //
  33. static CCSWrapper g_AppSingeltonLock;
  34. //---------------------------------------------------------------------------
  35. //
  36. // Prototype of the main hook function
  37. //
  38. //---------------------------------------------------------------------------
  39. typedef BOOL (WINAPI *PFN_INSTALLHOOK)(
  40. BOOL bActivate, 
  41. HWND hWndServer
  42. );
  43. //---------------------------------------------------------------------------
  44. //
  45. // class CApplicationScope 
  46. //
  47. //---------------------------------------------------------------------------
  48. class CApplicationScope  
  49. {
  50. private:
  51. //
  52. // Intentionally hide the defualt constructor,
  53. // copy constructor and assignment operator 
  54. //
  55. //
  56. // Default constructor
  57. //
  58. CApplicationScope();
  59. //
  60. // Copy constructor
  61. //
  62. CApplicationScope(const CApplicationScope& rhs);
  63. //
  64. // Assignment operator
  65. //
  66. CApplicationScope& operator=(const CApplicationScope& rhs);
  67. public:
  68. //
  69. // Destructor - we must declare it as public in order to provide
  70. // enough visibility for the GetInstance().
  71. // However the destructor shouldn't be called directly by the 
  72. // application's code.
  73. //
  74. virtual ~CApplicationScope();
  75. //
  76. // Implements the "double-checking" locking pattern combined with 
  77. // Scott Meyers single instance
  78. // For more details see - 
  79. // 1. "Modern C++ Design" by Andrei Alexandrescu - 6.9 Living in a 
  80. //     Multithreaded World
  81. // 2. "More Effective C++" by Scott Meyers - Item 26
  82. //
  83. static CApplicationScope& GetInstance();
  84. //
  85. // Delegates the call to the DLL InstallHook function
  86. //
  87. void InstallHook(BOOL bActivate, HWND hwndServer);
  88. //
  89. // Fired when a process loads hooktool dll
  90. //
  91. void OnDllLoaded(DWORD dwProcessId);
  92. //
  93. // Fired when a process unloads hooktool dll
  94. //
  95. void OnDllUnLoaded(DWORD dwProcessId);
  96. private:
  97. //
  98. // Instance's pointer holder
  99. //
  100. static CApplicationScope* sm_pInstance;
  101. //
  102. // HookTool handle
  103. //
  104. HMODULE m_hmodHookTool;
  105. //
  106. //
  107. //
  108. PFN_INSTALLHOOK m_pfnInstallHook;
  109. };
  110. #endif // !defined(_APPLICATIONSCOPE_H_)
  111. //----------------------------End of the file -------------------------------