Changeset 4274 for trunk/src/ole32/iunknown.cpp
- Timestamp:
- Sep 17, 2000, 12:31:07 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ole32/iunknown.cpp
r872 r4274 1 /* $Id: iunknown.cpp,v 1. 3 1999-09-08 11:29:27davidr Exp $ */1 /* $Id: iunknown.cpp,v 1.4 2000-09-17 10:31:05 davidr Exp $ */ 2 2 /* 3 3 * … … 23 23 // Local Data 24 24 // ====================================================================== 25 25 26 typedef struct 26 27 { 27 /* IUnknown fields */28 28 ICOM_VTABLE(IUnknown)* lpvtbl; 29 29 DWORD ref; 30 30 } IUnknownImpl; 31 31 32 static ULONG WIN32API IUnknown_fnAddRef(LPUNKNOWN iface); 33 static ULONG WIN32API IUnknown_fnRelease(LPUNKNOWN iface); 34 static HRESULT WIN32API IUnknown_fnQueryInterface(LPUNKNOWN iface, REFIID refiid, LPVOID * obj); 32 static ULONG WIN32API IUnknownImpl_AddRef(LPUNKNOWN iface); 33 static ULONG WIN32API IUnknownImpl_Release(LPUNKNOWN iface); 34 static HRESULT WIN32API IUnknownImpl_QueryInterface(LPUNKNOWN iface, 35 REFIID riid, LPVOID * ppvObject); 35 36 36 static ICOM_VTABLE(IUnknown) uvt =37 static ICOM_VTABLE(IUnknown) IUnknownVt = 37 38 { 38 IUnknown _fnQueryInterface,39 IUnknown _fnAddRef,40 IUnknown _fnRelease39 IUnknownImpl_QueryInterface, 40 IUnknownImpl_AddRef, 41 IUnknownImpl_Release 41 42 }; 42 43 … … 46 47 47 48 // ---------------------------------------------------------------------- 48 // IUnknown _fnAddRef49 // IUnknownImpl_AddRef 49 50 // ---------------------------------------------------------------------- 50 static ULONG WIN32API IUnknown _fnAddRef(LPUNKNOWN iface)51 static ULONG WIN32API IUnknownImpl_AddRef(LPUNKNOWN iface) 51 52 { 52 53 ICOM_THIS(IUnknownImpl, iface); 53 54 54 dprintf(("OLE32: (%p)->AddRef()", This));55 dprintf(("OLE32: IUnknown(%p)->AddRef()", This)); 55 56 56 57 return ++(This->ref); … … 58 59 59 60 // ---------------------------------------------------------------------- 60 // IUnknown _fnRelease61 // IUnknownImpl_Release 61 62 // ---------------------------------------------------------------------- 62 static ULONG WIN32API IUnknown _fnRelease(LPUNKNOWN iface)63 static ULONG WIN32API IUnknownImpl_Release(LPUNKNOWN iface) 63 64 { 64 65 ICOM_THIS(IUnknownImpl, iface); 65 66 66 dprintf(("OLE32: (%p)->Release()\n", This));67 dprintf(("OLE32: IUnknown(%p)->Release()\n", This)); 67 68 68 69 if (--(This->ref) == 0) … … 75 76 76 77 // ---------------------------------------------------------------------- 77 // I nitialize78 // IUnknownImpl_QueryInterface 78 79 // ---------------------------------------------------------------------- 79 static HRESULT WIN32API IUnknown _fnQueryInterface(LPUNKNOWN iface, REFIID refiid, LPVOID *obj)80 static HRESULT WIN32API IUnknownImpl_QueryInterface(LPUNKNOWN iface, REFIID riid, LPVOID *ppvObject) 80 81 { 81 82 ICOM_THIS(IUnknownImpl, iface); 82 83 83 84 #ifdef DEBUG 84 oStringA tR efiid(refiid);85 dprintf(("OLE32: (%p)->QueryInterface(%s, %p)\n", This, (char *)tRefiid, obj));85 oStringA tRiid(riid); 86 dprintf(("OLE32: IUnknown(%p)->QueryInterface(%s)\n", This, (char *)tRiid)); 86 87 #endif 87 88 88 if ( !memcmp(&IID_IUnknown, refiid, sizeof(IID_IUnknown)))89 if (IsEqualIID(&IID_IUnknown, riid)) 89 90 { 90 *obj = This;91 return 0;91 dprintf((" ->IUnknown")); 92 *ppvObject = &(This->lpvtbl); 92 93 } 93 return OLE_E_ENUM_NOMORE; 94 else 95 { 96 dprintf((" ->E_NOINTERFACE")); 97 return E_NOINTERFACE; 98 } 99 100 // Query Interface always increases the reference count by one... 101 IUnknownImpl_AddRef(iface); 102 103 return S_OK; 94 104 } 95 105 96 106 // ---------------------------------------------------------------------- 97 // I nitialize107 // IUnknownImpl_Constructor 98 108 // ---------------------------------------------------------------------- 99 LPUNKNOWN IUnknown _Constructor()109 LPUNKNOWN IUnknownImpl_Constructor() 100 110 { 101 111 IUnknownImpl * unk; 102 112 103 113 unk = (IUnknownImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IUnknownImpl)); 104 unk->lpvtbl = & uvt;114 unk->lpvtbl = &IUnknownVt; 105 115 unk->ref = 1; 106 116 return (LPUNKNOWN)unk;
Note:
See TracChangeset
for help on using the changeset viewer.