163 lines
3.3 KiB
C++
163 lines
3.3 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// 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 <malloc.h>
|
|
|
|
// Bind GUID definitions in
|
|
#include <initguid.h>
|
|
#include <coguid.h>
|
|
|
|
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);
|
|
}
|