home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / dbmsg / oledb / tablecopy / spy.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-03-12  |  2.6 KB  |  89 lines

  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.  
  11. #ifndef _SPY_H_
  12. #define _SPY_H_
  13.  
  14.  
  15. /////////////////////////////////////////////////////////////////////////////
  16. // Includes
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #include "objidl.h" //IMallocSpy
  20. #include "Common.h" //ASSERT
  21. #include "List.h"   //CList
  22.  
  23.  
  24.  
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CMallocSpy
  27. //
  28. /////////////////////////////////////////////////////////////////////////////
  29. class CMallocSpy : public IMallocSpy
  30. {
  31. public:
  32.     CMallocSpy(void);
  33.     virtual ~CMallocSpy(void);
  34.  
  35.     //Interface
  36.     virtual HRESULT AddToList(void* pv);
  37.     virtual HRESULT RemoveFromList(void* pv);
  38.     virtual HRESULT DumpLeaks();
  39.  
  40.     // IUnknown methods
  41.     virtual STDMETHODIMP QueryInterface(REFIID riid, void** ppIUnknown);
  42.     virtual STDMETHODIMP_(ULONG) AddRef();
  43.     virtual STDMETHODIMP_(ULONG) Release();
  44.  
  45.     // IMallocSpy methods
  46.  
  47.     //Alloc
  48.     virtual STDMETHODIMP_(ULONG) PreAlloc(ULONG cbRequest);
  49.     virtual STDMETHODIMP_(void*) PostAlloc(void *pActual);
  50.  
  51.     //Free
  52.     virtual STDMETHODIMP_(void*) PreFree(void *pRequest, BOOL fSpyed);
  53.     virtual STDMETHODIMP_(void ) PostFree(BOOL fSpyed);
  54.  
  55.     //Realloc
  56.     virtual STDMETHODIMP_(ULONG) PreRealloc(void *pRequest, ULONG cbRequest, void **ppNewRequest, BOOL fSpyed);
  57.     virtual STDMETHODIMP_(void*) PostRealloc(void *pActual, BOOL fSpyed);
  58.  
  59.     //GetSize
  60.     virtual STDMETHODIMP_(void*) PreGetSize(void *pRequest, BOOL fSpyed);
  61.     virtual STDMETHODIMP_(ULONG) PostGetSize(ULONG cbActual, BOOL fSpyed);
  62.  
  63.     //DidAlloc
  64.     virtual STDMETHODIMP_(void*) PreDidAlloc(void *pRequest, BOOL fSpyed);
  65.     virtual STDMETHODIMP_(BOOL)  PostDidAlloc(void *pRequest, BOOL fSpyed, BOOL fActual);
  66.  
  67.     //HeapMinimize
  68.     virtual STDMETHODIMP_(void ) PreHeapMinimize();
  69.     virtual STDMETHODIMP_(void ) PostHeapMinimize();
  70.  
  71.  
  72. private:
  73.     ULONG    m_cRef;            //Reference count
  74.     ULONG    m_cbRequest;        //Bytes requested
  75.  
  76.     CList<void*> CAllocList;    //List to keep track of leaks
  77. };
  78.  
  79. /////////////////////////////////////////////////////////////////////////////
  80. // Registration
  81. //
  82. /////////////////////////////////////////////////////////////////////////////
  83. HRESULT MallocSpyRegister(CMallocSpy** ppCMallocSpy);
  84. HRESULT MallocSpyUnRegister(CMallocSpy* pCMallocSpy);
  85. HRESULT MallocSpyDump(CMallocSpy* pCMallocSpy);
  86.  
  87.  
  88. #endif // _SPY_H_
  89.