dmusic: COM cleanup of DirectMusicCollection and get rid of separated IUnknown interface.

This commit is contained in:
Christian Costa 2012-05-14 08:06:30 +02:00 committed by Alexandre Julliard
parent 540ae18f69
commit f0324c9665
2 changed files with 136 additions and 122 deletions

View File

@ -1,4 +1,5 @@
/* IDirectMusicCollection Implementation /*
* IDirectMusicCollection Implementation
* *
* Copyright (C) 2003-2004 Rok Mandeljc * Copyright (C) 2003-2004 Rok Mandeljc
* *
@ -22,43 +23,61 @@
WINE_DEFAULT_DEBUG_CHANNEL(dmusic); WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
WINE_DECLARE_DEBUG_CHANNEL(dmfile); WINE_DECLARE_DEBUG_CHANNEL(dmfile);
static ULONG WINAPI IDirectMusicCollectionImpl_IUnknown_AddRef (LPUNKNOWN iface); static inline IDirectMusicCollectionImpl *impl_from_IDirectMusicCollection(IDirectMusicCollection *iface)
static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_AddRef (LPDIRECTMUSICCOLLECTION iface); {
static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface); return CONTAINING_RECORD(iface, IDirectMusicCollectionImpl, IDirectMusicCollection_iface);
static ULONG WINAPI IDirectMusicCollectionImpl_IPersistStream_AddRef (LPPERSISTSTREAM iface); }
static inline IDirectMusicCollectionImpl *impl_from_IDirectMusicObject(IDirectMusicObject *iface)
{
return CONTAINING_RECORD(iface, IDirectMusicCollectionImpl, IDirectMusicObject_iface);
}
static inline IDirectMusicCollectionImpl *impl_from_IPersistStream(IPersistStream *iface)
{
return CONTAINING_RECORD(iface, IDirectMusicCollectionImpl, IPersistStream_iface);
}
/***************************************************************************** /*****************************************************************************
* IDirectMusicCollectionImpl implementation * IDirectMusicCollectionImpl implementation
*/ */
/* IDirectMusicCollectionImpl IUnknown part: */ /* IDirectMusicCollectionImpl IUnknown part: */
static HRESULT WINAPI IDirectMusicCollectionImpl_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj) { static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_QueryInterface(LPDIRECTMUSICCOLLECTION iface, REFIID riid, LPVOID *ret_iface)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, UnknownVtbl, iface); {
TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj); IDirectMusicCollectionImpl *This = impl_from_IDirectMusicCollection(iface);
if (IsEqualIID (riid, &IID_IUnknown)) { TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_dmguid(riid), ret_iface);
*ppobj = &This->UnknownVtbl;
IDirectMusicCollectionImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl); if (IsEqualIID(riid, &IID_IUnknown) ||
IsEqualIID(riid, &IID_IDirectMusicCollection))
{
*ret_iface = iface;
IDirectMusicCollection_AddRef(iface);
return S_OK; return S_OK;
} else if (IsEqualIID (riid, &IID_IDirectMusicCollection)) { }
*ppobj = &This->CollectionVtbl; else if (IsEqualIID(riid, &IID_IDirectMusicObject))
IDirectMusicCollectionImpl_IDirectMusicCollection_AddRef ((LPDIRECTMUSICCOLLECTION)&This->CollectionVtbl); {
*ret_iface = &This->IDirectMusicObject_iface;
IDirectMusicCollection_AddRef(iface);
return S_OK; return S_OK;
} else if (IsEqualIID (riid, &IID_IDirectMusicObject)) { }
*ppobj = &This->ObjectVtbl; else if (IsEqualIID(riid, &IID_IPersistStream))
IDirectMusicCollectionImpl_IDirectMusicObject_AddRef ((LPDIRECTMUSICOBJECT)&This->ObjectVtbl); {
return S_OK; *ret_iface = &This->IPersistStream_iface;
} else if (IsEqualIID (riid, &IID_IPersistStream)) { IDirectMusicCollection_AddRef(iface);
*ppobj = &This->PersistStreamVtbl;
IDirectMusicCollectionImpl_IPersistStream_AddRef ((LPPERSISTSTREAM)&This->PersistStreamVtbl);
return S_OK; return S_OK;
} }
WARN("(%p, %s, %p): not found\n", This, debugstr_dmguid(riid), ppobj); *ret_iface = NULL;
WARN("(%p/%p)->(%s, %p): not found\n", iface, This, debugstr_dmguid(riid), ret_iface);
return E_NOINTERFACE; return E_NOINTERFACE;
} }
static ULONG WINAPI IDirectMusicCollectionImpl_IUnknown_AddRef (LPUNKNOWN iface) { static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_AddRef(LPDIRECTMUSICCOLLECTION iface)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, UnknownVtbl, iface); {
IDirectMusicCollectionImpl *This = impl_from_IDirectMusicCollection(iface);
ULONG refCount = InterlockedIncrement(&This->ref); ULONG refCount = InterlockedIncrement(&This->ref);
TRACE("(%p)->(ref before=%u)\n", This, refCount - 1); TRACE("(%p)->(ref before=%u)\n", This, refCount - 1);
@ -68,8 +87,9 @@ static ULONG WINAPI IDirectMusicCollectionImpl_IUnknown_AddRef (LPUNKNOWN iface)
return refCount; return refCount;
} }
static ULONG WINAPI IDirectMusicCollectionImpl_IUnknown_Release (LPUNKNOWN iface) { static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_Release(LPDIRECTMUSICCOLLECTION iface)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, UnknownVtbl, iface); {
IDirectMusicCollectionImpl *This = impl_from_IDirectMusicCollection(iface);
ULONG refCount = InterlockedDecrement(&This->ref); ULONG refCount = InterlockedDecrement(&This->ref);
TRACE("(%p)->(ref before=%u)\n", This, refCount + 1); TRACE("(%p)->(ref before=%u)\n", This, refCount + 1);
@ -83,31 +103,10 @@ static ULONG WINAPI IDirectMusicCollectionImpl_IUnknown_Release (LPUNKNOWN iface
return refCount; return refCount;
} }
static const IUnknownVtbl DirectMusicCollection_Unknown_Vtbl = { /* IDirectMusicCollection Interface follows: */
IDirectMusicCollectionImpl_IUnknown_QueryInterface, static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_GetInstrument(LPDIRECTMUSICCOLLECTION iface, DWORD dwPatch, IDirectMusicInstrument** ppInstrument)
IDirectMusicCollectionImpl_IUnknown_AddRef, {
IDirectMusicCollectionImpl_IUnknown_Release IDirectMusicCollectionImpl *This = impl_from_IDirectMusicCollection(iface);
};
/* IDirectMusicCollectionImpl IDirectMusicCollection part: */
static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_QueryInterface (LPDIRECTMUSICCOLLECTION iface, REFIID riid, LPVOID *ppobj) {
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, CollectionVtbl, iface);
return IDirectMusicCollectionImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
}
static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_AddRef (LPDIRECTMUSICCOLLECTION iface) {
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, CollectionVtbl, iface);
return IDirectMusicCollectionImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
}
static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_Release (LPDIRECTMUSICCOLLECTION iface) {
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, CollectionVtbl, iface);
return IDirectMusicCollectionImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
}
/* IDirectMusicCollection Interface follow: */
static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_GetInstrument (LPDIRECTMUSICCOLLECTION iface, DWORD dwPatch, IDirectMusicInstrument** ppInstrument) {
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, CollectionVtbl, iface);
DMUS_PRIVATE_INSTRUMENTENTRY *tmpEntry; DMUS_PRIVATE_INSTRUMENTENTRY *tmpEntry;
struct list *listEntry; struct list *listEntry;
DWORD dwInstPatch; DWORD dwInstPatch;
@ -131,8 +130,9 @@ static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_GetInstr
return DMUS_E_INVALIDPATCH; return DMUS_E_INVALIDPATCH;
} }
static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_EnumInstrument (LPDIRECTMUSICCOLLECTION iface, DWORD dwIndex, DWORD* pdwPatch, LPWSTR pwszName, DWORD dwNameLen) { static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicCollection_EnumInstrument(LPDIRECTMUSICCOLLECTION iface, DWORD dwIndex, DWORD* pdwPatch, LPWSTR pwszName, DWORD dwNameLen)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, CollectionVtbl, iface); {
IDirectMusicCollectionImpl *This = impl_from_IDirectMusicCollection(iface);
unsigned int r = 0; unsigned int r = 0;
DMUS_PRIVATE_INSTRUMENTENTRY *tmpEntry; DMUS_PRIVATE_INSTRUMENTENTRY *tmpEntry;
struct list *listEntry; struct list *listEntry;
@ -166,32 +166,39 @@ static const IDirectMusicCollectionVtbl DirectMusicCollection_Collection_Vtbl =
}; };
/* IDirectMusicCollectionImpl IDirectMusicObject part: */ /* IDirectMusicCollectionImpl IDirectMusicObject part: */
static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj) { static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_QueryInterface(LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ret_iface)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, ObjectVtbl, iface); {
return IDirectMusicCollectionImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj); IDirectMusicCollectionImpl *This = impl_from_IDirectMusicObject(iface);
return IDirectMusicCollection_QueryInterface(&This->IDirectMusicCollection_iface, riid, ret_iface);
} }
static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface) { static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_AddRef(LPDIRECTMUSICOBJECT iface)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, ObjectVtbl, iface); {
return IDirectMusicCollectionImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl); IDirectMusicCollectionImpl *This = impl_from_IDirectMusicObject(iface);
return IDirectMusicCollection_AddRef(&This->IDirectMusicCollection_iface);
} }
static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_Release (LPDIRECTMUSICOBJECT iface) { static ULONG WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_Release(LPDIRECTMUSICOBJECT iface)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, ObjectVtbl, iface); {
return IDirectMusicCollectionImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl); IDirectMusicCollectionImpl *This = impl_from_IDirectMusicObject(iface);
return IDirectMusicCollection_Release(&This->IDirectMusicCollection_iface);
} }
static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_GetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc) { static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_GetDescriptor(LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, ObjectVtbl, iface); {
TRACE("(%p, %p)\n", This, pDesc); IDirectMusicCollectionImpl *This = impl_from_IDirectMusicObject(iface);
TRACE("(%p/%p)->(%p)\n", iface, This, pDesc);
/* I think we shouldn't return pointer here since then values can be changed; it'd be a mess */ /* I think we shouldn't return pointer here since then values can be changed; it'd be a mess */
memcpy (pDesc, This->pDesc, This->pDesc->dwSize); memcpy (pDesc, This->pDesc, This->pDesc->dwSize);
return S_OK; return S_OK;
} }
static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_SetDescriptor(LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc) static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_SetDescriptor(LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc)
{ {
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, ObjectVtbl, iface); IDirectMusicCollectionImpl *This = impl_from_IDirectMusicObject(iface);
TRACE("(%p, %p)\n", iface, pDesc); TRACE("(%p, %p)\n", iface, pDesc);
@ -254,7 +261,7 @@ static HRESULT read_from_stream(IStream *stream, void *data, ULONG size)
static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_ParseDescriptor(LPDIRECTMUSICOBJECT iface, LPSTREAM stream, LPDMUS_OBJECTDESC desc) static HRESULT WINAPI IDirectMusicCollectionImpl_IDirectMusicObject_ParseDescriptor(LPDIRECTMUSICOBJECT iface, LPSTREAM stream, LPDMUS_OBJECTDESC desc)
{ {
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, ObjectVtbl, iface); IDirectMusicCollectionImpl *This = impl_from_IDirectMusicObject(iface);
DMUS_PRIVATE_CHUNK chunk; DMUS_PRIVATE_CHUNK chunk;
DWORD StreamSize, StreamCount, ListSize[1], ListCount[1]; DWORD StreamSize, StreamCount, ListSize[1], ListCount[1];
LARGE_INTEGER liMove; /* used when skipping chunks */ LARGE_INTEGER liMove; /* used when skipping chunks */
@ -450,32 +457,37 @@ static const IDirectMusicObjectVtbl DirectMusicCollection_Object_Vtbl = {
}; };
/* IDirectMusicCollectionImpl IPersistStream part: */ /* IDirectMusicCollectionImpl IPersistStream part: */
static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, LPVOID *ppobj) { static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_QueryInterface(LPPERSISTSTREAM iface, REFIID riid, LPVOID *ret_iface)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, PersistStreamVtbl, iface); {
return IDirectMusicCollectionImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj); IDirectMusicCollectionImpl *This = impl_from_IPersistStream(iface);
return IDirectMusicCollection_QueryInterface(&This->IDirectMusicCollection_iface, riid, ret_iface);
} }
static ULONG WINAPI IDirectMusicCollectionImpl_IPersistStream_AddRef (LPPERSISTSTREAM iface) { static ULONG WINAPI IDirectMusicCollectionImpl_IPersistStream_AddRef (LPPERSISTSTREAM iface)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, PersistStreamVtbl, iface); {
return IDirectMusicCollectionImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl); IDirectMusicCollectionImpl *This = impl_from_IPersistStream(iface);
return IDirectMusicCollection_AddRef(&This->IDirectMusicCollection_iface);
} }
static ULONG WINAPI IDirectMusicCollectionImpl_IPersistStream_Release (LPPERSISTSTREAM iface) { static ULONG WINAPI IDirectMusicCollectionImpl_IPersistStream_Release (LPPERSISTSTREAM iface)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, PersistStreamVtbl, iface); {
return IDirectMusicCollectionImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl); IDirectMusicCollectionImpl *This = impl_from_IPersistStream(iface);
return IDirectMusicCollection_Release(&This->IDirectMusicCollection_iface);
} }
static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_GetClassID (LPPERSISTSTREAM iface, CLSID* pClassID) { static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_GetClassID(LPPERSISTSTREAM iface, CLSID* pClassID)
{
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_IsDirty (LPPERSISTSTREAM iface) { static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_IsDirty(LPPERSISTSTREAM iface)
{
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_Load (LPPERSISTSTREAM iface, IStream* pStm) { static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_Load (LPPERSISTSTREAM iface, IStream* pStm)
ICOM_THIS_MULTI(IDirectMusicCollectionImpl, PersistStreamVtbl, iface); {
IDirectMusicCollectionImpl *This = impl_from_IPersistStream(iface);
DMUS_PRIVATE_CHUNK Chunk; DMUS_PRIVATE_CHUNK Chunk;
DWORD StreamSize, StreamCount, ListSize[3], ListCount[3]; DWORD StreamSize, StreamCount, ListSize[3], ListCount[3];
LARGE_INTEGER liMove; /* used when skipping chunks */ LARGE_INTEGER liMove; /* used when skipping chunks */
@ -760,7 +772,7 @@ static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_Load (LPPERSISTS
DMUS_PRIVATE_INSTRUMENTENTRY *tmpEntry; DMUS_PRIVATE_INSTRUMENTENTRY *tmpEntry;
struct list *listEntry; struct list *listEntry;
TRACE("*** IDirectMusicCollection (%p) ***\n", This->CollectionVtbl); TRACE("*** IDirectMusicCollection (%p) ***\n", &This->IDirectMusicCollection_iface);
if (This->pDesc->dwValidData & DMUS_OBJ_OBJECT) if (This->pDesc->dwValidData & DMUS_OBJ_OBJECT)
TRACE(" - GUID = %s\n", debugstr_dmguid(&This->pDesc->guidObject)); TRACE(" - GUID = %s\n", debugstr_dmguid(&This->pDesc->guidObject));
if (This->pDesc->dwValidData & DMUS_OBJ_VERSION) if (This->pDesc->dwValidData & DMUS_OBJ_VERSION)
@ -783,11 +795,13 @@ static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_Load (LPPERSISTS
return S_OK; return S_OK;
} }
static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_Save (LPPERSISTSTREAM iface, IStream* pStm, BOOL fClearDirty) { static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_Save(LPPERSISTSTREAM iface, IStream* pStm, BOOL fClearDirty)
{
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_GetSizeMax (LPPERSISTSTREAM iface, ULARGE_INTEGER* pcbSize) { static HRESULT WINAPI IDirectMusicCollectionImpl_IPersistStream_GetSizeMax(LPPERSISTSTREAM iface, ULARGE_INTEGER* pcbSize)
{
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -804,7 +818,8 @@ static const IPersistStreamVtbl DirectMusicCollection_PersistStream_Vtbl = {
/* for ClassFactory */ /* for ClassFactory */
HRESULT WINAPI DMUSIC_CreateDirectMusicCollectionImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) { HRESULT WINAPI DMUSIC_CreateDirectMusicCollectionImpl(LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter)
{
IDirectMusicCollectionImpl* obj; IDirectMusicCollectionImpl* obj;
obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicCollectionImpl)); obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicCollectionImpl));
@ -812,10 +827,9 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicCollectionImpl (LPCGUID lpcGUID, LPVOID*
*ppobj = NULL; *ppobj = NULL;
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
} }
obj->UnknownVtbl = &DirectMusicCollection_Unknown_Vtbl; obj->IDirectMusicCollection_iface.lpVtbl = &DirectMusicCollection_Collection_Vtbl;
obj->CollectionVtbl = &DirectMusicCollection_Collection_Vtbl; obj->IDirectMusicObject_iface.lpVtbl = &DirectMusicCollection_Object_Vtbl;
obj->ObjectVtbl = &DirectMusicCollection_Object_Vtbl; obj->IPersistStream_iface.lpVtbl = &DirectMusicCollection_PersistStream_Vtbl;
obj->PersistStreamVtbl = &DirectMusicCollection_PersistStream_Vtbl;
obj->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC)); obj->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC));
DM_STRUCT_INIT(obj->pDesc); DM_STRUCT_INIT(obj->pDesc);
obj->pDesc->dwValidData |= DMUS_OBJ_CLASS; obj->pDesc->dwValidData |= DMUS_OBJ_CLASS;
@ -823,5 +837,5 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicCollectionImpl (LPCGUID lpcGUID, LPVOID*
obj->ref = 0; /* will be inited by QueryInterface */ obj->ref = 0; /* will be inited by QueryInterface */
list_init (&obj->Instruments); list_init (&obj->Instruments);
return IDirectMusicCollectionImpl_IUnknown_QueryInterface ((LPUNKNOWN)&obj->UnknownVtbl, lpcGUID, ppobj); return IDirectMusicCollection_QueryInterface(&obj->IDirectMusicCollection_iface, lpcGUID, ppobj);
} }

View File

@ -1,4 +1,5 @@
/* DirectMusic Private Include /*
* DirectMusic Private Include
* *
* Copyright (C) 2003-2004 Rok Mandeljc * Copyright (C) 2003-2004 Rok Mandeljc
* *
@ -189,10 +190,9 @@ typedef struct _DMUS_PRIVATE_POOLCUE {
*/ */
struct IDirectMusicCollectionImpl { struct IDirectMusicCollectionImpl {
/* IUnknown fields */ /* IUnknown fields */
const IUnknownVtbl *UnknownVtbl; IDirectMusicCollection IDirectMusicCollection_iface;
const IDirectMusicCollectionVtbl *CollectionVtbl; IDirectMusicObject IDirectMusicObject_iface;
const IDirectMusicObjectVtbl *ObjectVtbl; IPersistStream IPersistStream_iface;
const IPersistStreamVtbl *PersistStreamVtbl;
LONG ref; LONG ref;
/* IDirectMusicCollectionImpl fields */ /* IDirectMusicCollectionImpl fields */