Changeset 6711 for trunk/src/ole32/ifs.c
- Timestamp:
- Sep 15, 2001, 11:32:00 AM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ole32/ifs.c
r6648 r6711 1 /* $Id: ifs.c,v 1.2 2001-09-05 13:17:09 bird Exp $ */2 1 /* 3 * 2 * basic interfaces 4 3 * 5 * Copyright 1997Marcus Meissner4 * Copyright 1997 Marcus Meissner 6 5 */ 7 6 … … 31 30 32 31 /****************************************************************************** 33 * IUnknown_AddRef[VTABLE:IUNKNOWN.1]34 */ 35 static ULONG WINAPI IUnknown_fnAddRef(LPUNKNOWN iface) { 36 37 38 32 * IUnknown_AddRef [VTABLE:IUNKNOWN.1] 33 */ 34 static ULONG WINAPI IUnknown_fnAddRef(LPUNKNOWN iface) { 35 ICOM_THIS(IUnknownImpl,iface); 36 TRACE("(%p)->AddRef()\n",This); 37 return ++(This->ref); 39 38 } 40 39 … … 43 42 */ 44 43 static ULONG WINAPI IUnknown_fnRelease(LPUNKNOWN iface) { 45 46 47 48 49 50 51 44 ICOM_THIS(IUnknownImpl,iface); 45 TRACE("(%p)->Release()\n",This); 46 if (!--(This->ref)) { 47 HeapFree(GetProcessHeap(),0,This); 48 return 0; 49 } 50 return This->ref; 52 51 } 53 52 … … 56 55 */ 57 56 static HRESULT WINAPI IUnknown_fnQueryInterface(LPUNKNOWN iface,REFIID refiid,LPVOID *obj) { 58 59 60 61 62 63 64 return 0; 65 66 return OLE_E_ENUM_NOMORE; 67 } 68 69 static ICOM_VTABLE(IUnknown) uvt = 70 { 71 72 73 74 57 ICOM_THIS(IUnknownImpl,iface); 58 59 TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj); 60 61 if (!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown))) { 62 *obj = This; 63 return 0; 64 } 65 return OLE_E_ENUM_NOMORE; 66 } 67 68 static ICOM_VTABLE(IUnknown) uvt = 69 { 70 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 71 IUnknown_fnQueryInterface, 72 IUnknown_fnAddRef, 73 IUnknown_fnRelease 75 74 }; 76 75 … … 80 79 LPUNKNOWN 81 80 IUnknown_Constructor() { 82 IUnknownImpl*unk;83 84 85 ICOM_VTBL(unk)= &uvt;86 unk->ref= 1;87 81 IUnknownImpl* unk; 82 83 unk = (IUnknownImpl*)HeapAlloc(GetProcessHeap(),0,sizeof(IUnknownImpl)); 84 ICOM_VTBL(unk) = &uvt; 85 unk->ref = 1; 86 return (LPUNKNOWN)unk; 88 87 } 89 88 … … 101 100 102 101 /****************************************************************************** 103 * IMalloc16_QueryInterface[COMPOBJ.500]102 * IMalloc16_QueryInterface [COMPOBJ.500] 104 103 */ 105 104 HRESULT WINAPI IMalloc16_fnQueryInterface(IMalloc16* iface,REFIID refiid,LPVOID *obj) { 106 105 ICOM_THIS(IMalloc16Impl,iface); 107 106 108 109 if (!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||110 111 112 113 114 115 return OLE_E_ENUM_NOMORE; 116 } 117 118 /****************************************************************************** 119 * IMalloc16_AddRef[COMPOBJ.501]107 TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj); 108 if ( !memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) || 109 !memcmp(&IID_IMalloc,refiid,sizeof(IID_IMalloc)) 110 ) { 111 *obj = This; 112 return 0; 113 } 114 return OLE_E_ENUM_NOMORE; 115 } 116 117 /****************************************************************************** 118 * IMalloc16_AddRef [COMPOBJ.501] 120 119 */ 121 120 ULONG WINAPI IMalloc16_fnAddRef(IMalloc16* iface) { 122 121 ICOM_THIS(IMalloc16Impl,iface); 123 124 125 } 126 127 /****************************************************************************** 128 * IMalloc16_Release[COMPOBJ.502]122 TRACE("(%p)->AddRef()\n",This); 123 return 1; /* cannot be freed */ 124 } 125 126 /****************************************************************************** 127 * IMalloc16_Release [COMPOBJ.502] 129 128 */ 130 129 ULONG WINAPI IMalloc16_fnRelease(IMalloc16* iface) { 131 130 ICOM_THIS(IMalloc16Impl,iface); 132 133 131 TRACE("(%p)->Release()\n",This); 132 return 1; /* cannot be freed */ 134 133 } 135 134 … … 139 138 SEGPTR WINAPI IMalloc16_fnAlloc(IMalloc16* iface,DWORD cb) { 140 139 ICOM_THIS(IMalloc16Impl,iface); 141 140 TRACE("(%p)->Alloc(%ld)\n",This,cb); 142 141 return MapLS( HeapAlloc( GetProcessHeap(), HEAP_WINE_SEGPTR, cb ) ); 143 142 } … … 166 165 DWORD WINAPI IMalloc16_fnGetSize(const IMalloc16* iface,SEGPTR pv) 167 166 { 168 167 ICOM_CTHIS(IMalloc16Impl,iface); 169 168 TRACE("(%p)->GetSize(%08lx)\n",This,pv); 170 169 return HeapSize( GetProcessHeap(), HEAP_WINE_SEGPTR, MapSL(pv) ); … … 176 175 INT16 WINAPI IMalloc16_fnDidAlloc(const IMalloc16* iface,LPVOID pv) { 177 176 ICOM_CTHIS(IMalloc16,iface); 178 179 177 TRACE("(%p)->DidAlloc(%p)\n",This,pv); 178 return (INT16)-1; 180 179 } 181 180 … … 185 184 LPVOID WINAPI IMalloc16_fnHeapMinimize(IMalloc16* iface) { 186 185 ICOM_THIS(IMalloc16Impl,iface); 187 188 186 TRACE("(%p)->HeapMinimize()\n",This); 187 return NULL; 189 188 } 190 189 … … 196 195 LPMALLOC16 197 196 IMalloc16_Constructor() { 198 IMalloc16Impl*This;199 HMODULE16 200 201 197 IMalloc16Impl* This; 198 HMODULE16 hcomp = GetModuleHandle16("COMPOBJ"); 199 200 This = (IMalloc16Impl*)SEGPTR_NEW(IMalloc16Impl); 202 201 if (!msegvt16) { 203 202 msegvt16 = SEGPTR_NEW(ICOM_VTABLE(IMalloc16)); … … 214 213 VTENT(HeapMinimize); 215 214 #undef VTENT 216 215 } 217 216 ICOM_VTBL(This) = (ICOM_VTABLE(IMalloc16)*)SEGPTR_GET(msegvt16); 218 219 217 This->ref = 1; 218 return (LPMALLOC16)SEGPTR_GET(This); 220 219 } 221 220 #endif … … 231 230 232 231 /****************************************************************************** 233 * IMalloc32_QueryInterface[VTABLE]232 * IMalloc32_QueryInterface [VTABLE] 234 233 */ 235 234 static HRESULT WINAPI IMalloc_fnQueryInterface(LPMALLOC iface,REFIID refiid,LPVOID *obj) { 236 237 238 239 if (!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||240 241 242 243 244 245 return OLE_E_ENUM_NOMORE; 246 } 247 248 /****************************************************************************** 249 * IMalloc32_AddRef[VTABLE]235 ICOM_THIS(IMalloc32Impl,iface); 236 237 TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj); 238 if ( !memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) || 239 !memcmp(&IID_IMalloc,refiid,sizeof(IID_IMalloc)) 240 ) { 241 *obj = This; 242 return S_OK; 243 } 244 return OLE_E_ENUM_NOMORE; 245 } 246 247 /****************************************************************************** 248 * IMalloc32_AddRef [VTABLE] 250 249 */ 251 250 static ULONG WINAPI IMalloc_fnAddRef(LPMALLOC iface) { 252 253 254 255 } 256 257 /****************************************************************************** 258 * IMalloc32_Release[VTABLE]251 ICOM_THIS(IMalloc32Impl,iface); 252 TRACE("(%p)->AddRef()\n",This); 253 return 1; /* cannot be freed */ 254 } 255 256 /****************************************************************************** 257 * IMalloc32_Release [VTABLE] 259 258 */ 260 259 static ULONG WINAPI IMalloc_fnRelease(LPMALLOC iface) { 261 262 263 260 ICOM_THIS(IMalloc32Impl,iface); 261 TRACE("(%p)->Release()\n",This); 262 return 1; /* cannot be freed */ 264 263 } 265 264 … … 268 267 */ 269 268 static LPVOID WINAPI IMalloc_fnAlloc(LPMALLOC iface,DWORD cb) { 270 271 272 273 274 269 LPVOID addr; 270 ICOM_THIS(IMalloc32Impl,iface); 271 addr = HeapAlloc(GetProcessHeap(),0,cb); 272 TRACE("(%p)->Alloc(%ld) -> %p\n",This,cb,addr); 273 return addr; 275 274 } 276 275 … … 279 278 */ 280 279 static LPVOID WINAPI IMalloc_fnRealloc(LPMALLOC iface,LPVOID pv,DWORD cb) { 281 282 283 280 ICOM_THIS(IMalloc32Impl,iface); 281 TRACE("(%p)->Realloc(%p,%ld)\n",This,pv,cb); 282 return HeapReAlloc(GetProcessHeap(),0,pv,cb); 284 283 } 285 284 … … 288 287 */ 289 288 static VOID WINAPI IMalloc_fnFree(LPMALLOC iface,LPVOID pv) { 290 291 292 289 ICOM_THIS(IMalloc32Impl,iface); 290 TRACE("(%p)->Free(%p)\n",This,pv); 291 HeapFree(GetProcessHeap(),0,pv); 293 292 } 294 293 … … 297 296 */ 298 297 static DWORD WINAPI IMalloc_fnGetSize(LPMALLOC iface,LPVOID pv) { 299 300 301 298 ICOM_CTHIS(IMalloc,iface); 299 TRACE("(%p)->GetSize(%p)\n",This,pv); 300 return HeapSize(GetProcessHeap(),0,pv); 302 301 } 303 302 … … 306 305 */ 307 306 static INT WINAPI IMalloc_fnDidAlloc(LPMALLOC iface,LPVOID pv) { 308 309 310 307 ICOM_CTHIS(IMalloc32Impl,iface); 308 TRACE("(%p)->DidAlloc(%p)\n",This,pv); 309 return -1; 311 310 } 312 311 … … 315 314 */ 316 315 static VOID WINAPI IMalloc_fnHeapMinimize(LPMALLOC iface) { 317 318 319 } 320 321 static ICOM_VTABLE(IMalloc) VT_IMalloc32 = 316 ICOM_THIS(IMalloc32Impl,iface); 317 TRACE("(%p)->HeapMinimize()\n",This); 318 } 319 320 static ICOM_VTABLE(IMalloc) VT_IMalloc32 = 322 321 { 323 322 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE … … 338 337 LPMALLOC 339 338 IMalloc_Constructor() { 340 341 342 343 344 345 339 IMalloc32Impl* This; 340 341 This = (IMalloc32Impl*)HeapAlloc(GetProcessHeap(),0,sizeof(IMalloc32Impl)); 342 ICOM_VTBL(This) = &VT_IMalloc32; 343 This->ref = 1; 344 return (LPMALLOC)This; 346 345 } 347 346 … … 351 350 352 351 /****************************************************************************** 353 * IsValidInterface[OLE32.78]352 * IsValidInterface [OLE32.78] 354 353 * 355 354 * RETURNS … … 357 356 */ 358 357 BOOL WINAPI IsValidInterface( 359 LPUNKNOWN punk/* [in] interface to be tested */358 LPUNKNOWN punk /* [in] interface to be tested */ 360 359 ) { 361 362 IsBadReadPtr(punk,4)||363 IsBadReadPtr(ICOM_VTBL(punk),4)||360 return !( 361 IsBadReadPtr(punk,4) || 362 IsBadReadPtr(ICOM_VTBL(punk),4) || 364 363 #ifdef __WIN32OS2__ 365 IsBadReadPtr(ICOM_VTBL(punk)->fnQueryInterface,9)||366 364 IsBadReadPtr(ICOM_VTBL(punk)->fnQueryInterface,9) || 365 IsBadCodePtr((FARPROC)ICOM_VTBL(punk)->fnQueryInterface) 367 366 #else 368 IsBadReadPtr(ICOM_VTBL(punk)->QueryInterface,9)||369 367 IsBadReadPtr(ICOM_VTBL(punk)->QueryInterface,9) || 368 IsBadCodePtr((FARPROC)ICOM_VTBL(punk)->QueryInterface) 370 369 #endif 371 372 } 370 ); 371 }
Note:
See TracChangeset
for help on using the changeset viewer.