Added new functions (from Win98)
[wine/dcerpc.git] / ole / oleobj.c
blobcc4427d6641b357672f4bb130152db8632a8640a
1 /*
2 * OLE2 COM objects
4 * Copyright 1998 Eric Kohl
5 */
8 #include "ole.h"
9 #include "ole2.h"
10 #include "winerror.h"
11 #include "windows.h"
12 #include "wine/obj_base.h"
13 #include "wine/obj_storage.h"
14 #include "wine/obj_moniker.h"
15 #include "wine/obj_dataobject.h"
16 #include "oleobj.h"
17 #include "debug.h"
20 #define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
21 #define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
22 #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
25 /**************************************************************************
26 * IOleAdviseHolder Implementation
28 static HRESULT WINAPI IOleAdviseHolder_QueryInterface(LPOLEADVISEHOLDER,REFIID,LPVOID*);
29 static ULONG WINAPI IOleAdviseHolder_AddRef(LPOLEADVISEHOLDER);
30 static ULONG WINAPI IOleAdviseHolder_Release(LPOLEADVISEHOLDER);
31 static HRESULT WINAPI IOleAdviseHolder_Advise(LPOLEADVISEHOLDER, IAdviseSink*, DWORD*);
32 static HRESULT WINAPI IOleAdviseHolder_Unadvise (LPOLEADVISEHOLDER, DWORD);
33 static HRESULT WINAPI IOleAdviseHolder_EnumAdvise (LPOLEADVISEHOLDER, IEnumSTATDATA **);
34 static HRESULT WINAPI IOleAdviseHolder_SendOnRename (LPOLEADVISEHOLDER, IMoniker *);
35 static HRESULT WINAPI IOleAdviseHolder_SendOnSave (LPOLEADVISEHOLDER this);
36 static HRESULT WINAPI IOleAdviseHolder_SendOnClose (LPOLEADVISEHOLDER this);
39 /**************************************************************************
40 * IOleAdviseHolder_VTable
42 static IOleAdviseHolder_VTable oahvt =
44 IOleAdviseHolder_QueryInterface,
45 IOleAdviseHolder_AddRef,
46 IOleAdviseHolder_Release,
47 IOleAdviseHolder_Advise,
48 IOleAdviseHolder_Unadvise,
49 IOleAdviseHolder_EnumAdvise,
50 IOleAdviseHolder_SendOnRename,
51 IOleAdviseHolder_SendOnSave,
52 IOleAdviseHolder_SendOnClose
55 /**************************************************************************
56 * IOleAdviseHolder_Constructor
59 LPOLEADVISEHOLDER IOleAdviseHolder_Constructor()
61 LPOLEADVISEHOLDER lpoah;
63 lpoah= (LPOLEADVISEHOLDER)HeapAlloc(GetProcessHeap(),0,sizeof(IOleAdviseHolder));
64 lpoah->ref = 1;
65 lpoah->lpvtbl = &oahvt;
66 FIXME (ole, "(%p)->()\n", lpoah);
68 return lpoah;
71 /**************************************************************************
72 * IOleAdviseHolder_QueryInterface
74 static HRESULT WINAPI
75 IOleAdviseHolder_QueryInterface (LPOLEADVISEHOLDER this, REFIID riid, LPVOID *ppvObj)
77 char xriid[50];
78 WINE_StringFromCLSID((LPCLSID)riid,xriid);
79 FIXME (ole, "(%p)->(\n\tIID:\t%s)\n", this, xriid);
81 *ppvObj = NULL;
83 if(IsEqualIID(riid, &IID_IUnknown)) {
84 /* IUnknown */
85 *ppvObj = this;
87 else if(IsEqualIID(riid, &IID_IOleAdviseHolder)) {
88 /* IOleAdviseHolder */
89 *ppvObj = (IOleAdviseHolder*) this;
92 if(*ppvObj) {
93 (*(LPOLEADVISEHOLDER*)ppvObj)->lpvtbl->fnAddRef(this);
94 FIXME (ole, "-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj);
95 return S_OK;
98 FIXME (ole, "-- Interface: E_NOINTERFACE\n");
99 return E_NOINTERFACE;
102 /******************************************************************************
103 * IOleAdviseHolder_AddRef
105 static ULONG WINAPI
106 IOleAdviseHolder_AddRef (LPOLEADVISEHOLDER this)
108 FIXME (ole, "(%p)->(count=%lu)\n", this, this->ref);
109 return ++(this->ref);
112 /******************************************************************************
113 * IOleAdviseHolder_Release
115 static ULONG WINAPI
116 IOleAdviseHolder_Release (LPOLEADVISEHOLDER this)
118 FIXME (ole, "(%p)->(count=%lu)\n", this, this->ref);
119 if (!--(this->ref)) {
120 FIXME (ole, "-- destroying IOleAdviseHolder(%p)\n", this);
121 HeapFree(GetProcessHeap(),0,this);
122 return 0;
124 return this->ref;
127 /******************************************************************************
128 * IOleAdviseHolder_Advise
130 static HRESULT WINAPI
131 IOleAdviseHolder_Advise (LPOLEADVISEHOLDER this,
132 IAdviseSink *pAdvise, DWORD *pdwConnection)
134 FIXME (ole, "(%p)->(%p %p)\n", this, pAdvise, pdwConnection);
136 *pdwConnection = 0;
138 return S_OK;
141 /******************************************************************************
142 * IOleAdviseHolder_Unadvise
144 static HRESULT WINAPI
145 IOleAdviseHolder_Unadvise (LPOLEADVISEHOLDER this, DWORD dwConnection)
147 FIXME (ole, "(%p)->(%lu)\n", this, dwConnection);
149 return S_OK;
152 /******************************************************************************
153 * IOleAdviseHolder_EnumAdvise
155 static HRESULT WINAPI
156 IOleAdviseHolder_EnumAdvise (LPOLEADVISEHOLDER this, IEnumSTATDATA **ppenumAdvise)
158 FIXME (ole, "(%p)->(%p)\n", this, ppenumAdvise);
160 *ppenumAdvise = NULL;
162 return S_OK;
165 /******************************************************************************
166 * IOleAdviseHolder_SendOnRename
168 static HRESULT WINAPI
169 IOleAdviseHolder_SendOnRename (LPOLEADVISEHOLDER this, IMoniker *pmk)
171 FIXME (ole, "(%p)->(%p)\n", this, pmk);
174 return S_OK;
177 /******************************************************************************
178 * IOleAdviseHolder_SendOnSave
180 static HRESULT WINAPI
181 IOleAdviseHolder_SendOnSave (LPOLEADVISEHOLDER this)
183 FIXME (ole, "(%p)\n", this);
186 return S_OK;
189 /******************************************************************************
190 * IOleAdviseHolder_SendOnClose
192 static HRESULT WINAPI
193 IOleAdviseHolder_SendOnClose (LPOLEADVISEHOLDER this)
195 FIXME (ole, "(%p)\n", this);
198 return S_OK;
201 /***********************************************************************
202 * API functions
205 /***********************************************************************
206 * CreateOleAdviseHolder [OLE32.59]
208 HRESULT WINAPI CreateOleAdviseHolder32 (LPOLEADVISEHOLDER *ppOAHolder)
210 FIXME(ole,"(%p): stub!\n", ppOAHolder);
212 *ppOAHolder = IOleAdviseHolder_Constructor ();
213 if (*ppOAHolder)
214 return S_OK;
216 *ppOAHolder = 0;
217 return E_OUTOFMEMORY;