TaskAllocator.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:1k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* TaskAllocator.h */
  2. #ifndef __INCTaskAllocator_h
  3. #define __INCTaskAllocator_h
  4. #include "comLib.h"
  5. #include "private/comMisc.h"
  6. ////////////////////////////////////////////////////////////////////////////
  7. //
  8. // VxTaskAllocator - this class *CANNOT* be implemented using the
  9. // CComObject classes because it is the object that allows those
  10. // objects to allocate memory, and this would be self-referential.
  11. //
  12. // This allocator just uses malloc() and friends, so it utilises the
  13. // system memory partition.
  14. //
  15. // resolve clashes in networking headers
  16. #ifdef Free
  17. #undef Free
  18. #endif
  19. class VxTaskAllocator : public IMalloc
  20.     {
  21.   public:
  22.     VxTaskAllocator ();
  23.     virtual ~VxTaskAllocator ();
  24.     // IUnknown methods...
  25.     STDMETHOD_(ULONG, AddRef) ();
  26.     STDMETHOD_(ULONG, Release) ();
  27.     STDMETHOD(QueryInterface) (REFIID riid, void** ppv);
  28.     
  29.     // IMalloc methods
  30.     void* STDMETHODCALLTYPE Alloc (ULONG cb);
  31.     void* STDMETHODCALLTYPE Realloc (void *pv, ULONG cb);
  32.     void  STDMETHODCALLTYPE Free (void *pv);
  33.     ULONG STDMETHODCALLTYPE GetSize (void *pv);
  34.     int   STDMETHODCALLTYPE DidAlloc (void *pv);
  35.     void  STDMETHODCALLTYPE HeapMinimize ();
  36.  private:
  37.     DWORD m_dwRefCount;
  38.     VxMutex m_mutex;
  39.     };
  40. extern HRESULT comCoGetMalloc (DWORD dwMemContext, IMalloc** ppMalloc);
  41. #endif