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

Alexandre Julliard julliard at winehq.org
Thu Jan 30 13:25:25 CST 2014


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Thu Jan 30 00:46:19 2014 +0100

dmband: None of the COM classes support aggregation.

---

 dlls/dmband/band.c           |    3 ++-
 dlls/dmband/bandtrack.c      |    3 ++-
 dlls/dmband/dmband_main.c    |   13 +++++++++----
 dlls/dmband/dmband_private.h |    5 ++---
 4 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/dlls/dmband/band.c b/dlls/dmband/band.c
index e67bc8e..e72a042 100644
--- a/dlls/dmband/band.c
+++ b/dlls/dmband/band.c
@@ -687,7 +687,8 @@ static const IPersistStreamVtbl DirectMusicBand_PersistStream_Vtbl = {
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicBandImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) {
+HRESULT WINAPI create_dmband(REFIID lpcGUID, void **ppobj)
+{
   IDirectMusicBandImpl* obj;
 	
   obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicBandImpl));
diff --git a/dlls/dmband/bandtrack.c b/dlls/dmband/bandtrack.c
index 878ccc0..8be6b29 100644
--- a/dlls/dmband/bandtrack.c
+++ b/dlls/dmband/bandtrack.c
@@ -606,7 +606,8 @@ static const IPersistStreamVtbl DirectMusicBandTrack_PerststStream_Vtbl = {
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicBandTrack (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter) {
+HRESULT WINAPI create_dmbandtrack(REFIID lpcGUID, void **ppobj)
+{
   IDirectMusicBandTrack* track;
 	
   track = HeapAlloc (GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicBandTrack));
diff --git a/dlls/dmband/dmband_main.c b/dlls/dmband/dmband_main.c
index 414f5e4..f72b415 100644
--- a/dlls/dmband/dmband_main.c
+++ b/dlls/dmband/dmband_main.c
@@ -27,7 +27,7 @@ LONG DMBAND_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;
 
 /******************************************************************
@@ -79,7 +79,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)
@@ -102,8 +107,8 @@ static const IClassFactoryVtbl classfactory_vtbl = {
         ClassFactory_LockServer
 };
 
-static IClassFactoryImpl Band_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicBandImpl};
-static IClassFactoryImpl BandTrack_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicBandTrack};
+static IClassFactoryImpl Band_CF = {{&classfactory_vtbl}, create_dmband};
+static IClassFactoryImpl BandTrack_CF = {{&classfactory_vtbl}, create_dmbandtrack};
 
 /******************************************************************
  *		DllMain
diff --git a/dlls/dmband/dmband_private.h b/dlls/dmband/dmband_private.h
index aa775df..0f5f939 100644
--- a/dlls/dmband/dmband_private.h
+++ b/dlls/dmband/dmband_private.h
@@ -52,9 +52,8 @@ typedef struct IDirectMusicBandTrack IDirectMusicBandTrack;
 /*****************************************************************************
  * ClassFactory
  */
-extern HRESULT WINAPI DMUSIC_CreateDirectMusicBandImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
-
-extern HRESULT WINAPI DMUSIC_CreateDirectMusicBandTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI create_dmband(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI create_dmbandtrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
 
 
 /*****************************************************************************




More information about the wine-cvs mailing list