HookTypes.h
上传用户:kittypts
上传日期:2018-02-11
资源大小:241k
文件大小:2k
源码类别:

PlugIns编程

开发平台:

Visual C++

  1. /*
  2. *
  3. *  This file is
  4. *    Copyright (C) 2006-2008 Nektra S.A.
  5. *  
  6. *  This program is free software; you can redistribute it and/or modify
  7. *  it under the terms of the GNU Lesser General Public License as published by
  8. *  the Free Software Foundation; either version 2, or (at your option)
  9. *  any later version.
  10. *  
  11. *  This program is distributed in the hope that it will be useful,
  12. *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. *  GNU General Public License for more details.
  15. *  
  16. */
  17. #ifndef _HOOKTYPES_H_
  18. #define _HOOKTYPES_H_
  19. #include "yasper.h"
  20. #include "types.h"
  21. /**
  22. Hook context state
  23. */
  24. typedef enum _NktHookContextState
  25. {
  26. _ctx_none = 0,
  27. _ctx_called = 1,
  28. _ctx_skip_call = 2
  29. } NktHookContextState;
  30. /**
  31. Hooked Function Call Context
  32. */
  33. typedef struct _NktHookCallContext : NktCallContext
  34. {
  35. int state; //NktHookContextState
  36. } NktHookCallContext;
  37. /**
  38. Hook handler's params
  39. */
  40. class INktHookSimple;
  41. typedef struct
  42. {
  43. int flags;
  44. NktHookCallContext context;
  45. LPCVOID teb;
  46. INT_PTR userData;
  47. INT_PTR callCookie;
  48. INT_PTR handlerData;
  49. INktHookSimple* iHook;
  50. } NktHandlerParams;
  51. /**
  52. Hook handler function definition
  53. */
  54. typedef void (*Handler)(NktHandlerParams*);
  55. /**
  56. Common IHook Interface.
  57. */
  58. class INktHookSimple
  59. {
  60. public:
  61. virtual ~INktHookSimple() {};
  62. /**
  63. Call hooked function with specified context.
  64. */
  65. virtual void CallFunction(NktHookCallContext*) = ABSTRACT;
  66. /**
  67. Skip call and and use retVal on return.
  68. */
  69. virtual void SkipCall(NktHookCallContext*, INT_PTR retVal) = ABSTRACT;
  70. /**
  71. Force return value in call.
  72. */
  73. virtual void SetReturnValue(NktHookCallContext*, INT_PTR retVal) = ABSTRACT;
  74. /**
  75. Force lastError value in call.
  76. */
  77. virtual void SetLastError(NktHookCallContext*, INT_PTR err) = ABSTRACT;
  78. /**
  79. Are reports enabled
  80. */
  81. virtual BOOL GetEnabled() const = ABSTRACT;
  82. /**
  83. Enable reports
  84. */
  85. virtual void SetEnabled(BOOL) = ABSTRACT;
  86. };
  87. typedef yasper::ptr<INktHookSimple> IHookSimplePtr;
  88. #endif //_HOOKTYPES_H_