4 * Copyright 1997 Marcus Meissner
14 #include "interfaces.h"
19 static ULONG WINAPI
IUnknown_AddRef(LPUNKNOWN
this) {
20 dprintf_relay(stddeb
,"IUnknown(%p)->AddRef()\n",this);
23 static ULONG WINAPI
IUnknown_Release(LPUNKNOWN
this) {
24 dprintf_relay(stddeb
,"IUnknown(%p)->Release()\n",this);
26 HeapFree(GetProcessHeap(),0,this);
32 static HRESULT WINAPI
IUnknown_QueryInterface(LPUNKNOWN
this,REFIID refiid
,LPVOID
*obj
) {
35 StringFromCLSID((LPCLSID
)refiid
,xrefiid
);
36 dprintf_relay(stddeb
,"IUnknown(%p)->QueryInterface(%s,%p)\n",this,xrefiid
,obj
);
38 if (!memcmp(&IID_IUnknown
,refiid
,sizeof(IID_IUnknown
))) {
42 return OLE_E_ENUM_NOMORE
;
45 static IUnknown_VTable uvt
= {
46 IUnknown_QueryInterface
,
53 IUnknown_Constructor() {
56 fprintf(stderr
,"cloning IUnknown.\n");
57 unk
= (LPUNKNOWN
)HeapAlloc(GetProcessHeap(),0,sizeof(IUnknown
));
63 static ULONG WINAPI
IMalloc_AddRef(LPMALLOC
this) {
64 dprintf_relay(stddeb
,"IMalloc(%p)->AddRef()\n",this);
65 return 1; /* cannot be freed */
68 static ULONG WINAPI
IMalloc_Release(LPMALLOC
this) {
69 dprintf_relay(stddeb
,"IMalloc(%p)->Release()\n",this);
70 return 1; /* cannot be freed */
73 static HRESULT WINAPI
IMalloc_QueryInterface(LPMALLOC
this,REFIID refiid
,LPVOID
*obj
) {
76 StringFromCLSID((LPCLSID
)refiid
,xrefiid
);
77 dprintf_relay(stddeb
,"IMalloc(%p)->QueryInterface(%s,%p)\n",this,xrefiid
,obj
);
78 if ( !memcmp(&IID_IUnknown
,refiid
,sizeof(IID_IUnknown
)) ||
79 !memcmp(&IID_IMalloc
,refiid
,sizeof(IID_IMalloc
))
84 return OLE_E_ENUM_NOMORE
;
87 static LPVOID WINAPI
IMalloc_Alloc(LPMALLOC
this,DWORD cb
) {
88 dprintf_relay(stddeb
,"IMalloc(%p)->Alloc(%ld)\n",this,cb
);
89 return HeapAlloc(GetProcessHeap(),0,cb
);
92 static LPVOID WINAPI
IMalloc_Realloc(LPMALLOC
this,LPVOID pv
,DWORD cb
) {
93 dprintf_relay(stddeb
,"IMalloc(%p)->Realloc(%p,%ld)\n",this,pv
,cb
);
94 return HeapReAlloc(GetProcessHeap(),0,pv
,cb
);
96 static VOID WINAPI
IMalloc_Free(LPMALLOC
this,LPVOID pv
) {
97 dprintf_relay(stddeb
,"IMalloc(%p)->Free(%p)\n",this,pv
);
98 HeapFree(GetProcessHeap(),0,pv
);
101 static DWORD WINAPI
IMalloc_GetSize(LPMALLOC
this,LPVOID pv
) {
102 dprintf_relay(stddeb
,"IMalloc(%p)->GetSize(%p)\n",this,pv
);
103 return HeapSize(GetProcessHeap(),0,pv
);
106 static LPINT32 WINAPI
IMalloc_DidAlloc(LPMALLOC
this,LPVOID pv
) {
107 dprintf_relay(stddeb
,"IMalloc(%p)->DidAlloc(%p)\n",this,pv
);
108 return (LPINT32
)0xffffffff;
110 static LPVOID WINAPI
IMalloc_HeapMinimize(LPMALLOC
this) {
111 dprintf_relay(stddeb
,"IMalloc(%p)->HeapMinimize()\n",this);
115 static IMalloc_VTable VT_IMalloc
= {
116 IMalloc_QueryInterface
,
124 IMalloc_HeapMinimize
,
128 IMalloc_Constructor() {
131 fprintf(stderr
,"cloning IMalloc\n");
132 this = (LPMALLOC
)HeapAlloc(GetProcessHeap(),0,sizeof(IMalloc
));
133 this->lpvtbl
= &VT_IMalloc
;