Michael Stefaniuc : dmcompos: None of the COM classes support aggregation.

Alexandre Julliard julliard at winehq.org
Thu Jan 16 14:52:27 CST 2014


Module: wine
Branch: master
Commit: 434842e13d716debf712a6f97bfc1aef8bf3fdcd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=434842e13d716debf712a6f97bfc1aef8bf3fdcd

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Thu Jan 16 00:45:17 2014 +0100

dmcompos: None of the COM classes support aggregation.

---

 dlls/dmcompos/chordmap.c         |    3 ++-
 dlls/dmcompos/chordmaptrack.c    |    3 ++-
 dlls/dmcompos/composer.c         |    3 ++-
 dlls/dmcompos/dmcompos_main.c    |   23 +++++++++++++----------
 dlls/dmcompos/dmcompos_private.h |    8 ++++----
 dlls/dmcompos/signposttrack.c    |    3 ++-
 6 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/dlls/dmcompos/chordmap.c b/dlls/dmcompos/chordmap.c
index ea751af..21849b8 100644
--- a/dlls/dmcompos/chordmap.c
+++ b/dlls/dmcompos/chordmap.c
@@ -524,7 +524,8 @@ static const IPersistStreamVtbl DirectMusicChordMap_PersistStream_Vtbl = {
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicChordMapImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) {
+HRESULT WINAPI create_dmchordmap(REFIID lpcGUID, void **ppobj)
+{
 	IDirectMusicChordMapImpl* obj;
 	
 	obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicChordMapImpl));
diff --git a/dlls/dmcompos/chordmaptrack.c b/dlls/dmcompos/chordmaptrack.c
index 6d8f326..cac652c 100644
--- a/dlls/dmcompos/chordmaptrack.c
+++ b/dlls/dmcompos/chordmaptrack.c
@@ -269,7 +269,8 @@ static const IPersistStreamVtbl DirectMusicChordMapTrack_PersistStream_Vtbl = {
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicChordMapTrack (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter) {
+HRESULT WINAPI create_dmchordmaptrack(REFIID lpcGUID, void **ppobj)
+{
 	IDirectMusicChordMapTrack* track;
 	
 	track = HeapAlloc (GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicChordMapTrack));
diff --git a/dlls/dmcompos/composer.c b/dlls/dmcompos/composer.c
index d122e97..2d91f5e 100644
--- a/dlls/dmcompos/composer.c
+++ b/dlls/dmcompos/composer.c
@@ -112,7 +112,8 @@ static const IDirectMusicComposerVtbl DirectMusicComposer_Vtbl = {
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicComposerImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) {
+HRESULT WINAPI create_dmcomposer(REFIID lpcGUID, void **ppobj)
+{
 	IDirectMusicComposerImpl* obj;
 	
 	obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicComposerImpl));
diff --git a/dlls/dmcompos/dmcompos_main.c b/dlls/dmcompos/dmcompos_main.c
index e40c6ea..240cc9d 100644
--- a/dlls/dmcompos/dmcompos_main.c
+++ b/dlls/dmcompos/dmcompos_main.c
@@ -30,12 +30,12 @@ LONG DMCOMPOS_refCount = 0;
 
 typedef struct {
         IClassFactory IClassFactory_iface;
-        HRESULT WINAPI (*fnCreateInstance)(REFIID riid, void **ppv, IUnknown *pUnkOuter);
+        HRESULT WINAPI (*fnCreateInstance)(REFIID riid, void **ret_iface);
 } IClassFactoryImpl;
 
-static HRESULT WINAPI create_direct_music_template(REFIID riid, void **ppv, IUnknown *pUnkOuter)
+static HRESULT WINAPI create_direct_music_template(REFIID riid, void **ret_iface)
 {
-        FIXME("(%p, %s, %p) stub\n", pUnkOuter, debugstr_dmguid(riid), ppv);
+        FIXME("(%s, %p) stub\n", debugstr_dmguid(riid), ret_iface);
 
         return CLASS_E_CLASSNOTAVAILABLE;
 }
@@ -89,7 +89,12 @@ static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown
 
         TRACE ("(%p, %s, %p)\n", pUnkOuter, debugstr_dmguid(riid), ppv);
 
-        return This->fnCreateInstance(riid, ppv, pUnkOuter);
+        if (pUnkOuter) {
+            *ppv = NULL;
+            return CLASS_E_NOAGGREGATION;
+        }
+
+        return This->fnCreateInstance(riid, ppv);
 }
 
 static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock)
@@ -112,13 +117,11 @@ static const IClassFactoryVtbl classfactory_vtbl = {
         ClassFactory_LockServer
 };
 
-static IClassFactoryImpl ChordMap_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicChordMapImpl};
-static IClassFactoryImpl Composer_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicComposerImpl};
-static IClassFactoryImpl ChordMapTrack_CF = {{&classfactory_vtbl},
-                                             DMUSIC_CreateDirectMusicChordMapTrack};
+static IClassFactoryImpl ChordMap_CF = {{&classfactory_vtbl}, create_dmchordmap};
+static IClassFactoryImpl Composer_CF = {{&classfactory_vtbl}, create_dmcomposer};
+static IClassFactoryImpl ChordMapTrack_CF = {{&classfactory_vtbl}, create_dmchordmaptrack};
 static IClassFactoryImpl Template_CF = {{&classfactory_vtbl}, create_direct_music_template};
-static IClassFactoryImpl SignPostTrack_CF = {{&classfactory_vtbl},
-                                             DMUSIC_CreateDirectMusicSignPostTrack};
+static IClassFactoryImpl SignPostTrack_CF = {{&classfactory_vtbl}, create_dmsignposttrack};
 
 /******************************************************************
  *		DllMain
diff --git a/dlls/dmcompos/dmcompos_private.h b/dlls/dmcompos/dmcompos_private.h
index 5e9a9f1..d6d252c 100644
--- a/dlls/dmcompos/dmcompos_private.h
+++ b/dlls/dmcompos/dmcompos_private.h
@@ -53,10 +53,10 @@ typedef struct IDirectMusicSignPostTrack IDirectMusicSignPostTrack;
 /*****************************************************************************
  * ClassFactory
  */
-extern HRESULT WINAPI DMUSIC_CreateDirectMusicChordMapImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
-extern HRESULT WINAPI DMUSIC_CreateDirectMusicComposerImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
-extern HRESULT WINAPI DMUSIC_CreateDirectMusicChordMapTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
-extern HRESULT WINAPI DMUSIC_CreateDirectMusicSignPostTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI create_dmchordmap(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI create_dmcomposer(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI create_dmchordmaptrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI create_dmsignposttrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
 
 /*****************************************************************************
  * IDirectMusicChordMapImpl implementation structure
diff --git a/dlls/dmcompos/signposttrack.c b/dlls/dmcompos/signposttrack.c
index 15ff599..586c085 100644
--- a/dlls/dmcompos/signposttrack.c
+++ b/dlls/dmcompos/signposttrack.c
@@ -267,7 +267,8 @@ static const IPersistStreamVtbl DirectMusicSignPostTrack_PersistStream_Vtbl =
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicSignPostTrack (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter) {
+HRESULT WINAPI create_dmsignposttrack(REFIID lpcGUID, void **ppobj)
+{
 	IDirectMusicSignPostTrack* track;
 	
 	track = HeapAlloc (GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicSignPostTrack));




More information about the wine-cvs mailing list