ole32: Add a BaseInterface where needed.
Francois Gouget
fgouget at codeweavers.com
Mon Aug 7 14:54:38 CDT 2006
---
dlls/ole32/regsvr.c | 27 ++++++++++++++-------------
1 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/dlls/ole32/regsvr.c b/dlls/ole32/regsvr.c
index 1b141ca..21474d6 100644
--- a/dlls/ole32/regsvr.c
+++ b/dlls/ole32/regsvr.c
@@ -499,6 +499,7 @@ static struct regsvr_coclass const cocla
*/
#define INTERFACE_ENTRY(interface, base, clsid32, clsid16) { &IID_##interface, #interface, base, sizeof(interface##Vtbl)/sizeof(void*), clsid16, clsid32 }
+#define BAS_INTERFACE_ENTRY(interface, base) INTERFACE_ENTRY(interface, &IID_##base, &CLSID_PSFactoryBuffer, NULL)
#define STD_INTERFACE_ENTRY(interface) INTERFACE_ENTRY(interface, NULL, &CLSID_PSFactoryBuffer, NULL)
#define LCL_INTERFACE_ENTRY(interface) INTERFACE_ENTRY(interface, NULL, NULL, NULL)
@@ -512,7 +513,7 @@ static const struct regsvr_interface int
STD_INTERFACE_ENTRY(IStream),
STD_INTERFACE_ENTRY(IEnumSTATSTG),
STD_INTERFACE_ENTRY(IBindCtx),
- STD_INTERFACE_ENTRY(IMoniker),
+ BAS_INTERFACE_ENTRY(IMoniker, IPersistStream),
STD_INTERFACE_ENTRY(IRunningObjectTable),
STD_INTERFACE_ENTRY(IRootStorage),
LCL_INTERFACE_ENTRY(IMessageFilter),
@@ -526,9 +527,9 @@ static const struct regsvr_interface int
STD_INTERFACE_ENTRY(IEnumFORMATETC),
STD_INTERFACE_ENTRY(IEnumOLEVERB),
STD_INTERFACE_ENTRY(IEnumSTATDATA),
- STD_INTERFACE_ENTRY(IPersistStream),
- STD_INTERFACE_ENTRY(IPersistStorage),
- STD_INTERFACE_ENTRY(IPersistFile),
+ BAS_INTERFACE_ENTRY(IPersistStream, IPersist),
+ BAS_INTERFACE_ENTRY(IPersistStorage, IPersist),
+ BAS_INTERFACE_ENTRY(IPersistFile, IPersist),
STD_INTERFACE_ENTRY(IPersist),
STD_INTERFACE_ENTRY(IViewObject),
STD_INTERFACE_ENTRY(IDataObject),
@@ -536,24 +537,24 @@ static const struct regsvr_interface int
LCL_INTERFACE_ENTRY(IDataAdviseHolder),
LCL_INTERFACE_ENTRY(IOleAdviseHolder),
STD_INTERFACE_ENTRY(IOleObject),
- STD_INTERFACE_ENTRY(IOleInPlaceObject),
+ BAS_INTERFACE_ENTRY(IOleInPlaceObject, IOleWindow),
STD_INTERFACE_ENTRY(IOleWindow),
- STD_INTERFACE_ENTRY(IOleInPlaceUIWindow),
+ BAS_INTERFACE_ENTRY(IOleInPlaceUIWindow, IOleWindow),
STD_INTERFACE_ENTRY(IOleInPlaceFrame),
- STD_INTERFACE_ENTRY(IOleInPlaceActiveObject),
+ BAS_INTERFACE_ENTRY(IOleInPlaceActiveObject, IOleWindow),
STD_INTERFACE_ENTRY(IOleClientSite),
- STD_INTERFACE_ENTRY(IOleInPlaceSite),
+ BAS_INTERFACE_ENTRY(IOleInPlaceSite, IOleWindow),
STD_INTERFACE_ENTRY(IParseDisplayName),
- STD_INTERFACE_ENTRY(IOleContainer),
- STD_INTERFACE_ENTRY(IOleItemContainer),
+ BAS_INTERFACE_ENTRY(IOleContainer, IParseDisplayName),
+ BAS_INTERFACE_ENTRY(IOleItemContainer, IOleContainer),
STD_INTERFACE_ENTRY(IOleLink),
STD_INTERFACE_ENTRY(IOleCache),
LCL_INTERFACE_ENTRY(IDropSource),
STD_INTERFACE_ENTRY(IDropTarget),
- STD_INTERFACE_ENTRY(IAdviseSink2),
+ BAS_INTERFACE_ENTRY(IAdviseSink2, IAdviseSink),
STD_INTERFACE_ENTRY(IRunnableObject),
- STD_INTERFACE_ENTRY(IViewObject2),
- STD_INTERFACE_ENTRY(IOleCache2),
+ BAS_INTERFACE_ENTRY(IViewObject2, IViewObject),
+ BAS_INTERFACE_ENTRY(IOleCache2, IOleCache),
STD_INTERFACE_ENTRY(IOleCacheControl),
STD_INTERFACE_ENTRY(IRemUnknown),
LCL_INTERFACE_ENTRY(IClientSecurity),
--
1.4.1
More information about the wine-patches
mailing list