//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1993. // // File: compob32.cxx // // Contents: Stub compobj for Chicago // // History: 09-Sep-93 DrewB Created // //---------------------------------------------------------------------------- #include "pch.cxx" #pragma hdrstop #include // Bind GUID definitions in #include #include typedef void *LPCOCS; class CMalloc : public IMalloc { public: // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj); STDMETHOD_(ULONG,AddRef) (THIS) ; STDMETHOD_(ULONG,Release) (THIS); // *** IMalloc methods *** STDMETHOD_(void FAR*, Alloc) (THIS_ ULONG cb); STDMETHOD_(void FAR*, Realloc) (THIS_ void FAR* pv, ULONG cb); STDMETHOD_(void, Free) (THIS_ void FAR* pv); STDMETHOD_(ULONG, GetSize) (THIS_ void FAR* pv); STDMETHOD_(int, DidAlloc) (THIS_ void FAR* pv); STDMETHOD_(void, HeapMinimize) (THIS); }; STDMETHODIMP CMalloc::QueryInterface(REFIID riid, void **ppv) { if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IMalloc)) { *ppv = (IMalloc *)this; CMalloc::AddRef(); return NOERROR; } *ppv = NULL; return ResultFromScode(E_NOINTERFACE); } STDMETHODIMP_(ULONG) CMalloc::AddRef(void) { return 1; } STDMETHODIMP_(ULONG) CMalloc::Release(void) { return 0; } STDMETHODIMP_(void FAR*) CMalloc::Alloc(THIS_ ULONG cb) { return malloc(cb); } STDMETHODIMP_(void FAR*) CMalloc::Realloc(THIS_ void FAR* pv, ULONG cb) { return realloc(pv, cb); } STDMETHODIMP_(void) CMalloc::Free(THIS_ void FAR* pv) { free(pv); } STDMETHODIMP_(ULONG) CMalloc::GetSize(THIS_ void FAR* pv) { return _msize(pv); } STDMETHODIMP_(int) CMalloc::DidAlloc(THIS_ void FAR* pv) { return TRUE; } STDMETHODIMP_(void) CMalloc::HeapMinimize(THIS) { } static CMalloc _cm; STDAPI CoInitialize(IMalloc *pm) { return NOERROR; } STDAPI_(void) CoUninitialize(void) { } STDAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC FAR* ppMalloc) { *ppMalloc = (IMalloc *)&_cm; return NOERROR; } STDAPI_(BOOL) IsValidPtrIn( const void FAR* pv, UINT cb ) { return pv == NULL || !IsBadReadPtr(pv, cb); } STDAPI_(BOOL) IsValidPtrOut( void FAR* pv, UINT cb ) { return !IsBadWritePtr(pv, cb); } STDAPI_(BOOL) IsValidInterface( void FAR* pv ) { return !IsBadReadPtr(pv, sizeof(void *)) && !IsBadReadPtr(*(void **)pv, sizeof(void *)) && !IsBadCodePtr(**(FARPROC **)pv); } STDAPI_(BOOL) IsValidIid( REFIID riid ) { return !IsBadReadPtr(&riid, sizeof(IID)); } STDAPI_(BOOL) IsEqualGUID(REFGUID rguid1, REFGUID rguid2) { return memcmp(&rguid1, &rguid2, sizeof(GUID)) == 0; } STDAPI_(void *) SharedMemAlloc(ULONG cNeeded, DWORD dwReserved) { return malloc(cNeeded); } STDAPI_(void) SharedMemFree(void *pmem, DWORD dwReserved) { free(pmem); } STDAPI_(DWORD) CoGetCurrentProcess(void) { return 1; } STDAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags) { return ResultFromScode(E_UNEXPECTED); } STDAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID FAR* ppv) { return ResultFromScode(E_UNEXPECTED); }