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

Windows编程

开发平台:

Visual C++

  1. //-----------------------------------------------------------------------------
  2. // Microsoft OLE DB TABLECOPY Sample
  3. // Copyright (C) 1995-1998 Microsoft Corporation
  4. //
  5. // @doc
  6. //
  7. // @module SPY.H
  8. //
  9. //-----------------------------------------------------------------------------------
  10. #ifndef _SPY_H_
  11. #define _SPY_H_
  12. /////////////////////////////////////////////////////////////////////////////
  13. // Includes
  14. //
  15. /////////////////////////////////////////////////////////////////////////////
  16. #include "objidl.h" //IMallocSpy
  17. #include "Common.h" //ASSERT
  18. #include "List.h"   //CList
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CMallocSpy
  21. //
  22. /////////////////////////////////////////////////////////////////////////////
  23. class CMallocSpy : public IMallocSpy
  24. {
  25. public:
  26.     CMallocSpy(void);
  27. virtual ~CMallocSpy(void);
  28. //Interface
  29. virtual HRESULT AddToList(void* pv);
  30. virtual HRESULT RemoveFromList(void* pv);
  31. virtual HRESULT DumpLeaks();
  32.     // IUnknown methods
  33.     virtual STDMETHODIMP QueryInterface(REFIID riid, void** ppIUnknown);
  34.     virtual STDMETHODIMP_(ULONG) AddRef();
  35.     virtual STDMETHODIMP_(ULONG) Release();
  36. // IMallocSpy methods
  37.     //Alloc
  38. virtual STDMETHODIMP_(ULONG) PreAlloc(ULONG cbRequest);
  39.     virtual STDMETHODIMP_(void*) PostAlloc(void *pActual);
  40.     //Free
  41. virtual STDMETHODIMP_(void*) PreFree(void *pRequest, BOOL fSpyed);
  42.     virtual STDMETHODIMP_(void ) PostFree(BOOL fSpyed);
  43.     //Realloc
  44. virtual STDMETHODIMP_(ULONG) PreRealloc(void *pRequest, ULONG cbRequest, void **ppNewRequest, BOOL fSpyed);
  45.     virtual STDMETHODIMP_(void*) PostRealloc(void *pActual, BOOL fSpyed);
  46.     //GetSize
  47. virtual STDMETHODIMP_(void*) PreGetSize(void *pRequest, BOOL fSpyed);
  48.     virtual STDMETHODIMP_(ULONG) PostGetSize(ULONG cbActual, BOOL fSpyed);
  49.     //DidAlloc
  50. virtual STDMETHODIMP_(void*) PreDidAlloc(void *pRequest, BOOL fSpyed);
  51.     virtual STDMETHODIMP_(BOOL)  PostDidAlloc(void *pRequest, BOOL fSpyed, BOOL fActual);
  52.     //HeapMinimize
  53. virtual STDMETHODIMP_(void ) PreHeapMinimize();
  54.     virtual STDMETHODIMP_(void ) PostHeapMinimize();
  55. private:
  56.     ULONG    m_cRef; //Reference count
  57.     ULONG    m_cbRequest; //Bytes requested
  58. CList<void*> CAllocList; //List to keep track of leaks
  59. };
  60. /////////////////////////////////////////////////////////////////////////////
  61. // Registration
  62. //
  63. /////////////////////////////////////////////////////////////////////////////
  64. HRESULT MallocSpyRegister(CMallocSpy** ppCMallocSpy);
  65. HRESULT MallocSpyUnRegister(CMallocSpy* pCMallocSpy);
  66. HRESULT MallocSpyDump(CMallocSpy* pCMallocSpy);
  67. #endif // _SPY_H_