dmloader: None of the COM classes support aggregation.

This commit is contained in:
Michael Stefaniuc 2014-03-12 22:58:17 +01:00 committed by Alexandre Julliard
parent 7442abde92
commit 917d5eabe6
4 changed files with 17 additions and 12 deletions

View File

@ -909,7 +909,8 @@ static const IPersistStreamVtbl DirectMusicContainer_PersistStream_Vtbl = {
}; };
/* for ClassFactory */ /* for ClassFactory */
HRESULT WINAPI DMUSIC_CreateDirectMusicContainerImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) { HRESULT WINAPI create_dmcontainer(REFIID lpcGUID, void **ppobj)
{
IDirectMusicContainerImpl* obj; IDirectMusicContainerImpl* obj;
obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicContainerImpl)); obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicContainerImpl));

View File

@ -27,7 +27,7 @@ LONG module_ref = 0;
typedef struct { typedef struct {
IClassFactory IClassFactory_iface; IClassFactory IClassFactory_iface;
HRESULT WINAPI (*fnCreateInstance)(REFIID riid, void **ppv, IUnknown *pUnkOuter); HRESULT WINAPI (*fnCreateInstance)(REFIID riid, void **ppv);
} IClassFactoryImpl; } IClassFactoryImpl;
/****************************************************************** /******************************************************************
@ -73,13 +73,18 @@ static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
} }
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter,
REFIID riid, void **ppv) REFIID riid, void **ret_iface)
{ {
IClassFactoryImpl *This = impl_from_IClassFactory(iface); IClassFactoryImpl *This = impl_from_IClassFactory(iface);
TRACE ("(%p, %s, %p)\n", pUnkOuter, debugstr_dmguid(riid), ppv); TRACE ("(%s, %p)\n", debugstr_dmguid(riid), ret_iface);
return This->fnCreateInstance(riid, ppv, pUnkOuter); if (pUnkOuter) {
*ret_iface = NULL;
return CLASS_E_NOAGGREGATION;
}
return This->fnCreateInstance(riid, ret_iface);
} }
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock) static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock)
@ -102,9 +107,8 @@ static const IClassFactoryVtbl classfactory_vtbl = {
ClassFactory_LockServer ClassFactory_LockServer
}; };
static IClassFactoryImpl dm_loader_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicLoaderImpl}; static IClassFactoryImpl dm_loader_CF = {{&classfactory_vtbl}, create_dmloader};
static IClassFactoryImpl dm_container_CF = {{&classfactory_vtbl}, static IClassFactoryImpl dm_container_CF = {{&classfactory_vtbl}, create_dmcontainer};
DMUSIC_CreateDirectMusicContainerImpl};
/****************************************************************** /******************************************************************
* DllMain * DllMain

View File

@ -65,8 +65,8 @@ typedef struct IDirectMusicLoaderGenericStream IDirectMusicLoaderGenericStream;
/***************************************************************************** /*****************************************************************************
* Creation helpers * Creation helpers
*/ */
extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN; extern HRESULT WINAPI create_dmloader(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
extern HRESULT WINAPI DMUSIC_CreateDirectMusicContainerImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN; extern HRESULT WINAPI create_dmcontainer(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderFileStream (LPVOID *ppobj) DECLSPEC_HIDDEN; extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderFileStream (LPVOID *ppobj) DECLSPEC_HIDDEN;
extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderResourceStream (LPVOID *ppobj) DECLSPEC_HIDDEN; extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderResourceStream (LPVOID *ppobj) DECLSPEC_HIDDEN;
extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderGenericStream (LPVOID *ppobj) DECLSPEC_HIDDEN; extern HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderGenericStream (LPVOID *ppobj) DECLSPEC_HIDDEN;

View File

@ -888,14 +888,14 @@ static HRESULT DMUSIC_GetDefaultGMPath (WCHAR wszPath[MAX_PATH]) {
} }
/* for ClassFactory */ /* for ClassFactory */
HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderImpl(const GUID *lpcGUID, void **ppobj, IUnknown *pUnkOuter) HRESULT WINAPI create_dmloader(REFIID lpcGUID, void **ppobj)
{ {
IDirectMusicLoaderImpl *obj; IDirectMusicLoaderImpl *obj;
DMUS_OBJECTDESC Desc; DMUS_OBJECTDESC Desc;
LPWINE_LOADER_ENTRY pDefaultDLSEntry; LPWINE_LOADER_ENTRY pDefaultDLSEntry;
struct list *pEntry; struct list *pEntry;
TRACE("(%s, %p, %p)\n", debugstr_dmguid(lpcGUID), ppobj, pUnkOuter); TRACE("(%s, %p)\n", debugstr_dmguid(lpcGUID), ppobj);
obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicLoaderImpl)); obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicLoaderImpl));
if (NULL == obj) { if (NULL == obj) {
*ppobj = NULL; *ppobj = NULL;