Added stubs for all dmusic interfaces.
diff --git a/dlls/dmusic/Makefile.in b/dlls/dmusic/Makefile.in
index 7a74c69..8a19601 100644
--- a/dlls/dmusic/Makefile.in
+++ b/dlls/dmusic/Makefile.in
@@ -11,17 +11,16 @@
C_SRCS = \
dmusic.c \
- dmusic8.c \
- dmusic_buffer.c \
- dmusic_collection.c \
- dmusic_dlinstrument.c \
- dmusic_download.c \
dmusic_instrument.c \
+ dmusic_loader.c \
dmusic_main.c \
+ dmusic_misc.c \
+ dmusic_performance.c \
+ dmusic_plugins.c \
dmusic_port.c \
- dmusic_portdl.c \
- dmusic_thru.c \
- reference_clock.c
+ dmusic_segment.c \
+ dmusic_style.c \
+ dmusic_synth.c
RC_SRCS = version.rc
diff --git a/dlls/dmusic/dmusic.c b/dlls/dmusic/dmusic.c
index e6f1e2b..a774df3 100644
--- a/dlls/dmusic/dmusic.c
+++ b/dlls/dmusic/dmusic.c
@@ -1,4 +1,8 @@
/* IDirectMusic Implementation
+ * IDirectMusic8 Implementation
+ * IDirectMusicDownload Implementation
+ * IDirectMusicBuffer Implementation
+ * IDirectMusicObject Implementation
*
* Copyright (C) 2003 Rok Mandeljc
*
@@ -27,31 +31,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
-/* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusic (LPCGUID lpcGUID, LPDIRECTMUSIC *ppDM, LPUNKNOWN pUnkOuter)
-{
- IDirectMusicImpl *dmusic;
-
- TRACE("(%p,%p,%p)\n",lpcGUID, ppDM, pUnkOuter);
-
-
- dmusic = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicImpl));
- if (NULL == dmusic)
- {
- *ppDM = (LPDIRECTMUSIC)NULL;
- return E_OUTOFMEMORY;
- }
-
- dmusic->lpVtbl = &DirectMusic_Vtbl;
- dmusic->ref = 1;
-
- *ppDM = (LPDIRECTMUSIC)dmusic;
- return S_OK;
-
- WARN("No interface found\n");
- return E_NOINTERFACE;
-}
-
/* IDirectMusic IUnknown parts follow: */
HRESULT WINAPI IDirectMusicImpl_QueryInterface (LPDIRECTMUSIC iface, REFIID riid, LPVOID *ppobj)
{
@@ -177,3 +156,393 @@
IDirectMusicImpl_GetDefaultPort,
IDirectMusicImpl_SetDirectSound
};
+
+/* IDirectMusic8 IUnknown parts follow: */
+HRESULT WINAPI IDirectMusic8Impl_QueryInterface (LPDIRECTMUSIC8 iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusic8Impl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusic8))
+ {
+ IDirectMusic8Impl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusic8Impl_AddRef (LPDIRECTMUSIC8 iface)
+{
+ ICOM_THIS(IDirectMusic8Impl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusic8Impl_Release (LPDIRECTMUSIC8 iface)
+{
+ ICOM_THIS(IDirectMusic8Impl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* for ClassFactory */
+HRESULT WINAPI DMUSIC_CreateDirectMusic (LPCGUID lpcGUID, LPDIRECTMUSIC *ppDM, LPUNKNOWN pUnkOuter)
+{
+ IDirectMusicImpl *dmusic;
+
+ TRACE("(%p,%p,%p)\n",lpcGUID, ppDM, pUnkOuter);
+
+
+ dmusic = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicImpl));
+ if (NULL == dmusic)
+ {
+ *ppDM = (LPDIRECTMUSIC)NULL;
+ return E_OUTOFMEMORY;
+ }
+
+ dmusic->lpVtbl = &DirectMusic_Vtbl;
+ dmusic->ref = 1;
+
+ *ppDM = (LPDIRECTMUSIC)dmusic;
+ return S_OK;
+
+ WARN("No interface found\n");
+ return E_NOINTERFACE;
+}
+
+
+/* IDirectMusic8 Interface follow: */
+HRESULT WINAPI IDirectMusic8Impl_EnumPort (LPDIRECTMUSIC8 iface, DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusic8Impl_CreateMusicBuffer (LPDIRECTMUSIC8 iface, LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER** ppBuffer, LPUNKNOWN pUnkOuter)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusic8Impl_CreatePort (LPDIRECTMUSIC8 iface, REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT* ppPort, LPUNKNOWN pUnkOuter)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusic8Impl_EnumMasterClock (LPDIRECTMUSIC8 iface, DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusic8Impl_GetMasterClock (LPDIRECTMUSIC8 iface, LPGUID pguidClock, IReferenceClock** ppReferenceClock)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusic8Impl_SetMasterClock (LPDIRECTMUSIC8 iface, REFGUID rguidClock)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusic8Impl_Activate (LPDIRECTMUSIC8 iface, BOOL fEnable)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusic8Impl_GetDefaultPort (LPDIRECTMUSIC8 iface, LPGUID pguidPort)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusic8Impl_SetDirectSound (LPDIRECTMUSIC8 iface, LPDIRECTSOUND pDirectSound, HWND hWnd)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusic8Impl_SetExternalMasterClock (LPDIRECTMUSIC8 iface, IReferenceClock* pClock)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusic8) DirectMusic8_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusic8Impl_QueryInterface,
+ IDirectMusic8Impl_AddRef,
+ IDirectMusic8Impl_Release,
+ IDirectMusic8Impl_EnumPort,
+ IDirectMusic8Impl_CreateMusicBuffer,
+ IDirectMusic8Impl_CreatePort,
+ IDirectMusic8Impl_EnumMasterClock,
+ IDirectMusic8Impl_GetMasterClock,
+ IDirectMusic8Impl_SetMasterClock,
+ IDirectMusic8Impl_Activate,
+ IDirectMusic8Impl_GetDefaultPort,
+ IDirectMusic8Impl_SetDirectSound,
+ IDirectMusic8Impl_SetExternalMasterClock
+};
+
+
+/* IDirectMusicDownload IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicDownloadImpl_QueryInterface (LPDIRECTMUSICDOWNLOAD iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicDownloadImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicDownload))
+ {
+ IDirectMusicDownloadImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicDownloadImpl_AddRef (LPDIRECTMUSICDOWNLOAD iface)
+{
+ ICOM_THIS(IDirectMusicDownloadImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicDownloadImpl_Release (LPDIRECTMUSICDOWNLOAD iface)
+{
+ ICOM_THIS(IDirectMusicDownloadImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicDownload Interface follow: */
+HRESULT WINAPI IDirectMusicDownloadImpl_GetBuffer (LPDIRECTMUSICDOWNLOAD iface, void** ppvBuffer, DWORD* pdwSize)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicDownload) DirectMusicDownload_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicDownloadImpl_QueryInterface,
+ IDirectMusicDownloadImpl_AddRef,
+ IDirectMusicDownloadImpl_Release,
+ IDirectMusicDownloadImpl_GetBuffer
+};
+
+
+/* IDirectMusicBuffer IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicBufferImpl_QueryInterface (LPDIRECTMUSICBUFFER iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicBufferImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicBuffer))
+ {
+ IDirectMusicBufferImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicBufferImpl_AddRef (LPDIRECTMUSICBUFFER iface)
+{
+ ICOM_THIS(IDirectMusicBufferImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicBufferImpl_Release (LPDIRECTMUSICBUFFER iface)
+{
+ ICOM_THIS(IDirectMusicBufferImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicBuffer Interface follow: */
+HRESULT WINAPI IDirectMusicBufferImpl_Flush (LPDIRECTMUSICBUFFER iface)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_TotalTime (LPDIRECTMUSICBUFFER iface, LPREFERENCE_TIME prtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_PackStructured (LPDIRECTMUSICBUFFER iface, REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD dwChannelMessage)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_PackUnstructured (LPDIRECTMUSICBUFFER iface, REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD cb, LPBYTE lpb)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_ResetReadPtr (LPDIRECTMUSICBUFFER iface)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_GetNextEvent (LPDIRECTMUSICBUFFER iface, LPREFERENCE_TIME prt, LPDWORD pdwChannelGroup, LPDWORD pdwLength, LPBYTE* ppData)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_GetRawBufferPtr (LPDIRECTMUSICBUFFER iface, LPBYTE* ppData)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_GetStartTime (LPDIRECTMUSICBUFFER iface, LPREFERENCE_TIME prt)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_GetUsedBytes (LPDIRECTMUSICBUFFER iface, LPDWORD pcb)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_GetMaxBytes (LPDIRECTMUSICBUFFER iface, LPDWORD pcb)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_GetBufferFormat (LPDIRECTMUSICBUFFER iface, LPGUID pGuidFormat)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_SetStartTime (LPDIRECTMUSICBUFFER iface, REFERENCE_TIME rt)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBufferImpl_SetUsedBytes (LPDIRECTMUSICBUFFER iface, DWORD cb)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicBuffer) DirectMusicBuffer_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicBufferImpl_QueryInterface,
+ IDirectMusicBufferImpl_AddRef,
+ IDirectMusicBufferImpl_Release,
+ IDirectMusicBufferImpl_Flush,
+ IDirectMusicBufferImpl_TotalTime,
+ IDirectMusicBufferImpl_PackStructured,
+ IDirectMusicBufferImpl_PackUnstructured,
+ IDirectMusicBufferImpl_ResetReadPtr,
+ IDirectMusicBufferImpl_GetNextEvent,
+ IDirectMusicBufferImpl_GetRawBufferPtr,
+ IDirectMusicBufferImpl_GetStartTime,
+ IDirectMusicBufferImpl_GetUsedBytes,
+ IDirectMusicBufferImpl_GetMaxBytes,
+ IDirectMusicBufferImpl_GetBufferFormat,
+ IDirectMusicBufferImpl_SetStartTime,
+ IDirectMusicBufferImpl_SetUsedBytes
+};
+
+
+/* IDirectMusicObject IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicObjectImpl_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicObjectImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicObject))
+ {
+ IDirectMusicObjectImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicObjectImpl_AddRef (LPDIRECTMUSICOBJECT iface)
+{
+ ICOM_THIS(IDirectMusicObjectImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicObjectImpl_Release (LPDIRECTMUSICOBJECT iface)
+{
+ ICOM_THIS(IDirectMusicObjectImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicObject Interface follow: */
+HRESULT WINAPI IDirectMusicObjectImpl_GetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicObjectImpl_SetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicObjectImpl_ParseDescriptor (LPDIRECTMUSICOBJECT iface, LPSTREAM pStream, LPDMUS_OBJECTDESC pDesc)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicObject) DirectMusicObject_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicObjectImpl_QueryInterface,
+ IDirectMusicObjectImpl_AddRef,
+ IDirectMusicObjectImpl_Release,
+ IDirectMusicObjectImpl_GetDescriptor,
+ IDirectMusicObjectImpl_SetDescriptor,
+ IDirectMusicObjectImpl_ParseDescriptor
+};
diff --git a/dlls/dmusic/dmusic8.c b/dlls/dmusic/dmusic8.c
deleted file mode 100644
index 443771a..0000000
--- a/dlls/dmusic/dmusic8.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* IDirectMusic8 Implementation
- *
- * Copyright (C) 2003 Rok Mandeljc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-
-#include "dmusic_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
-
-/* IDirectMusic8 IUnknown parts follow: */
-HRESULT WINAPI IDirectMusic8Impl_QueryInterface (LPDIRECTMUSIC8 iface, REFIID riid, LPVOID *ppobj)
-{
- ICOM_THIS(IDirectMusic8Impl,iface);
-
- if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusic8))
- {
- IDirectMusic8Impl_AddRef(iface);
- *ppobj = This;
- return DS_OK;
- }
- WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
- return E_NOINTERFACE;
-}
-
-ULONG WINAPI IDirectMusic8Impl_AddRef (LPDIRECTMUSIC8 iface)
-{
- ICOM_THIS(IDirectMusic8Impl,iface);
- TRACE("(%p) : AddRef from %ld\n", This, This->ref);
- return ++(This->ref);
-}
-
-ULONG WINAPI IDirectMusic8Impl_Release (LPDIRECTMUSIC8 iface)
-{
- ICOM_THIS(IDirectMusic8Impl,iface);
- ULONG ref = --This->ref;
- TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
- if (ref == 0)
- {
- HeapFree(GetProcessHeap(), 0, This);
- }
- return ref;
-}
-
-/* IDirectMusic8 Interface follow: */
-HRESULT WINAPI IDirectMusic8Impl_EnumPort (LPDIRECTMUSIC8 iface, DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusic8Impl_CreateMusicBuffer (LPDIRECTMUSIC8 iface, LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER** ppBuffer, LPUNKNOWN pUnkOuter)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusic8Impl_CreatePort (LPDIRECTMUSIC8 iface, REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT* ppPort, LPUNKNOWN pUnkOuter)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusic8Impl_EnumMasterClock (LPDIRECTMUSIC8 iface, DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusic8Impl_GetMasterClock (LPDIRECTMUSIC8 iface, LPGUID pguidClock, IReferenceClock** ppReferenceClock)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusic8Impl_SetMasterClock (LPDIRECTMUSIC8 iface, REFGUID rguidClock)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusic8Impl_Activate (LPDIRECTMUSIC8 iface, BOOL fEnable)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusic8Impl_GetDefaultPort (LPDIRECTMUSIC8 iface, LPGUID pguidPort)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusic8Impl_SetDirectSound (LPDIRECTMUSIC8 iface, LPDIRECTSOUND pDirectSound, HWND hWnd)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusic8Impl_SetExternalMasterClock (LPDIRECTMUSIC8 iface, IReferenceClock* pClock)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-ICOM_VTABLE(IDirectMusic8) DirectMusic8_Vtbl =
-{
- ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
- IDirectMusic8Impl_QueryInterface,
- IDirectMusic8Impl_AddRef,
- IDirectMusic8Impl_Release,
- IDirectMusic8Impl_EnumPort,
- IDirectMusic8Impl_CreateMusicBuffer,
- IDirectMusic8Impl_CreatePort,
- IDirectMusic8Impl_EnumMasterClock,
- IDirectMusic8Impl_GetMasterClock,
- IDirectMusic8Impl_SetMasterClock,
- IDirectMusic8Impl_Activate,
- IDirectMusic8Impl_GetDefaultPort,
- IDirectMusic8Impl_SetDirectSound,
- IDirectMusic8Impl_SetExternalMasterClock
-};
diff --git a/dlls/dmusic/dmusic_buffer.c b/dlls/dmusic/dmusic_buffer.c
deleted file mode 100644
index 45f57ed..0000000
--- a/dlls/dmusic/dmusic_buffer.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/* IDirectMusicBuffer Implementation
- *
- * Copyright (C) 2003 Rok Mandeljc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-
-#include "dmusic_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
-
-/* IDirectMusicBuffer IUnknown parts follow: */
-HRESULT WINAPI IDirectMusicBufferImpl_QueryInterface (LPDIRECTMUSICBUFFER iface, REFIID riid, LPVOID *ppobj)
-{
- ICOM_THIS(IDirectMusicBufferImpl,iface);
-
- if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicBuffer))
- {
- IDirectMusicBufferImpl_AddRef(iface);
- *ppobj = This;
- return DS_OK;
- }
- WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
- return E_NOINTERFACE;
-}
-
-ULONG WINAPI IDirectMusicBufferImpl_AddRef (LPDIRECTMUSICBUFFER iface)
-{
- ICOM_THIS(IDirectMusicBufferImpl,iface);
- TRACE("(%p) : AddRef from %ld\n", This, This->ref);
- return ++(This->ref);
-}
-
-ULONG WINAPI IDirectMusicBufferImpl_Release (LPDIRECTMUSICBUFFER iface)
-{
- ICOM_THIS(IDirectMusicBufferImpl,iface);
- ULONG ref = --This->ref;
- TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
- if (ref == 0)
- {
- HeapFree(GetProcessHeap(), 0, This);
- }
- return ref;
-}
-
-/* IDirectMusicBuffer Interface follow: */
-HRESULT WINAPI IDirectMusicBufferImpl_Flush (LPDIRECTMUSICBUFFER iface)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_TotalTime (LPDIRECTMUSICBUFFER iface, LPREFERENCE_TIME prtTime)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_PackStructured (LPDIRECTMUSICBUFFER iface, REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD dwChannelMessage)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_PackUnstructured (LPDIRECTMUSICBUFFER iface, REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD cb, LPBYTE lpb)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_ResetReadPtr (LPDIRECTMUSICBUFFER iface)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_GetNextEvent (LPDIRECTMUSICBUFFER iface, LPREFERENCE_TIME prt, LPDWORD pdwChannelGroup, LPDWORD pdwLength, LPBYTE* ppData)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_GetRawBufferPtr (LPDIRECTMUSICBUFFER iface, LPBYTE* ppData)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_GetStartTime (LPDIRECTMUSICBUFFER iface, LPREFERENCE_TIME prt)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_GetUsedBytes (LPDIRECTMUSICBUFFER iface, LPDWORD pcb)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_GetMaxBytes (LPDIRECTMUSICBUFFER iface, LPDWORD pcb)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_GetBufferFormat (LPDIRECTMUSICBUFFER iface, LPGUID pGuidFormat)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_SetStartTime (LPDIRECTMUSICBUFFER iface, REFERENCE_TIME rt)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicBufferImpl_SetUsedBytes (LPDIRECTMUSICBUFFER iface, DWORD cb)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-ICOM_VTABLE(IDirectMusicBuffer) DirectMusicBuffer_Vtbl =
-{
- ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
- IDirectMusicBufferImpl_QueryInterface,
- IDirectMusicBufferImpl_AddRef,
- IDirectMusicBufferImpl_Release,
- IDirectMusicBufferImpl_Flush,
- IDirectMusicBufferImpl_TotalTime,
- IDirectMusicBufferImpl_PackStructured,
- IDirectMusicBufferImpl_PackUnstructured,
- IDirectMusicBufferImpl_ResetReadPtr,
- IDirectMusicBufferImpl_GetNextEvent,
- IDirectMusicBufferImpl_GetRawBufferPtr,
- IDirectMusicBufferImpl_GetStartTime,
- IDirectMusicBufferImpl_GetUsedBytes,
- IDirectMusicBufferImpl_GetMaxBytes,
- IDirectMusicBufferImpl_GetBufferFormat,
- IDirectMusicBufferImpl_SetStartTime,
- IDirectMusicBufferImpl_SetUsedBytes
-};
diff --git a/dlls/dmusic/dmusic_collection.c b/dlls/dmusic/dmusic_collection.c
deleted file mode 100644
index c24453c..0000000
--- a/dlls/dmusic/dmusic_collection.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* IDirectMusicCollection Implementation
- *
- * Copyright (C) 2003 Rok Mandeljc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-
-#include "dmusic_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
-
-/* IDirectMusicCollection IUnknown parts follow: */
-HRESULT WINAPI IDirectMusicCollectionImpl_QueryInterface (LPDIRECTMUSICCOLLECTION iface, REFIID riid, LPVOID *ppobj)
-{
- ICOM_THIS(IDirectMusicCollectionImpl,iface);
-
- if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicCollection))
- {
- IDirectMusicCollectionImpl_AddRef(iface);
- *ppobj = This;
- return DS_OK;
- }
- WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
- return E_NOINTERFACE;
-}
-
-ULONG WINAPI IDirectMusicCollectionImpl_AddRef (LPDIRECTMUSICCOLLECTION iface)
-{
- ICOM_THIS(IDirectMusicCollectionImpl,iface);
- TRACE("(%p) : AddRef from %ld\n", This, This->ref);
- return ++(This->ref);
-}
-
-ULONG WINAPI IDirectMusicCollectionImpl_Release (LPDIRECTMUSICCOLLECTION iface)
-{
- ICOM_THIS(IDirectMusicCollectionImpl,iface);
- ULONG ref = --This->ref;
- TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
- if (ref == 0)
- {
- HeapFree(GetProcessHeap(), 0, This);
- }
- return ref;
-}
-
-/* IDirectMusicCollection Interface follow: */
-HRESULT WINAPI IDirectMusicCollectionImpl_GetInstrument (LPDIRECTMUSICCOLLECTION iface, DWORD dwPatch, IDirectMusicInstrument** ppInstrument)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicCollectionImpl_EnumInstrument (LPDIRECTMUSICCOLLECTION iface, DWORD dwIndex, DWORD* pdwPatch, LPWSTR pwszName, DWORD dwNameLen)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-ICOM_VTABLE(IDirectMusicCollection) DirectMusicCollection_Vtbl =
-{
- ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
- IDirectMusicCollectionImpl_QueryInterface,
- IDirectMusicCollectionImpl_AddRef,
- IDirectMusicCollectionImpl_Release,
- IDirectMusicCollectionImpl_GetInstrument,
- IDirectMusicCollectionImpl_EnumInstrument
-};
diff --git a/dlls/dmusic/dmusic_dlinstrument.c b/dlls/dmusic/dmusic_dlinstrument.c
deleted file mode 100644
index 60309fd..0000000
--- a/dlls/dmusic/dmusic_dlinstrument.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* IDirectMusicDownloadedInstrument Implementation
- *
- * Copyright (C) 2003 Rok Mandeljc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-
-#include "dmusic_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
-
-/* IDirectMusicDownloadedInstrument IUnknown parts follow: */
-HRESULT WINAPI IDirectMusicDownloadedInstrumentImpl_QueryInterface (LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface, REFIID riid, LPVOID *ppobj)
-{
- ICOM_THIS(IDirectMusicDownloadedInstrumentImpl,iface);
-
- if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicDownloadedInstrument))
- {
- IDirectMusicDownloadedInstrumentImpl_AddRef(iface);
- *ppobj = This;
- return DS_OK;
- }
- WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
- return E_NOINTERFACE;
-}
-
-ULONG WINAPI IDirectMusicDownloadedInstrumentImpl_AddRef (LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface)
-{
- ICOM_THIS(IDirectMusicDownloadedInstrumentImpl,iface);
- TRACE("(%p) : AddRef from %ld\n", This, This->ref);
- return ++(This->ref);
-}
-
-ULONG WINAPI IDirectMusicDownloadedInstrumentImpl_Release (LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface)
-{
- ICOM_THIS(IDirectMusicDownloadedInstrumentImpl,iface);
- ULONG ref = --This->ref;
- TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
- if (ref == 0)
- {
- HeapFree(GetProcessHeap(), 0, This);
- }
- return ref;
-}
-
-/* IDirectMusicDownloadedInstrument Interface follow: */
-/* none at this time */
-
-ICOM_VTABLE(IDirectMusicDownloadedInstrument) DirectMusicDownloadedInstrument_Vtbl =
-{
- ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
- IDirectMusicDownloadedInstrumentImpl_QueryInterface,
- IDirectMusicDownloadedInstrumentImpl_AddRef,
- IDirectMusicDownloadedInstrumentImpl_Release
-};
diff --git a/dlls/dmusic/dmusic_download.c b/dlls/dmusic/dmusic_download.c
deleted file mode 100644
index bd8b63e..0000000
--- a/dlls/dmusic/dmusic_download.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* IDirectMusicDownload Implementation
- *
- * Copyright (C) 2003 Rok Mandeljc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-
-#include "dmusic_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
-
-/* IDirectMusicDownload IUnknown parts follow: */
-HRESULT WINAPI IDirectMusicDownloadImpl_QueryInterface (LPDIRECTMUSICDOWNLOAD iface, REFIID riid, LPVOID *ppobj)
-{
- ICOM_THIS(IDirectMusicDownloadImpl,iface);
-
- if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicDownload))
- {
- IDirectMusicDownloadImpl_AddRef(iface);
- *ppobj = This;
- return DS_OK;
- }
- WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
- return E_NOINTERFACE;
-}
-
-ULONG WINAPI IDirectMusicDownloadImpl_AddRef (LPDIRECTMUSICDOWNLOAD iface)
-{
- ICOM_THIS(IDirectMusicDownloadImpl,iface);
- TRACE("(%p) : AddRef from %ld\n", This, This->ref);
- return ++(This->ref);
-}
-
-ULONG WINAPI IDirectMusicDownloadImpl_Release (LPDIRECTMUSICDOWNLOAD iface)
-{
- ICOM_THIS(IDirectMusicDownloadImpl,iface);
- ULONG ref = --This->ref;
- TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
- if (ref == 0)
- {
- HeapFree(GetProcessHeap(), 0, This);
- }
- return ref;
-}
-
-/* IDirectMusicDownload Interface follow: */
-HRESULT WINAPI IDirectMusicDownloadImpl_GetBuffer (LPDIRECTMUSICDOWNLOAD iface, void** ppvBuffer, DWORD* pdwSize)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-ICOM_VTABLE(IDirectMusicDownload) DirectMusicDownload_Vtbl =
-{
- ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
- IDirectMusicDownloadImpl_QueryInterface,
- IDirectMusicDownloadImpl_AddRef,
- IDirectMusicDownloadImpl_Release,
- IDirectMusicDownloadImpl_GetBuffer
-};
diff --git a/dlls/dmusic/dmusic_instrument.c b/dlls/dmusic/dmusic_instrument.c
index 9a151ac..dcb030f 100644
--- a/dlls/dmusic/dmusic_instrument.c
+++ b/dlls/dmusic/dmusic_instrument.c
@@ -1,4 +1,6 @@
/* IDirectMusicInstrument Implementation
+ * IDirectMusicDownloadedInstrument Implementation
+ * IDirectMusicCollection Implementation
*
* Copyright (C) 2003 Rok Mandeljc
*
@@ -83,3 +85,107 @@
IDirectMusicInstrumentImpl_GetPatch,
IDirectMusicInstrumentImpl_SetPatch
};
+
+
+/* IDirectMusicDownloadedInstrument IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicDownloadedInstrumentImpl_QueryInterface (LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicDownloadedInstrumentImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicDownloadedInstrument))
+ {
+ IDirectMusicDownloadedInstrumentImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicDownloadedInstrumentImpl_AddRef (LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface)
+{
+ ICOM_THIS(IDirectMusicDownloadedInstrumentImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicDownloadedInstrumentImpl_Release (LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface)
+{
+ ICOM_THIS(IDirectMusicDownloadedInstrumentImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicDownloadedInstrument Interface follow: */
+/* none at this time */
+
+ICOM_VTABLE(IDirectMusicDownloadedInstrument) DirectMusicDownloadedInstrument_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicDownloadedInstrumentImpl_QueryInterface,
+ IDirectMusicDownloadedInstrumentImpl_AddRef,
+ IDirectMusicDownloadedInstrumentImpl_Release
+};
+
+
+/* IDirectMusicCollection IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicCollectionImpl_QueryInterface (LPDIRECTMUSICCOLLECTION iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicCollectionImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicCollection))
+ {
+ IDirectMusicCollectionImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicCollectionImpl_AddRef (LPDIRECTMUSICCOLLECTION iface)
+{
+ ICOM_THIS(IDirectMusicCollectionImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicCollectionImpl_Release (LPDIRECTMUSICCOLLECTION iface)
+{
+ ICOM_THIS(IDirectMusicCollectionImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicCollection Interface follow: */
+HRESULT WINAPI IDirectMusicCollectionImpl_GetInstrument (LPDIRECTMUSICCOLLECTION iface, DWORD dwPatch, IDirectMusicInstrument** ppInstrument)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicCollectionImpl_EnumInstrument (LPDIRECTMUSICCOLLECTION iface, DWORD dwIndex, DWORD* pdwPatch, LPWSTR pwszName, DWORD dwNameLen)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicCollection) DirectMusicCollection_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicCollectionImpl_QueryInterface,
+ IDirectMusicCollectionImpl_AddRef,
+ IDirectMusicCollectionImpl_Release,
+ IDirectMusicCollectionImpl_GetInstrument,
+ IDirectMusicCollectionImpl_EnumInstrument
+};
diff --git a/dlls/dmusic/dmusic_loader.c b/dlls/dmusic/dmusic_loader.c
new file mode 100644
index 0000000..9b7c3d5
--- /dev/null
+++ b/dlls/dmusic/dmusic_loader.c
@@ -0,0 +1,315 @@
+/* IDirectMusicLoader Implementation
+ * IDirectMusicLoader8 Implementation
+ * IDirectMusicGetLoader Implementation
+ *
+ * Copyright (C) 2003 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "wine/debug.h"
+
+#include "dmusic_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
+
+/* IDirectMusicLoader IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicLoaderImpl_QueryInterface (LPDIRECTMUSICLOADER iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicLoaderImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicLoader))
+ {
+ IDirectMusicLoaderImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicLoaderImpl_AddRef (LPDIRECTMUSICLOADER iface)
+{
+ ICOM_THIS(IDirectMusicLoaderImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicLoaderImpl_Release (LPDIRECTMUSICLOADER iface)
+{
+ ICOM_THIS(IDirectMusicLoaderImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicLoader Interface follow: */
+HRESULT WINAPI IDirectMusicLoaderImpl_GetObject (LPDIRECTMUSICLOADER iface, LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID*ppv)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoaderImpl_SetObject (LPDIRECTMUSICLOADER iface, LPDMUS_OBJECTDESC pDesc)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoaderImpl_SetSearchDirectory (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, WCHAR* pwzPath, BOOL fClear)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoaderImpl_ScanDirectory (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, WCHAR* pwzFileExtension, WCHAR* pwzScanFileName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoaderImpl_CacheObject (LPDIRECTMUSICLOADER iface, IDirectMusicObject* pObject)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoaderImpl_ReleaseObject (LPDIRECTMUSICLOADER iface, IDirectMusicObject* pObject)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoaderImpl_ClearCache (LPDIRECTMUSICLOADER iface, REFGUID rguidClass)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoaderImpl_EnableCache (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, BOOL fEnable)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoaderImpl_EnumObject (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicLoader) DirectMusicLoader_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicLoaderImpl_QueryInterface,
+ IDirectMusicLoaderImpl_AddRef,
+ IDirectMusicLoaderImpl_Release,
+ IDirectMusicLoaderImpl_GetObject,
+ IDirectMusicLoaderImpl_SetObject,
+ IDirectMusicLoaderImpl_SetSearchDirectory,
+ IDirectMusicLoaderImpl_ScanDirectory,
+ IDirectMusicLoaderImpl_CacheObject,
+ IDirectMusicLoaderImpl_ReleaseObject,
+ IDirectMusicLoaderImpl_ClearCache,
+ IDirectMusicLoaderImpl_EnableCache,
+ IDirectMusicLoaderImpl_EnumObject
+};
+
+
+/* IDirectMusicLoader8 IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicLoader8Impl_QueryInterface (LPDIRECTMUSICLOADER8 iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicLoader8Impl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicLoader8))
+ {
+ IDirectMusicLoader8Impl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicLoader8Impl_AddRef (LPDIRECTMUSICLOADER8 iface)
+{
+ ICOM_THIS(IDirectMusicLoader8Impl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicLoader8Impl_Release (LPDIRECTMUSICLOADER8 iface)
+{
+ ICOM_THIS(IDirectMusicLoader8Impl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicLoader Interface part follow: */
+HRESULT WINAPI IDirectMusicLoader8Impl_GetObject (LPDIRECTMUSICLOADER8 iface, LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID*ppv)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_SetObject (LPDIRECTMUSICLOADER8 iface, LPDMUS_OBJECTDESC pDesc)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_SetSearchDirectory (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, WCHAR* pwzPath, BOOL fClear)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_ScanDirectory (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, WCHAR* pwzFileExtension, WCHAR* pwzScanFileName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_CacheObject (LPDIRECTMUSICLOADER8 iface, IDirectMusicObject* pObject)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_ReleaseObject (LPDIRECTMUSICLOADER8 iface, IDirectMusicObject* pObject)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_ClearCache (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_EnableCache (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, BOOL fEnable)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_EnumObject (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+/* IDirectMusicLoader8 Interface part follow: */
+void WINAPI IDirectMusicLoader8Impl_CollectGarbage (LPDIRECTMUSICLOADER8 iface)
+{
+ FIXME("stub\n");
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_ReleaseObjectByUnknown (LPDIRECTMUSICLOADER8 iface, IUnknown* pObject)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicLoader8Impl_LoadObjectFromFile (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClassID, REFIID iidInterfaceID, WCHAR* pwzFilePath, void** ppObject)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicLoader8) DirectMusicLoader8_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicLoader8Impl_QueryInterface,
+ IDirectMusicLoader8Impl_AddRef,
+ IDirectMusicLoader8Impl_Release,
+ IDirectMusicLoader8Impl_GetObject,
+ IDirectMusicLoader8Impl_SetObject,
+ IDirectMusicLoader8Impl_SetSearchDirectory,
+ IDirectMusicLoader8Impl_ScanDirectory,
+ IDirectMusicLoader8Impl_CacheObject,
+ IDirectMusicLoader8Impl_ReleaseObject,
+ IDirectMusicLoader8Impl_ClearCache,
+ IDirectMusicLoader8Impl_EnableCache,
+ IDirectMusicLoader8Impl_EnumObject,
+ IDirectMusicLoader8Impl_CollectGarbage,
+ IDirectMusicLoader8Impl_ReleaseObjectByUnknown,
+ IDirectMusicLoader8Impl_LoadObjectFromFile
+};
+
+
+/* IDirectMusicGetLoader IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicGetLoaderImpl_QueryInterface (LPDIRECTMUSICGETLOADER iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicGetLoaderImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicGetLoader))
+ {
+ IDirectMusicGetLoaderImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicGetLoaderImpl_AddRef (LPDIRECTMUSICGETLOADER iface)
+{
+ ICOM_THIS(IDirectMusicGetLoaderImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicGetLoaderImpl_Release (LPDIRECTMUSICGETLOADER iface)
+{
+ ICOM_THIS(IDirectMusicGetLoaderImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicGetLoader Interface follow: */
+HRESULT WINAPI IDirectMusicGetLoaderImpl_GetLoader (LPDIRECTMUSICGETLOADER iface, IDirectMusicLoader** ppLoader)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicGetLoader) DirectMusicGetLoader_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicGetLoaderImpl_QueryInterface,
+ IDirectMusicGetLoaderImpl_AddRef,
+ IDirectMusicGetLoaderImpl_Release,
+ IDirectMusicGetLoaderImpl_GetLoader
+};
diff --git a/dlls/dmusic/dmusic_misc.c b/dlls/dmusic/dmusic_misc.c
new file mode 100644
index 0000000..8ee3a1f
--- /dev/null
+++ b/dlls/dmusic/dmusic_misc.c
@@ -0,0 +1,760 @@
+/* IReferenceClock Implementation
+ * IDirectMusicThru Implementation
+ * IDirectMusicAudioPath Implementation
+ * IDirectMusicBand Implementation
+ * IDirectMusicSong Implementation
+ * IDirectMusicChordMap Implementation
+ * IDirectMusicComposer
+ * IDirectMusicContainer
+ * IDirectMusicGraph
+ * IDirectMusicScript
+ *
+ * Copyright (C) 2003 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "wine/debug.h"
+
+#include "dmusic_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
+
+/* IReferenceClock IUnknown parts follow: */
+HRESULT WINAPI IReferenceClockImpl_QueryInterface (LPREFERENCECLOCK iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IReferenceClockImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IReferenceClock))
+ {
+ IReferenceClockImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IReferenceClockImpl_AddRef (LPREFERENCECLOCK iface)
+{
+ ICOM_THIS(IReferenceClockImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IReferenceClockImpl_Release (LPREFERENCECLOCK iface)
+{
+ ICOM_THIS(IReferenceClockImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IReferenceClock Interface follow: */
+HRESULT WINAPI IReferenceClockImpl_GetTime (LPREFERENCECLOCK iface, REFERENCE_TIME* pTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IReferenceClockImpl_AdviseTime (LPREFERENCECLOCK iface, REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HANDLE hEvent, DWORD* pdwAdviseCookie)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IReferenceClockImpl_AdvisePeriodic (LPREFERENCECLOCK iface, REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD* pdwAdviseCookie)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IReferenceClockImpl_Unadvise (LPREFERENCECLOCK iface, DWORD dwAdviseCookie)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IReferenceClock) ReferenceClock_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IReferenceClockImpl_QueryInterface,
+ IReferenceClockImpl_AddRef,
+ IReferenceClockImpl_Release,
+ IReferenceClockImpl_GetTime,
+ IReferenceClockImpl_AdviseTime,
+ IReferenceClockImpl_AdvisePeriodic,
+ IReferenceClockImpl_Unadvise
+};
+
+
+/* IDirectMusicThru IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicThruImpl_QueryInterface (LPDIRECTMUSICTHRU iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicThruImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicThru))
+ {
+ IDirectMusicThruImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicThruImpl_AddRef (LPDIRECTMUSICTHRU iface)
+{
+ ICOM_THIS(IDirectMusicThruImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicThruImpl_Release (LPDIRECTMUSICTHRU iface)
+{
+ ICOM_THIS(IDirectMusicThruImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicThru Interface follow: */
+HRESULT WINAPI IDirectMusicThruImpl_ThruChannel (LPDIRECTMUSICTHRU iface, DWORD dwSourceChannelGroup, DWORD dwSourceChannel, DWORD dwDestinationChannelGroup, DWORD dwDestinationChannel, LPDIRECTMUSICPORT pDestinationPort)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicThru) DirectMusicThru_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicThruImpl_QueryInterface,
+ IDirectMusicThruImpl_AddRef,
+ IDirectMusicThruImpl_Release,
+ IDirectMusicThruImpl_ThruChannel
+};
+
+
+/* IDirectMusicAudioPath IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicAudioPathImpl_QueryInterface (LPDIRECTMUSICAUDIOPATH iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicAudioPathImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicAudioPath))
+ {
+ IDirectMusicAudioPathImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicAudioPathImpl_AddRef (LPDIRECTMUSICAUDIOPATH iface)
+{
+ ICOM_THIS(IDirectMusicAudioPathImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicAudioPathImpl_Release (LPDIRECTMUSICAUDIOPATH iface)
+{
+ ICOM_THIS(IDirectMusicAudioPathImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicAudioPath Interface follow: */
+HRESULT WINAPI IDirectMusicAudioPathImpl_GetObjectInPath (LPDIRECTMUSICAUDIOPATH iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, WORD dwIndex, REFGUID iidInterface, void** ppObject)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicAudioPathImpl_Activate (LPDIRECTMUSICAUDIOPATH iface, BOOL fActivate)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicAudioPathImpl_SetVolume (LPDIRECTMUSICAUDIOPATH iface, long lVolume, DWORD dwDuration)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicAudioPathImpl_ConvertPChannel (LPDIRECTMUSICAUDIOPATH iface, DWORD dwPChannelIn, DWORD* pdwPChannelOut)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicAudioPath) DirectMusicAudioPath_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicAudioPathImpl_QueryInterface,
+ IDirectMusicAudioPathImpl_AddRef,
+ IDirectMusicAudioPathImpl_Release,
+
+};
+
+
+/* IDirectMusicBand IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicBandImpl_QueryInterface (LPDIRECTMUSICBAND iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicBandImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicBand))
+ {
+ IDirectMusicBandImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicBandImpl_AddRef (LPDIRECTMUSICBAND iface)
+{
+ ICOM_THIS(IDirectMusicBandImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicBandImpl_Release (LPDIRECTMUSICBAND iface)
+{
+ ICOM_THIS(IDirectMusicBandImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicBand Interface follow: */
+HRESULT WINAPI IDirectMusicBandImpl_CreateSegment (LPDIRECTMUSICBAND iface, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBandImpl_Download (LPDIRECTMUSICBAND iface, IDirectMusicPerformance* pPerformance)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicBandImpl_Unload (LPDIRECTMUSICBAND iface, IDirectMusicPerformance* pPerformance)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicBand) DirectMusicBand_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicBandImpl_QueryInterface,
+ IDirectMusicBandImpl_AddRef,
+ IDirectMusicBandImpl_Release,
+ IDirectMusicBandImpl_CreateSegment,
+ IDirectMusicBandImpl_Download,
+ IDirectMusicBandImpl_Unload
+};
+
+
+/* IDirectMusicSong IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicSongImpl_QueryInterface (LPDIRECTMUSICSONG iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicSongImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicSong))
+ {
+ IDirectMusicSongImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicSongImpl_AddRef (LPDIRECTMUSICSONG iface)
+{
+ ICOM_THIS(IDirectMusicSongImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicSongImpl_Release (LPDIRECTMUSICSONG iface)
+{
+ ICOM_THIS(IDirectMusicSongImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicSong Interface follow: */
+HRESULT WINAPI IDirectMusicSongImpl_Compose (LPDIRECTMUSICSONG iface)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSongImpl_GetParam (LPDIRECTMUSICSONG iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSongImpl_GetSegment (LPDIRECTMUSICSONG iface, WCHAR* pwzName, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSongImpl_GetAudioPathConfig (LPDIRECTMUSICSONG iface, IUnknown** ppAudioPathConfig)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSongImpl_Download (LPDIRECTMUSICSONG iface, IUnknown* pAudioPath)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSongImpl_Unload (LPDIRECTMUSICSONG iface, IUnknown* pAudioPath)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSongImpl_EnumSegment (LPDIRECTMUSICSONG iface, DWORD dwIndex, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicSong) DirectMusicSong_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicSongImpl_QueryInterface,
+ IDirectMusicSongImpl_AddRef,
+ IDirectMusicSongImpl_Release,
+ IDirectMusicSongImpl_Compose,
+ IDirectMusicSongImpl_GetParam,
+ IDirectMusicSongImpl_GetSegment,
+ IDirectMusicSongImpl_GetAudioPathConfig,
+ IDirectMusicSongImpl_Download,
+ IDirectMusicSongImpl_Unload,
+ IDirectMusicSongImpl_EnumSegment
+};
+
+
+/* IDirectMusicChordMap IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicChordMapImpl_QueryInterface (LPDIRECTMUSICCHORDMAP iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicChordMapImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicChordMap))
+ {
+ IDirectMusicChordMapImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicChordMapImpl_AddRef (LPDIRECTMUSICCHORDMAP iface)
+{
+ ICOM_THIS(IDirectMusicChordMapImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicChordMapImpl_Release (LPDIRECTMUSICCHORDMAP iface)
+{
+ ICOM_THIS(IDirectMusicChordMapImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicChordMap Interface follow: */
+HRESULT WINAPI IDirectMusicChordMapImpl_GetScale (LPDIRECTMUSICCHORDMAP iface, DWORD* pdwScale)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicChordMap) DirectMusicChordMap_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicChordMapImpl_QueryInterface,
+ IDirectMusicChordMapImpl_AddRef,
+ IDirectMusicChordMapImpl_Release,
+ IDirectMusicChordMapImpl_GetScale
+};
+
+
+/* IDirectMusicComposer IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicComposerImpl_QueryInterface (LPDIRECTMUSICCOMPOSER iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicComposerImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicComposer))
+ {
+ IDirectMusicComposerImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicComposerImpl_AddRef (LPDIRECTMUSICCOMPOSER iface)
+{
+ ICOM_THIS(IDirectMusicComposerImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicComposerImpl_Release (LPDIRECTMUSICCOMPOSER iface)
+{
+ ICOM_THIS(IDirectMusicComposerImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicComposer Interface follow: */
+HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromTemplate (LPDIRECTMUSICCOMPOSER iface, IDirectMusicStyle* pStyle, IDirectMusicSegment* pTemplate, WORD wActivity, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromShape (LPDIRECTMUSICCOMPOSER iface, IDirectMusicStyle* pStyle, WORD wNumMeasures, WORD wShape, WORD wActivity, BOOL fIntro, BOOL fEnd, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicComposerImpl_ComposeTransition (LPDIRECTMUSICCOMPOSER iface, IDirectMusicSegment* pFromSeg, IDirectMusicSegment* pToSeg, MUSIC_TIME mtTime, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppTransSeg)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicComposerImpl_AutoTransition (LPDIRECTMUSICCOMPOSER iface, IDirectMusicPerformance* pPerformance, IDirectMusicSegment* pToSeg, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppTransSeg, IDirectMusicSegmentState** ppToSegState, IDirectMusicSegmentState** ppTransSegState)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicComposerImpl_ComposeTemplateFromShape (LPDIRECTMUSICCOMPOSER iface, WORD wNumMeasures, WORD wShape, BOOL fIntro, BOOL fEnd, WORD wEndLength, IDirectMusicSegment** ppTemplate)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicComposerImpl_ChangeChordMap (LPDIRECTMUSICCOMPOSER iface, IDirectMusicSegment* pSegment, BOOL fTrackScale, IDirectMusicChordMap* pChordMap)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicComposer) DirectMusicComposer_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicComposerImpl_QueryInterface,
+ IDirectMusicComposerImpl_AddRef,
+ IDirectMusicComposerImpl_Release,
+ IDirectMusicComposerImpl_ComposeSegmentFromTemplate,
+ IDirectMusicComposerImpl_ComposeSegmentFromShape,
+ IDirectMusicComposerImpl_ComposeTransition,
+ IDirectMusicComposerImpl_AutoTransition,
+ IDirectMusicComposerImpl_ComposeTemplateFromShape,
+ IDirectMusicComposerImpl_ChangeChordMap
+};
+
+
+/* IDirectMusicContainer IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicContainerImpl_QueryInterface (LPDIRECTMUSICCONTAINER iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicContainerImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicContainer))
+ {
+ IDirectMusicContainerImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicContainerImpl_AddRef (LPDIRECTMUSICCONTAINER iface)
+{
+ ICOM_THIS(IDirectMusicContainerImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicContainerImpl_Release (LPDIRECTMUSICCONTAINER iface)
+{
+ ICOM_THIS(IDirectMusicContainerImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicContainer Interface follow: */
+HRESULT WINAPI IDirectMusicContainerImpl_EnumObject (LPDIRECTMUSICCONTAINER iface, REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc, WCHAR* pwszAlias)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicContainer) DirectMusicContainer_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicContainerImpl_QueryInterface,
+ IDirectMusicContainerImpl_AddRef,
+ IDirectMusicContainerImpl_Release,
+ IDirectMusicContainerImpl_EnumObject
+};
+
+
+/* IDirectMusicGraph IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicGraphImpl_QueryInterface (LPDIRECTMUSICGRAPH iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicGraphImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicGraph))
+ {
+ IDirectMusicGraphImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicGraphImpl_AddRef (LPDIRECTMUSICGRAPH iface)
+{
+ ICOM_THIS(IDirectMusicGraphImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicGraphImpl_Release (LPDIRECTMUSICGRAPH iface)
+{
+ ICOM_THIS(IDirectMusicGraphImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicGraph Interface follow: */
+HRESULT WINAPI IDirectMusicGraphImpl_StampPMsg (LPDIRECTMUSICGRAPH iface, DMUS_PMSG* pPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicGraphImpl_InsertTool (LPDIRECTMUSICGRAPH iface, IDirectMusicTool* pTool, DWORD* pdwPChannels, DWORD cPChannels, LONG lIndex)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicGraphImpl_GetTool (LPDIRECTMUSICGRAPH iface, DWORD dwIndex, IDirectMusicTool** ppTool)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicGraphImpl_RemoveTool (LPDIRECTMUSICGRAPH iface, IDirectMusicTool* pTool)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicGraph) DirectMusicGraph_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicGraphImpl_QueryInterface,
+ IDirectMusicGraphImpl_AddRef,
+ IDirectMusicGraphImpl_Release,
+ IDirectMusicGraphImpl_StampPMsg,
+ IDirectMusicGraphImpl_InsertTool,
+ IDirectMusicGraphImpl_GetTool,
+ IDirectMusicGraphImpl_RemoveTool
+};
+
+
+/* IDirectMusicScript IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicScriptImpl_QueryInterface (LPDIRECTMUSICSCRIPT iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicScriptImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicScript))
+ {
+ IDirectMusicScriptImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicScriptImpl_AddRef (LPDIRECTMUSICSCRIPT iface)
+{
+ ICOM_THIS(IDirectMusicScriptImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicScriptImpl_Release (LPDIRECTMUSICSCRIPT iface)
+{
+ ICOM_THIS(IDirectMusicScriptImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicScript Interface follow: */
+HRESULT WINAPI IDirectMusicScriptImpl_Init (LPDIRECTMUSICSCRIPT iface, IDirectMusicPerformance* pPerformance, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicScriptImpl_CallRoutine (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszRoutineName, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicScriptImpl_SetVariableVariant (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, VARIANT varValue, BOOL fSetRef, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicScriptImpl_GetVariableVariant (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, VARIANT* pvarValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicScriptImpl_SetVariableNumber (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, LONG lValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicScriptImpl_GetVariableNumber (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, LONG* plValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicScriptImpl_SetVariableObject (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, IUnknown* punkValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicScriptImpl_GetVariableObject (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, REFIID riid, LPVOID* ppv, DMUS_SCRIPT_ERRORINFO* pErrorInfo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicScriptImpl_EnumRoutine (LPDIRECTMUSICSCRIPT iface, DWORD dwIndex, WCHAR* pwszName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicScriptImpl_EnumVariable (LPDIRECTMUSICSCRIPT iface, DWORD dwIndex, WCHAR* pwszName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicScript) DirectMusicScript_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicScriptImpl_QueryInterface,
+ IDirectMusicScriptImpl_AddRef,
+ IDirectMusicScriptImpl_Release,
+ IDirectMusicScriptImpl_Init,
+ IDirectMusicScriptImpl_CallRoutine,
+ IDirectMusicScriptImpl_SetVariableVariant,
+ IDirectMusicScriptImpl_GetVariableVariant,
+ IDirectMusicScriptImpl_SetVariableNumber,
+ IDirectMusicScriptImpl_GetVariableNumber,
+ IDirectMusicScriptImpl_SetVariableObject,
+ IDirectMusicScriptImpl_GetVariableObject,
+ IDirectMusicScriptImpl_EnumRoutine,
+ IDirectMusicScriptImpl_EnumVariable
+};
diff --git a/dlls/dmusic/dmusic_performance.c b/dlls/dmusic/dmusic_performance.c
new file mode 100644
index 0000000..76575a4
--- /dev/null
+++ b/dlls/dmusic/dmusic_performance.c
@@ -0,0 +1,754 @@
+/* IDirectMusicPerformance Implementation
+ * IDirectMusicPerformance8 Implementation
+ *
+ * Copyright (C) 2003 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "wine/debug.h"
+
+#include "dmusic_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
+
+/* IDirectMusicPerformance IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicPerformanceImpl_QueryInterface (LPDIRECTMUSICPERFORMANCE iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicPerformance))
+ {
+ IDirectMusicPerformanceImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicPerformanceImpl_AddRef (LPDIRECTMUSICPERFORMANCE iface)
+{
+ ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicPerformanceImpl_Release (LPDIRECTMUSICPERFORMANCE iface)
+{
+ ICOM_THIS(IDirectMusicPerformanceImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicPerformance Interface follow: */
+HRESULT WINAPI IDirectMusicPerformanceImpl_Init (LPDIRECTMUSICPERFORMANCE iface, IDirectMusic** ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_PlaySegment (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegment* pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_Stop (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetSegmentState (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegmentState** ppSegmentState, MUSIC_TIME mtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_SetPrepareTime (LPDIRECTMUSICPERFORMANCE iface, DWORD dwMilliSeconds)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetPrepareTime (LPDIRECTMUSICPERFORMANCE iface, DWORD* pdwMilliSeconds)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_SetBumperLength (LPDIRECTMUSICPERFORMANCE iface, DWORD dwMilliSeconds)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetBumperLength (LPDIRECTMUSICPERFORMANCE iface, DWORD* pdwMilliSeconds)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_SendPMsg (LPDIRECTMUSICPERFORMANCE iface, DMUS_PMSG* pPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_MusicToReferenceTime (LPDIRECTMUSICPERFORMANCE iface, MUSIC_TIME mtTime, REFERENCE_TIME* prtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_ReferenceToMusicTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME rtTime, MUSIC_TIME* pmtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_IsPlaying (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegState)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME* prtNow, MUSIC_TIME* pmtNow)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_AllocPMsg (LPDIRECTMUSICPERFORMANCE iface, ULONG cb, DMUS_PMSG** ppPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_FreePMsg (LPDIRECTMUSICPERFORMANCE iface, DMUS_PMSG* pPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetGraph (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicGraph** ppGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_SetGraph (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicGraph* pGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_SetNotificationHandle (LPDIRECTMUSICPERFORMANCE iface, HANDLE hNotification, REFERENCE_TIME rtMinimum)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetNotificationPMsg (LPDIRECTMUSICPERFORMANCE iface, DMUS_NOTIFICATION_PMSG** ppNotificationPMsg)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_AddNotificationType (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_RemoveNotificationType (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_AddPort (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicPort* pPort)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_RemovePort (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicPort* pPort)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE iface, DWORD dwBlockNum, IDirectMusicPort* pPort, DWORD dwGroup)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_AssignPChannel (LPDIRECTMUSICPERFORMANCE iface, DWORD dwPChannel, IDirectMusicPort* pPort, DWORD dwGroup, DWORD dwMChannel)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_PChannelInfo (LPDIRECTMUSICPERFORMANCE iface, DWORD dwPChannel, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_DownloadInstrument (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicInstrument* pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument** ppDownInst, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_Invalidate (LPDIRECTMUSICPERFORMANCE iface, MUSIC_TIME mtTime, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_SetParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetGlobalParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, void* pParam, DWORD dwSize)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_SetGlobalParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, void* pParam, DWORD dwSize)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetLatencyTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME* prtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetQueueTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME* prtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_AdjustTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME rtAmount)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_CloseDown (LPDIRECTMUSICPERFORMANCE iface)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_GetResolvedTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME rtTime, REFERENCE_TIME* prtResolved, DWORD dwTimeResolveFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_MIDIToMusic (LPDIRECTMUSICPERFORMANCE iface, BYTE bMIDIValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, WORD* pwMusicValue)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_MusicToMIDI (LPDIRECTMUSICPERFORMANCE iface, WORD wMusicValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE* pbMIDIValue)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_TimeToRhythm (LPDIRECTMUSICPERFORMANCE iface, MUSIC_TIME mtTime, DMUS_TIMESIGNATURE* pTimeSig, WORD* pwMeasure, BYTE* pbBeat, BYTE* pbGrid, short* pnOffset)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformanceImpl_RhythmToTime (LPDIRECTMUSICPERFORMANCE iface, WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE* pTimeSig, MUSIC_TIME* pmtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicPerformance) DirectMusicPerformance_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicPerformanceImpl_QueryInterface,
+ IDirectMusicPerformanceImpl_AddRef,
+ IDirectMusicPerformanceImpl_Release,
+ IDirectMusicPerformanceImpl_Init,
+ IDirectMusicPerformanceImpl_PlaySegment,
+ IDirectMusicPerformanceImpl_Stop,
+ IDirectMusicPerformanceImpl_GetSegmentState,
+ IDirectMusicPerformanceImpl_SetPrepareTime,
+ IDirectMusicPerformanceImpl_GetPrepareTime,
+ IDirectMusicPerformanceImpl_SetBumperLength,
+ IDirectMusicPerformanceImpl_GetBumperLength,
+ IDirectMusicPerformanceImpl_SendPMsg,
+ IDirectMusicPerformanceImpl_MusicToReferenceTime,
+ IDirectMusicPerformanceImpl_ReferenceToMusicTime,
+ IDirectMusicPerformanceImpl_IsPlaying,
+ IDirectMusicPerformanceImpl_GetTime,
+ IDirectMusicPerformanceImpl_AllocPMsg,
+ IDirectMusicPerformanceImpl_FreePMsg,
+ IDirectMusicPerformanceImpl_GetGraph,
+ IDirectMusicPerformanceImpl_SetGraph,
+ IDirectMusicPerformanceImpl_SetNotificationHandle,
+ IDirectMusicPerformanceImpl_GetNotificationPMsg,
+ IDirectMusicPerformanceImpl_AddNotificationType,
+ IDirectMusicPerformanceImpl_RemoveNotificationType,
+ IDirectMusicPerformanceImpl_AddPort,
+ IDirectMusicPerformanceImpl_RemovePort,
+ IDirectMusicPerformanceImpl_AssignPChannelBlock,
+ IDirectMusicPerformanceImpl_AssignPChannel,
+ IDirectMusicPerformanceImpl_PChannelInfo,
+ IDirectMusicPerformanceImpl_DownloadInstrument,
+ IDirectMusicPerformanceImpl_Invalidate,
+ IDirectMusicPerformanceImpl_GetParam,
+ IDirectMusicPerformanceImpl_SetParam,
+ IDirectMusicPerformanceImpl_GetGlobalParam,
+ IDirectMusicPerformanceImpl_SetGlobalParam,
+ IDirectMusicPerformanceImpl_GetLatencyTime,
+ IDirectMusicPerformanceImpl_GetQueueTime,
+ IDirectMusicPerformanceImpl_AdjustTime,
+ IDirectMusicPerformanceImpl_CloseDown,
+ IDirectMusicPerformanceImpl_GetResolvedTime,
+ IDirectMusicPerformanceImpl_MIDIToMusic,
+ IDirectMusicPerformanceImpl_MusicToMIDI,
+ IDirectMusicPerformanceImpl_TimeToRhythm,
+ IDirectMusicPerformanceImpl_RhythmToTime
+};
+
+
+/* IDirectMusicPerformance8 IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicPerformance8Impl_QueryInterface (LPDIRECTMUSICPERFORMANCE8 iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicPerformance8))
+ {
+ IDirectMusicPerformance8Impl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicPerformance8Impl_AddRef (LPDIRECTMUSICPERFORMANCE8 iface)
+{
+ ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicPerformance8Impl_Release (LPDIRECTMUSICPERFORMANCE8 iface)
+{
+ ICOM_THIS(IDirectMusicPerformance8Impl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicPerformance Interface part follow: */
+HRESULT WINAPI IDirectMusicPerformance8Impl_Init (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusic** ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegment (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_Stop (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetSegmentState (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegmentState** ppSegmentState, MUSIC_TIME mtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_SetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwMilliSeconds)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface, DWORD* pdwMilliSeconds)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_SetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwMilliSeconds)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface, DWORD* pdwMilliSeconds)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_SendPMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToReferenceTime (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, REFERENCE_TIME* prtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_ReferenceToMusicTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtTime, MUSIC_TIME* pmtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_IsPlaying (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegState)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtNow, MUSIC_TIME* pmtNow)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_AllocPMsg (LPDIRECTMUSICPERFORMANCE8 iface, ULONG cb, DMUS_PMSG** ppPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_FreePMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph** ppGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_SetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph* pGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_SetNotificationHandle (LPDIRECTMUSICPERFORMANCE8 iface, HANDLE hNotification, REFERENCE_TIME rtMinimum)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetNotificationPMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_NOTIFICATION_PMSG** ppNotificationPMsg)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_AddNotificationType (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_RemoveNotificationType (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_AddPort (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicPort* pPort)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_RemovePort (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicPort* pPort)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwBlockNum, IDirectMusicPort* pPort, DWORD dwGroup)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannel (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwPChannel, IDirectMusicPort* pPort, DWORD dwGroup, DWORD dwMChannel)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_PChannelInfo (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwPChannel, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_DownloadInstrument (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicInstrument* pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument** ppDownInst, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_Invalidate (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_SetParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, void* pParam, DWORD dwSize)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_SetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, void* pParam, DWORD dwSize)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetLatencyTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetQueueTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_AdjustTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtAmount)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_CloseDown (LPDIRECTMUSICPERFORMANCE8 iface)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_GetResolvedTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtTime, REFERENCE_TIME* prtResolved, DWORD dwTimeResolveFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_MIDIToMusic (LPDIRECTMUSICPERFORMANCE8 iface, BYTE bMIDIValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, WORD* pwMusicValue)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToMIDI (LPDIRECTMUSICPERFORMANCE8 iface, WORD wMusicValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE* pbMIDIValue)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_TimeToRhythm (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, DMUS_TIMESIGNATURE* pTimeSig, WORD* pwMeasure, BYTE* pbBeat, BYTE* pbGrid, short* pnOffset)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8Impl_RhythmToTime (LPDIRECTMUSICPERFORMANCE8 iface, WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE* pTimeSig, MUSIC_TIME* pmtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+/* IDirectMusicPerformance8 Interface part follow: */
+HRESULT WINAPI IDirectMusicPerformance8ImplInitAudio (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusic** ppDirectMusic, IDirectSound** ppDirectSound, HWND hWnd, DWORD dwDefaultPathType, DWORD dwPChannelCount, DWORD dwFlags, DMUS_AUDIOPARAMS* pParams)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8ImplPlaySegmentEx (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pSource, WCHAR* pwzSegmentName, IUnknown* pTransition, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState, IUnknown* pFrom, IUnknown* pAudioPath)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8ImplStopEx (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pObjectToStop, __int64 i64StopTime, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8ImplClonePMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pSourcePMSG, DMUS_PMSG** ppCopyPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8ImplCreateAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pSourceConfig, BOOL fActivate, IDirectMusicAudioPath** ppNewPath)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8ImplCreateStandardAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwType, DWORD dwPChannelCount, BOOL fActivate, IDirectMusicAudioPath** ppNewPath)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8ImplSetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath* pAudioPath)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8ImplGetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath** ppAudioPath)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPerformance8ImplGetParamEx (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwTrackID, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicPerformance8) DirectMusicPerformance8_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicPerformance8Impl_QueryInterface,
+ IDirectMusicPerformance8Impl_AddRef,
+ IDirectMusicPerformance8Impl_Release,
+ IDirectMusicPerformance8Impl_Init,
+ IDirectMusicPerformance8Impl_PlaySegment,
+ IDirectMusicPerformance8Impl_Stop,
+ IDirectMusicPerformance8Impl_GetSegmentState,
+ IDirectMusicPerformance8Impl_SetPrepareTime,
+ IDirectMusicPerformance8Impl_GetPrepareTime,
+ IDirectMusicPerformance8Impl_SetBumperLength,
+ IDirectMusicPerformance8Impl_GetBumperLength,
+ IDirectMusicPerformance8Impl_SendPMsg,
+ IDirectMusicPerformance8Impl_MusicToReferenceTime,
+ IDirectMusicPerformance8Impl_ReferenceToMusicTime,
+ IDirectMusicPerformance8Impl_IsPlaying,
+ IDirectMusicPerformance8Impl_GetTime,
+ IDirectMusicPerformance8Impl_AllocPMsg,
+ IDirectMusicPerformance8Impl_FreePMsg,
+ IDirectMusicPerformance8Impl_GetGraph,
+ IDirectMusicPerformance8Impl_SetGraph,
+ IDirectMusicPerformance8Impl_SetNotificationHandle,
+ IDirectMusicPerformance8Impl_GetNotificationPMsg,
+ IDirectMusicPerformance8Impl_AddNotificationType,
+ IDirectMusicPerformance8Impl_RemoveNotificationType,
+ IDirectMusicPerformance8Impl_AddPort,
+ IDirectMusicPerformance8Impl_RemovePort,
+ IDirectMusicPerformance8Impl_AssignPChannelBlock,
+ IDirectMusicPerformance8Impl_AssignPChannel,
+ IDirectMusicPerformance8Impl_PChannelInfo,
+ IDirectMusicPerformance8Impl_DownloadInstrument,
+ IDirectMusicPerformance8Impl_Invalidate,
+ IDirectMusicPerformance8Impl_GetParam,
+ IDirectMusicPerformance8Impl_SetParam,
+ IDirectMusicPerformance8Impl_GetGlobalParam,
+ IDirectMusicPerformance8Impl_SetGlobalParam,
+ IDirectMusicPerformance8Impl_GetLatencyTime,
+ IDirectMusicPerformance8Impl_GetQueueTime,
+ IDirectMusicPerformance8Impl_AdjustTime,
+ IDirectMusicPerformance8Impl_CloseDown,
+ IDirectMusicPerformance8Impl_GetResolvedTime,
+ IDirectMusicPerformance8Impl_MIDIToMusic,
+ IDirectMusicPerformance8Impl_MusicToMIDI,
+ IDirectMusicPerformance8Impl_TimeToRhythm,
+ IDirectMusicPerformance8Impl_RhythmToTime,
+ IDirectMusicPerformance8ImplInitAudio,
+ IDirectMusicPerformance8ImplPlaySegmentEx,
+ IDirectMusicPerformance8ImplStopEx,
+ IDirectMusicPerformance8ImplClonePMsg,
+ IDirectMusicPerformance8ImplCreateAudioPath,
+ IDirectMusicPerformance8ImplCreateStandardAudioPath,
+ IDirectMusicPerformance8ImplSetDefaultAudioPath,
+ IDirectMusicPerformance8ImplGetDefaultAudioPath,
+ IDirectMusicPerformance8ImplGetParamEx
+};
diff --git a/dlls/dmusic/dmusic_plugins.c b/dlls/dmusic/dmusic_plugins.c
new file mode 100644
index 0000000..d022c51
--- /dev/null
+++ b/dlls/dmusic/dmusic_plugins.c
@@ -0,0 +1,471 @@
+/* IDirectMusicTool Implementation
+ * IDirectMusicTool8 Implementation
+ * IDirectMusicTrack Implementation
+ * IDirectMusicTrack8 Implementation
+ *
+ * Copyright (C) 2003 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "wine/debug.h"
+
+#include "dmusic_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
+
+/* IDirectMusicTool IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicToolImpl_QueryInterface (LPDIRECTMUSICTOOL iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicToolImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicTool))
+ {
+ IDirectMusicToolImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicToolImpl_AddRef (LPDIRECTMUSICTOOL iface)
+{
+ ICOM_THIS(IDirectMusicToolImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicToolImpl_Release (LPDIRECTMUSICTOOL iface)
+{
+ ICOM_THIS(IDirectMusicToolImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicTool Interface follow: */
+HRESULT WINAPI IDirectMusicToolImpl_Init (LPDIRECTMUSICTOOL iface, IDirectMusicGraph* pGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicToolImpl_GetMsgDeliveryType (LPDIRECTMUSICTOOL iface, DWORD* pdwDeliveryType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicToolImpl_GetMediaTypeArraySize (LPDIRECTMUSICTOOL iface, DWORD* pdwNumElements)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicToolImpl_GetMediaTypes (LPDIRECTMUSICTOOL iface, DWORD** padwMediaTypes, DWORD dwNumElements)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicToolImpl_ProcessPMsg (LPDIRECTMUSICTOOL iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicToolImpl_Flush (LPDIRECTMUSICTOOL iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG, REFERENCE_TIME rtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicTool) DirectMusicTool_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicToolImpl_QueryInterface,
+ IDirectMusicToolImpl_AddRef,
+ IDirectMusicToolImpl_Release,
+ IDirectMusicToolImpl_Init,
+ IDirectMusicToolImpl_GetMsgDeliveryType,
+ IDirectMusicToolImpl_GetMediaTypeArraySize,
+ IDirectMusicToolImpl_GetMediaTypes,
+ IDirectMusicToolImpl_ProcessPMsg,
+ IDirectMusicToolImpl_Flush
+};
+
+
+/* IDirectMusicTool8 IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicTool8Impl_QueryInterface (LPDIRECTMUSICTOOL8 iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicTool8Impl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicTool8))
+ {
+ IDirectMusicTool8Impl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicTool8Impl_AddRef (LPDIRECTMUSICTOOL8 iface)
+{
+ ICOM_THIS(IDirectMusicTool8Impl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicTool8Impl_Release (LPDIRECTMUSICTOOL8 iface)
+{
+ ICOM_THIS(IDirectMusicTool8Impl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicTool8 Interface follow: */
+HRESULT WINAPI IDirectMusicTool8Impl_Init (LPDIRECTMUSICTOOL8 iface, IDirectMusicGraph* pGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTool8Impl_GetMsgDeliveryType (LPDIRECTMUSICTOOL8 iface, DWORD* pdwDeliveryType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTool8Impl_GetMediaTypeArraySize (LPDIRECTMUSICTOOL8 iface, DWORD* pdwNumElements)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTool8Impl_GetMediaTypes (LPDIRECTMUSICTOOL8 iface, DWORD** padwMediaTypes, DWORD dwNumElements)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTool8Impl_ProcessPMsg (LPDIRECTMUSICTOOL8 iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTool8Impl_Flush (LPDIRECTMUSICTOOL8 iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG, REFERENCE_TIME rtTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTool8Impl_Clone (LPDIRECTMUSICTOOL8 iface, IDirectMusicTool** ppTool)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicTool8) DirectMusicTool8_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicTool8Impl_QueryInterface,
+ IDirectMusicTool8Impl_AddRef,
+ IDirectMusicTool8Impl_Release,
+ IDirectMusicTool8Impl_Init,
+ IDirectMusicTool8Impl_GetMsgDeliveryType,
+ IDirectMusicTool8Impl_GetMediaTypeArraySize,
+ IDirectMusicTool8Impl_GetMediaTypes,
+ IDirectMusicTool8Impl_ProcessPMsg,
+ IDirectMusicTool8Impl_Flush,
+ IDirectMusicTool8Impl_Clone
+};
+
+
+/* IDirectMusicTrack IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicTrackImpl_QueryInterface (LPDIRECTMUSICTRACK iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicTrackImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicTrack))
+ {
+ IDirectMusicTrackImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicTrackImpl_AddRef (LPDIRECTMUSICTRACK iface)
+{
+ ICOM_THIS(IDirectMusicTrackImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicTrackImpl_Release (LPDIRECTMUSICTRACK iface)
+{
+ ICOM_THIS(IDirectMusicTrackImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+/* IDirectMusicTrack Interface follow: */
+HRESULT WINAPI IDirectMusicTrackImpl_Init (LPDIRECTMUSICTRACK iface, IDirectMusicSegment* pSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrackImpl_InitPlay (LPDIRECTMUSICTRACK iface, IDirectMusicSegmentState* pSegmentState, IDirectMusicPerformance* pPerformance, void** ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrackImpl_EndPlay (LPDIRECTMUSICTRACK iface, void* pStateData)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrackImpl_Play (LPDIRECTMUSICTRACK iface, void* pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrackImpl_GetParam (LPDIRECTMUSICTRACK iface, REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrackImpl_SetParam (LPDIRECTMUSICTRACK iface, REFGUID rguidType, MUSIC_TIME mtTime, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrackImpl_IsParamSupported (LPDIRECTMUSICTRACK iface, REFGUID rguidType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrackImpl_AddNotificationType (LPDIRECTMUSICTRACK iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrackImpl_RemoveNotificationType (LPDIRECTMUSICTRACK iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrackImpl_Clone (LPDIRECTMUSICTRACK iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack** ppTrack)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicTrack) DirectMusicTrack_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicTrackImpl_QueryInterface,
+ IDirectMusicTrackImpl_AddRef,
+ IDirectMusicTrackImpl_Release,
+ IDirectMusicTrackImpl_Init,
+ IDirectMusicTrackImpl_InitPlay,
+ IDirectMusicTrackImpl_EndPlay,
+ IDirectMusicTrackImpl_Play,
+ IDirectMusicTrackImpl_GetParam,
+ IDirectMusicTrackImpl_SetParam,
+ IDirectMusicTrackImpl_IsParamSupported,
+ IDirectMusicTrackImpl_AddNotificationType,
+ IDirectMusicTrackImpl_RemoveNotificationType,
+ IDirectMusicTrackImpl_Clone
+};
+
+/* IDirectMusicTrack8 IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicTrack8Impl_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicTrack8Impl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicTrack8))
+ {
+ IDirectMusicTrack8Impl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicTrack8Impl_AddRef (LPDIRECTMUSICTRACK8 iface)
+{
+ ICOM_THIS(IDirectMusicTrack8Impl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicTrack8Impl_Release (LPDIRECTMUSICTRACK8 iface)
+{
+ ICOM_THIS(IDirectMusicTrack8Impl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+/* IDirectMusicTrack Interface part follow: */
+HRESULT WINAPI IDirectMusicTrack8Impl_Init (LPDIRECTMUSICTRACK8 iface, IDirectMusicSegment* pSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_InitPlay (LPDIRECTMUSICTRACK8 iface, IDirectMusicSegmentState* pSegmentState, IDirectMusicPerformance* pPerformance, void** ppStateData, DWORD dwVirtualTrack8ID, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_EndPlay (LPDIRECTMUSICTRACK8 iface, void* pStateData)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_Play (LPDIRECTMUSICTRACK8 iface, void* pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_GetParam (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_SetParam (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, MUSIC_TIME mtTime, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_IsParamSupported (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_AddNotificationType (LPDIRECTMUSICTRACK8 iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_RemoveNotificationType (LPDIRECTMUSICTRACK8 iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_Clone (LPDIRECTMUSICTRACK8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack** ppTrack)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+/* IDirectMusicTrack8 Interface part follow: */
+
+HRESULT WINAPI IDirectMusicTrack8Impl_PlayEx (LPDIRECTMUSICTRACK8 iface, void* pStateData, REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd, REFERENCE_TIME rtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_GetParamEx (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, REFERENCE_TIME rtTime, REFERENCE_TIME* prtNext, void* pParam, void* pStateData, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_SetParamEx (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, REFERENCE_TIME rtTime, void* pParam, void* pStateData, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_Compose (LPDIRECTMUSICTRACK8 iface, IUnknown* pContext, DWORD dwTrackGroup, IDirectMusicTrack** ppResultTrack)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicTrack8Impl_Join (LPDIRECTMUSICTRACK8 iface, IDirectMusicTrack* pNewTrack, MUSIC_TIME mtJoin, IUnknown* pContext, DWORD dwTrackGroup, IDirectMusicTrack** ppResultTrack)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicTrack8) DirectMusicTrack8_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicTrack8Impl_QueryInterface,
+ IDirectMusicTrack8Impl_AddRef,
+ IDirectMusicTrack8Impl_Release,
+ IDirectMusicTrack8Impl_Init,
+ IDirectMusicTrack8Impl_InitPlay,
+ IDirectMusicTrack8Impl_EndPlay,
+ IDirectMusicTrack8Impl_Play,
+ IDirectMusicTrack8Impl_GetParam,
+ IDirectMusicTrack8Impl_SetParam,
+ IDirectMusicTrack8Impl_IsParamSupported,
+ IDirectMusicTrack8Impl_AddNotificationType,
+ IDirectMusicTrack8Impl_RemoveNotificationType,
+ IDirectMusicTrack8Impl_Clone,
+ IDirectMusicTrack8Impl_PlayEx,
+ IDirectMusicTrack8Impl_GetParamEx,
+ IDirectMusicTrack8Impl_SetParamEx,
+ IDirectMusicTrack8Impl_Compose,
+ IDirectMusicTrack8Impl_Join
+};
diff --git a/dlls/dmusic/dmusic_port.c b/dlls/dmusic/dmusic_port.c
index a22f6bd..66ed940 100644
--- a/dlls/dmusic/dmusic_port.c
+++ b/dlls/dmusic/dmusic_port.c
@@ -1,4 +1,5 @@
/* IDirectMusicPort Implementation
+ * IDirectMusicPortDownloadImpl Implementation
*
* Copyright (C) 2003 Rok Mandeljc
*
@@ -181,3 +182,89 @@
IDirectMusicPortImpl_SetDirectSound,
IDirectMusicPortImpl_GetFormat
};
+
+
+/* IDirectMusicPortDownload IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicPortDownloadImpl_QueryInterface (LPDIRECTMUSICPORTDOWNLOAD iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicPortDownload))
+ {
+ IDirectMusicPortDownloadImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicPortDownloadImpl_AddRef (LPDIRECTMUSICPORTDOWNLOAD iface)
+{
+ ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicPortDownloadImpl_Release (LPDIRECTMUSICPORTDOWNLOAD iface)
+{
+ ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicPortDownload Interface follow: */
+HRESULT WINAPI IDirectMusicPortDownloadImpl_GetBuffer (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD dwDLId, IDirectMusicDownload** ppIDMDownload)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPortDownloadImpl_AllocateBuffer (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD dwSize, IDirectMusicDownload** ppIDMDownload)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPortDownloadImpl_GetDLId (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD* pdwStartDLId, DWORD dwCount)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPortDownloadImpl_GetAppend (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD* pdwAppend)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPortDownloadImpl_Download (LPDIRECTMUSICPORTDOWNLOAD iface, IDirectMusicDownload* pIDMDownload)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPortDownloadImpl_Unload (LPDIRECTMUSICPORTDOWNLOAD iface, IDirectMusicDownload* pIDMDownload)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicPortDownload) DirectMusicPortDownload_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicPortDownloadImpl_QueryInterface,
+ IDirectMusicPortDownloadImpl_AddRef,
+ IDirectMusicPortDownloadImpl_Release,
+ IDirectMusicPortDownloadImpl_GetBuffer,
+ IDirectMusicPortDownloadImpl_AllocateBuffer,
+ IDirectMusicPortDownloadImpl_GetDLId,
+ IDirectMusicPortDownloadImpl_GetAppend,
+ IDirectMusicPortDownloadImpl_Download,
+ IDirectMusicPortDownloadImpl_Unload
+};
diff --git a/dlls/dmusic/dmusic_portdl.c b/dlls/dmusic/dmusic_portdl.c
deleted file mode 100644
index e526130..0000000
--- a/dlls/dmusic/dmusic_portdl.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* IDirectMusicPortDownload Implementation
- *
- * Copyright (C) 2003 Rok Mandeljc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-
-#include "dmusic_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
-
-/* IDirectMusicPortDownload IUnknown parts follow: */
-HRESULT WINAPI IDirectMusicPortDownloadImpl_QueryInterface (LPDIRECTMUSICPORTDOWNLOAD iface, REFIID riid, LPVOID *ppobj)
-{
- ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
-
- if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicPortDownload))
- {
- IDirectMusicPortDownloadImpl_AddRef(iface);
- *ppobj = This;
- return DS_OK;
- }
- WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
- return E_NOINTERFACE;
-}
-
-ULONG WINAPI IDirectMusicPortDownloadImpl_AddRef (LPDIRECTMUSICPORTDOWNLOAD iface)
-{
- ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
- TRACE("(%p) : AddRef from %ld\n", This, This->ref);
- return ++(This->ref);
-}
-
-ULONG WINAPI IDirectMusicPortDownloadImpl_Release (LPDIRECTMUSICPORTDOWNLOAD iface)
-{
- ICOM_THIS(IDirectMusicPortDownloadImpl,iface);
- ULONG ref = --This->ref;
- TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
- if (ref == 0)
- {
- HeapFree(GetProcessHeap(), 0, This);
- }
- return ref;
-}
-
-/* IDirectMusicPortDownload Interface follow: */
-HRESULT WINAPI IDirectMusicPortDownloadImpl_GetBuffer (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD dwDLId, IDirectMusicDownload** ppIDMDownload)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicPortDownloadImpl_AllocateBuffer (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD dwSize, IDirectMusicDownload** ppIDMDownload)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicPortDownloadImpl_GetDLId (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD* pdwStartDLId, DWORD dwCount)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicPortDownloadImpl_GetAppend (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD* pdwAppend)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicPortDownloadImpl_Download (LPDIRECTMUSICPORTDOWNLOAD iface, IDirectMusicDownload* pIDMDownload)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IDirectMusicPortDownloadImpl_Unload (LPDIRECTMUSICPORTDOWNLOAD iface, IDirectMusicDownload* pIDMDownload)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-ICOM_VTABLE(IDirectMusicPortDownload) DirectMusicPortDownload_Vtbl =
-{
- ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
- IDirectMusicPortDownloadImpl_QueryInterface,
- IDirectMusicPortDownloadImpl_AddRef,
- IDirectMusicPortDownloadImpl_Release,
- IDirectMusicPortDownloadImpl_GetBuffer,
- IDirectMusicPortDownloadImpl_AllocateBuffer,
- IDirectMusicPortDownloadImpl_GetDLId,
- IDirectMusicPortDownloadImpl_GetAppend,
- IDirectMusicPortDownloadImpl_Download,
- IDirectMusicPortDownloadImpl_Unload
-};
diff --git a/dlls/dmusic/dmusic_private.h b/dlls/dmusic/dmusic_private.h
index a2ef841..74619d1 100644
--- a/dlls/dmusic/dmusic_private.h
+++ b/dlls/dmusic/dmusic_private.h
@@ -26,6 +26,10 @@
#include "winbase.h"
#include "winnt.h"
#include "dmusicc.h"
+#include "dmusici.h"
+#include "dmusics.h"
+#include "dmplugin.h"
+#include "dmusicf.h"
#include "dsound.h"
/*****************************************************************************
@@ -43,6 +47,37 @@
typedef struct IDirectMusicThruImpl IDirectMusicThruImpl;
typedef struct IReferenceClockImpl IReferenceClockImpl;
+typedef struct IDirectMusicSynthImpl IDirectMusicSynthImpl;
+typedef struct IDirectMusicSynth8Impl IDirectMusicSynth8Impl;
+typedef struct IDirectMusicSynthSinkImpl IDirectMusicSynthSinkImpl;
+
+typedef struct IDirectMusicToolImpl IDirectMusicToolImpl;
+typedef struct IDirectMusicTool8Impl IDirectMusicTool8Impl;
+typedef struct IDirectMusicTrackImpl IDirectMusicTrackImpl;
+typedef struct IDirectMusicTrack8Impl IDirectMusicTrack8Impl;
+
+typedef struct IDirectMusicBandImpl IDirectMusicBandImpl;
+typedef struct IDirectMusicObjectImpl IDirectMusicObjectImpl;
+typedef struct IDirectMusicLoaderImpl IDirectMusicLoaderImpl;
+typedef struct IDirectMusicLoader8Impl IDirectMusicLoader8Impl;
+typedef struct IDirectMusicGetLoaderImpl IDirectMusicGetLoaderImpl;
+typedef struct IDirectMusicSegmentImpl IDirectMusicSegmentImpl;
+typedef struct IDirectMusicSegment8Impl IDirectMusicSegment8Impl;
+typedef struct IDirectMusicSegmentStateImpl IDirectMusicSegmentStateImpl;
+typedef struct IDirectMusicSegmentState8Impl IDirectMusicSegmentState8Impl;
+typedef struct IDirectMusicAudioPathImpl IDirectMusicAudioPathImpl;
+typedef struct IDirectMusicPerformanceImpl IDirectMusicPerformanceImpl;
+typedef struct IDirectMusicPerformance8Impl IDirectMusicPerformance8Impl;
+typedef struct IDirectMusicGraphImpl IDirectMusicGraphImpl;
+typedef struct IDirectMusicStyleImpl IDirectMusicStyleImpl;
+typedef struct IDirectMusicStyle8Impl IDirectMusicStyle8Impl;
+typedef struct IDirectMusicChordMapImpl IDirectMusicChordMapImpl;
+typedef struct IDirectMusicComposerImpl IDirectMusicComposerImpl;
+typedef struct IDirectMusicPatternTrackImpl IDirectMusicPatternTrackImpl;
+typedef struct IDirectMusicScriptImpl IDirectMusicScriptImpl;
+typedef struct IDirectMusicContainerImpl IDirectMusicContainerImpl;
+typedef struct IDirectMusicSongImpl IDirectMusicSongImpl;
+
/*****************************************************************************
* Predeclare the interface implementation structures
*/
@@ -58,6 +93,37 @@
extern ICOM_VTABLE(IDirectMusicThru) DirectMusicThru_Vtbl;
extern ICOM_VTABLE(IReferenceClock) ReferenceClock_Vtbl;
+extern ICOM_VTABLE(IDirectMusicSynth) DirectMusicSynth;
+extern ICOM_VTABLE(IDirectMusicSynth8) DirectMusicSynth8;
+extern ICOM_VTABLE(IDirectMusicSynthSink) DirectMusicSynthSink;
+
+extern ICOM_VTABLE(IDirectMusicTool) DirectMusicTool;
+extern ICOM_VTABLE(IDirectMusicTool8) DirectMusicTool8;
+extern ICOM_VTABLE(IDirectMusicTrack) DirectMusicTrack;
+extern ICOM_VTABLE(IDirectMusicTrack8) DirectMusicTrack8;
+
+extern ICOM_VTABLE(IDirectMusicBand) DirectMusicBand;
+extern ICOM_VTABLE(IDirectMusicObject) DirectMusicObject;
+extern ICOM_VTABLE(IDirectMusicLoader) DirectMusicLoader;
+extern ICOM_VTABLE(IDirectMusicLoader8) DirectMusicLoader8;
+extern ICOM_VTABLE(IDirectMusicGetLoader) DirectMusicGetLoader;
+extern ICOM_VTABLE(IDirectMusicSegment) DirectMusicSegment;
+extern ICOM_VTABLE(IDirectMusicSegment8) DirectMusicSegment8;
+extern ICOM_VTABLE(IDirectMusicSegmentState) DirectMusicSegmentState;
+extern ICOM_VTABLE(IDirectMusicSegmentState8) DirectMusicSegmentState8;
+extern ICOM_VTABLE(IDirectMusicAudioPath) DirectMusicAudioPath_Vtbl;
+extern ICOM_VTABLE(IDirectMusicPerformance) DirectMusicPerformance_Vtbl;
+extern ICOM_VTABLE(IDirectMusicPerformance8) DirectMusicPerformance8_Vtbl;
+extern ICOM_VTABLE(IDirectMusicGraph) DirectMusicGraph_Vtbl;
+extern ICOM_VTABLE(IDirectMusicStyle) DirectMusicStyle_Vtbl;
+extern ICOM_VTABLE(IDirectMusicStyle8) DirectMusicStyle8_Vtbl;
+extern ICOM_VTABLE(IDirectMusicChordMap) DirectMusicChordMap_Vtbl;
+extern ICOM_VTABLE(IDirectMusicComposer) DirectMusicComposer_Vtbl;
+extern ICOM_VTABLE(IDirectMusicPatternTrack) DirectMusicPatternTrack_Vtbl;
+extern ICOM_VTABLE(IDirectMusicScript) DirectMusicScript_Vtbl;
+extern ICOM_VTABLE(IDirectMusicContainer) DirectMusicContainer_Vtbl;
+extern ICOM_VTABLE(IDirectMusicSong) DirectMusicSong_Vtbl;
+
/*****************************************************************************
* IDirectMusicImpl implementation structure
*/
@@ -321,4 +387,844 @@
extern HRESULT WINAPI IReferenceClockImpl_AdvisePeriodic (LPREFERENCECLOCK iface, REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD* pdwAdviseCookie);
extern HRESULT WINAPI IReferenceClockImpl_Unadvise (LPREFERENCECLOCK iface, DWORD dwAdviseCookie);
+
+/*****************************************************************************
+ * IDirectMusicSynthImpl implementation structure
+ */
+struct IDirectMusicSynthImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicSynth);
+ DWORD ref;
+
+ /* IDirectMusicSynth fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicSynthImpl_QueryInterface (LPDIRECTMUSICSYNTH iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicSynthImpl_AddRef (LPDIRECTMUSICSYNTH iface);
+extern ULONG WINAPI IDirectMusicSynthImpl_Release (LPDIRECTMUSICSYNTH iface);
+/* IDirectMusicSynth: */
+extern HRESULT WINAPI IDirectMusicSynthImpl_Open (LPDIRECTMUSICSYNTH iface,LPDMUS_PORTPARAMS pPortParams);
+extern HRESULT WINAPI IDirectMusicSynthImpl_Close (LPDIRECTMUSICSYNTH iface);
+extern HRESULT WINAPI IDirectMusicSynthImpl_SetNumChannelGroups (LPDIRECTMUSICSYNTH iface, DWORD dwGroups);
+extern HRESULT WINAPI IDirectMusicSynthImpl_Download (LPDIRECTMUSICSYNTH iface, LPHANDLE phDownload, LPVOID pvData, LPBOOL pbFree);
+extern HRESULT WINAPI IDirectMusicSynthImpl_Unload (LPDIRECTMUSICSYNTH iface, HANDLE hDownload, HRESULT (CALLBACK* lpFreeHandle)(HANDLE,HANDLE), HANDLE hUserData);
+extern HRESULT WINAPI IDirectMusicSynthImpl_PlayBuffer (LPDIRECTMUSICSYNTH iface, REFERENCE_TIME rt, LPBYTE pbBuffer, DWORD cbBuffer);
+extern HRESULT WINAPI IDirectMusicSynthImpl_GetRunningStats (LPDIRECTMUSICSYNTH iface, LPDMUS_SYNTHSTATS pStats);
+extern HRESULT WINAPI IDirectMusicSynthImpl_GetPortCaps (LPDIRECTMUSICSYNTH iface, LPDMUS_PORTCAPS pCaps);
+extern HRESULT WINAPI IDirectMusicSynthImpl_SetMasterClock (LPDIRECTMUSICSYNTH iface, IReferenceClock* pClock);
+extern HRESULT WINAPI IDirectMusicSynthImpl_GetLatencyClock (LPDIRECTMUSICSYNTH iface, IReferenceClock** ppClock);
+extern HRESULT WINAPI IDirectMusicSynthImpl_Activate (LPDIRECTMUSICSYNTH iface, BOOL fEnable);
+extern HRESULT WINAPI IDirectMusicSynthImpl_SetSynthSink (LPDIRECTMUSICSYNTH iface, IDirectMusicSynthSink* pSynthSink);
+extern HRESULT WINAPI IDirectMusicSynthImpl_Render (LPDIRECTMUSICSYNTH iface, short* pBuffer, DWORD dwLength, LONGLONG llPosition);
+extern HRESULT WINAPI IDirectMusicSynthImpl_SetChannelPriority (LPDIRECTMUSICSYNTH iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority);
+extern HRESULT WINAPI IDirectMusicSynthImpl_GetChannelPriority (LPDIRECTMUSICSYNTH iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority);
+extern HRESULT WINAPI IDirectMusicSynthImpl_GetFormat (LPDIRECTMUSICSYNTH iface, LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSiz);
+extern HRESULT WINAPI IDirectMusicSynthImpl_GetAppend (LPDIRECTMUSICSYNTH iface, DWORD* pdwAppend);
+
+/*****************************************************************************
+ * IDirectMusicSynth8Impl implementation structure
+ */
+struct IDirectMusicSynth8Impl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicSynth8);
+ DWORD ref;
+
+ /* IDirectMusicSynth8 fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicSynth8Impl_QueryInterface (LPDIRECTMUSICSYNTH8 iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicSynth8Impl_AddRef (LPDIRECTMUSICSYNTH8 iface);
+extern ULONG WINAPI IDirectMusicSynth8Impl_Release (LPDIRECTMUSICSYNTH8 iface);
+/* IDirectMusicSynth: */
+extern HRESULT WINAPI IDirectMusicSynth8Impl_Open (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTPARAMS pPortParams);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_Close (LPDIRECTMUSICSYNTH8 iface);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_SetNumChannelGroups (LPDIRECTMUSICSYNTH8 iface, DWORD dwGroups);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_Download (LPDIRECTMUSICSYNTH8 iface, LPHANDLE phDownload, LPVOID pvData, LPBOOL pbFree);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_Unload (LPDIRECTMUSICSYNTH8 iface, HANDLE hDownload, HRESULT (CALLBACK* lpFreeHandle)(HANDLE,HANDLE), HANDLE hUserData);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_PlayBuffer (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, LPBYTE pbBuffer, DWORD cbBuffer);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_GetRunningStats (LPDIRECTMUSICSYNTH8 iface, LPDMUS_SYNTHSTATS pStats);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_GetPortCaps (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTCAPS pCaps);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_SetMasterClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock* pClock);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_GetLatencyClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock** ppClock);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_Activate (LPDIRECTMUSICSYNTH8 iface, BOOL fEnable);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_SetSynthSink (LPDIRECTMUSICSYNTH8 iface, IDirectMusicSynthSink* pSynthSink);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_Render (LPDIRECTMUSICSYNTH8 iface, short* pBuffer, DWORD dwLength, LONGLONG llPosition);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_SetChannelPriority (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_GetChannelPriority (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_GetFormat (LPDIRECTMUSICSYNTH8 iface, LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSiz);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_GetAppend (LPDIRECTMUSICSYNTH8 iface, DWORD* pdwAppend);
+/* IDirectMusicSynth8: */
+extern HRESULT WINAPI IDirectMusicSynth8Impl_PlayVoice (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, DWORD dwVoiceId, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwDLId, long prPitch, long vrVolume, SAMPLE_TIME stVoiceStart, SAMPLE_TIME stLoopStart, SAMPLE_TIME stLoopEnd);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_StopVoice (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, DWORD dwVoiceId);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_GetVoiceState (LPDIRECTMUSICSYNTH8 iface, DWORD dwVoice[], DWORD cbVoice, DMUS_VOICE_STATE dwVoiceState[]);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_Refresh (LPDIRECTMUSICSYNTH8 iface, DWORD dwDownloadID, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicSynth8Impl_AssignChannelToBuses (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwBuses, DWORD cBuses);
+
+/*****************************************************************************
+ * IDirectMusicSynthSinkImpl implementation structure
+ */
+struct IDirectMusicSynthSinkImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicSynthSink);
+ DWORD ref;
+
+ /* IDirectMusicSynthSinkImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicSynthSinkImpl_QueryInterface (LPDIRECTMUSICSYNTHSINK iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicSynthSinkImpl_AddRef (LPDIRECTMUSICSYNTHSINK iface);
+extern ULONG WINAPI IDirectMusicSynthSinkImpl_Release (LPDIRECTMUSICSYNTHSINK iface);
+/* IDirectMusicSynthSinkImpl: */
+extern HRESULT WINAPI IDirectMusicSynthSinkImpl_Init (LPDIRECTMUSICSYNTHSINK iface, IDirectMusicSynth* pSynth);
+extern HRESULT WINAPI IDirectMusicSynthSinkImpl_SetMasterClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock* pClock);
+extern HRESULT WINAPI IDirectMusicSynthSinkImpl_GetLatencyClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock** ppClock);
+extern HRESULT WINAPI IDirectMusicSynthSinkImpl_Activate (LPDIRECTMUSICSYNTHSINK iface, BOOL fEnable);
+extern HRESULT WINAPI IDirectMusicSynthSinkImpl_SampleToRefTime (LPDIRECTMUSICSYNTHSINK iface, LONGLONG llSampleTime, REFERENCE_TIME* prfTime);
+extern HRESULT WINAPI IDirectMusicSynthSinkImpl_RefTimeToSample (LPDIRECTMUSICSYNTHSINK iface, REFERENCE_TIME rfTime, LONGLONG* pllSampleTime);
+extern HRESULT WINAPI IDirectMusicSynthSinkImpl_SetDirectSound (LPDIRECTMUSICSYNTHSINK iface, LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer);
+extern HRESULT WINAPI IDirectMusicSynthSinkImpl_GetDesiredBufferSize (LPDIRECTMUSICSYNTHSINK iface, LPDWORD pdwBufferSizeInSamples);
+
+
+/*****************************************************************************
+ * IDirectMusicToolImpl implementation structure
+ */
+struct IDirectMusicToolImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicTool);
+ DWORD ref;
+
+ /* IDirectMusicToolImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicToolImpl_QueryInterface (LPDIRECTMUSICTOOL iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicToolImpl_AddRef (LPDIRECTMUSICTOOL iface);
+extern ULONG WINAPI IDirectMusicToolImpl_Release (LPDIRECTMUSICTOOL iface);
+/* IDirectMusicToolImpl: */
+extern HRESULT WINAPI IDirectMusicToolImpl_Init (LPDIRECTMUSICTOOL iface, IDirectMusicGraph* pGraph);
+extern HRESULT WINAPI IDirectMusicToolImpl_GetMsgDeliveryType (LPDIRECTMUSICTOOL iface, DWORD* pdwDeliveryType);
+extern HRESULT WINAPI IDirectMusicToolImpl_GetMediaTypeArraySize (LPDIRECTMUSICTOOL iface, DWORD* pdwNumElements);
+extern HRESULT WINAPI IDirectMusicToolImpl_GetMediaTypes (LPDIRECTMUSICTOOL iface, DWORD** padwMediaTypes, DWORD dwNumElements);
+extern HRESULT WINAPI IDirectMusicToolImpl_ProcessPMsg (LPDIRECTMUSICTOOL iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG);
+extern HRESULT WINAPI IDirectMusicToolImpl_Flush (LPDIRECTMUSICTOOL iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG, REFERENCE_TIME rtTime);
+
+/*****************************************************************************
+ * IDirectMusicTool8Impl implementation structure
+ */
+struct IDirectMusicTool8Impl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicTool8);
+ DWORD ref;
+
+ /* IDirectMusicTool8Impl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicTool8Impl_QueryInterface (LPDIRECTMUSICTOOL8 iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicTool8Impl_AddRef (LPDIRECTMUSICTOOL8 iface);
+extern ULONG WINAPI IDirectMusicTool8Impl_Release (LPDIRECTMUSICTOOL8 iface);
+/* IDirectMusicTool8Impl: */
+extern HRESULT WINAPI IDirectMusicTool8Impl_Init (LPDIRECTMUSICTOOL8 iface, IDirectMusicGraph* pGraph);
+extern HRESULT WINAPI IDirectMusicTool8Impl_GetMsgDeliveryType (LPDIRECTMUSICTOOL8 iface, DWORD* pdwDeliveryType);
+extern HRESULT WINAPI IDirectMusicTool8Impl_GetMediaTypeArraySize (LPDIRECTMUSICTOOL8 iface, DWORD* pdwNumElements);
+extern HRESULT WINAPI IDirectMusicTool8Impl_GetMediaTypes (LPDIRECTMUSICTOOL8 iface, DWORD** padwMediaTypes, DWORD dwNumElements);
+extern HRESULT WINAPI IDirectMusicTool8Impl_ProcessPMsg (LPDIRECTMUSICTOOL8 iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG);
+extern HRESULT WINAPI IDirectMusicTool8Impl_Flush (LPDIRECTMUSICTOOL8 iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG, REFERENCE_TIME rtTime);
+/* IDirectMusicToolImpl8: */
+extern HRESULT WINAPI IDirectMusicTool8Impl_Clone (LPDIRECTMUSICTOOL8 iface, IDirectMusicTool** ppTool);
+/*****************************************************************************
+ * IDirectMusicTrackImpl implementation structure
+ */
+struct IDirectMusicTrackImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicTrack);
+ DWORD ref;
+
+ /* IDirectMusicTrackImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicTrackImpl_QueryInterface (LPDIRECTMUSICTRACK iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicTrackImpl_AddRef (LPDIRECTMUSICTRACK iface);
+extern ULONG WINAPI IDirectMusicTrackImpl_Release (LPDIRECTMUSICTRACK iface);
+/* IDirectMusicTrack: */
+extern HRESULT WINAPI IDirectMusicTrackImpl_Init (LPDIRECTMUSICTRACK iface, IDirectMusicSegment* pSegment);
+extern HRESULT WINAPI IDirectMusicTrackImpl_InitPlay (LPDIRECTMUSICTRACK iface, IDirectMusicSegmentState* pSegmentState, IDirectMusicPerformance* pPerformance, void** ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicTrackImpl_EndPlay (LPDIRECTMUSICTRACK iface, void* pStateData);
+extern HRESULT WINAPI IDirectMusicTrackImpl_Play (LPDIRECTMUSICTRACK iface, void* pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID);
+extern HRESULT WINAPI IDirectMusicTrackImpl_GetParam (LPDIRECTMUSICTRACK iface, REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam);
+extern HRESULT WINAPI IDirectMusicTrackImpl_SetParam (LPDIRECTMUSICTRACK iface, REFGUID rguidType, MUSIC_TIME mtTime, void* pParam);
+extern HRESULT WINAPI IDirectMusicTrackImpl_IsParamSupported (LPDIRECTMUSICTRACK iface, REFGUID rguidType);
+extern HRESULT WINAPI IDirectMusicTrackImpl_AddNotificationType (LPDIRECTMUSICTRACK iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicTrackImpl_RemoveNotificationType (LPDIRECTMUSICTRACK iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicTrackImpl_Clone (LPDIRECTMUSICTRACK iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack** ppTrack);
+
+/*****************************************************************************
+ * IDirectMusicTrack8Impl implementation structure
+ */
+struct IDirectMusicTrack8Impl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicTrack8);
+ DWORD ref;
+
+ /* IDirectMusicTrack8Impl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicTrack8Impl_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicTrack8Impl_AddRef (LPDIRECTMUSICTRACK8 iface);
+extern ULONG WINAPI IDirectMusicTrack8Impl_Release (LPDIRECTMUSICTRACK8 iface);
+/* IDirectMusicTrack: */
+extern HRESULT WINAPI IDirectMusicTrack8Impl_Init (LPDIRECTMUSICTRACK8 iface, IDirectMusicSegment* pSegment);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_InitPlay (LPDIRECTMUSICTRACK8 iface, IDirectMusicSegmentState* pSegmentState, IDirectMusicPerformance* pPerformance, void** ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_EndPlay (LPDIRECTMUSICTRACK8 iface, void* pStateData);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_Play (LPDIRECTMUSICTRACK8 iface, void* pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_GetParam (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_SetParam (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, MUSIC_TIME mtTime, void* pParam);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_IsParamSupported (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_AddNotificationType (LPDIRECTMUSICTRACK8 iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_RemoveNotificationType (LPDIRECTMUSICTRACK8 iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_Clone (LPDIRECTMUSICTRACK8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack** ppTrack);
+/* IDirectMusicTrack8: */
+extern HRESULT WINAPI IDirectMusicTrack8Impl_PlayEx (LPDIRECTMUSICTRACK8 iface, void* pStateData, REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd, REFERENCE_TIME rtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_GetParamEx (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, REFERENCE_TIME rtTime, REFERENCE_TIME* prtNext, void* pParam, void* pStateData, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_SetParamEx (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, REFERENCE_TIME rtTime, void* pParam, void* pStateData, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_Compose (LPDIRECTMUSICTRACK8 iface, IUnknown* pContext, DWORD dwTrackGroup, IDirectMusicTrack** ppResultTrack);
+extern HRESULT WINAPI IDirectMusicTrack8Impl_Join (LPDIRECTMUSICTRACK8 iface, IDirectMusicTrack* pNewTrack, MUSIC_TIME mtJoin, IUnknown* pContext, DWORD dwTrackGroup, IDirectMusicTrack** ppResultTrack);
+
+
+/*****************************************************************************
+ * IDirectMusicBandImpl implementation structure
+ */
+struct IDirectMusicBandImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicBand);
+ DWORD ref;
+
+ /* IDirectMusicBandImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicBandImpl_QueryInterface (LPDIRECTMUSICBAND iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicBandImpl_AddRef (LPDIRECTMUSICBAND iface);
+extern ULONG WINAPI IDirectMusicBandImpl_Release (LPDIRECTMUSICBAND iface);
+/* IDirectMusicBand: */
+extern HRESULT WINAPI IDirectMusicBandImpl_CreateSegment (LPDIRECTMUSICBAND iface, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicBandImpl_Download (LPDIRECTMUSICBAND iface, IDirectMusicPerformance* pPerformance);
+extern HRESULT WINAPI IDirectMusicBandImpl_Unload (LPDIRECTMUSICBAND iface, IDirectMusicPerformance* pPerformance);
+
+/*****************************************************************************
+ * IDirectMusicObjectImpl implementation structure
+ */
+struct IDirectMusicObjectImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicObject);
+ DWORD ref;
+
+ /* IDirectMusicObjectImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicObjectImpl_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicObjectImpl_AddRef (LPDIRECTMUSICOBJECT iface);
+extern ULONG WINAPI IDirectMusicObjectImpl_Release (LPDIRECTMUSICOBJECT iface);
+/* IDirectMusicObject: */
+extern HRESULT WINAPI IDirectMusicObjectImpl_GetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc);
+extern HRESULT WINAPI IDirectMusicObjectImpl_SetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc);
+extern HRESULT WINAPI IDirectMusicObjectImpl_ParseDescriptor (LPDIRECTMUSICOBJECT iface, LPSTREAM pStream, LPDMUS_OBJECTDESC pDesc);
+
+/*****************************************************************************
+ * IDirectMusicLoaderImpl implementation structure
+ */
+struct IDirectMusicLoaderImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicLoader);
+ DWORD ref;
+
+ /* IDirectMusicLoaderImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicLoaderImpl_QueryInterface (LPDIRECTMUSICLOADER iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicLoaderImpl_AddRef (LPDIRECTMUSICLOADER iface);
+extern ULONG WINAPI IDirectMusicLoaderImpl_Release (LPDIRECTMUSICLOADER iface);
+/* IDirectMusicLoader: */
+extern HRESULT WINAPI IDirectMusicLoaderImpl_GetObject (LPDIRECTMUSICLOADER iface, LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID*ppv);
+extern HRESULT WINAPI IDirectMusicLoaderImpl_SetObject (LPDIRECTMUSICLOADER iface, LPDMUS_OBJECTDESC pDesc);
+extern HRESULT WINAPI IDirectMusicLoaderImpl_SetSearchDirectory (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, WCHAR* pwzPath, BOOL fClear);
+extern HRESULT WINAPI IDirectMusicLoaderImpl_ScanDirectory (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, WCHAR* pwzFileExtension, WCHAR* pwzScanFileName);
+extern HRESULT WINAPI IDirectMusicLoaderImpl_CacheObject (LPDIRECTMUSICLOADER iface, IDirectMusicObject* pObject);
+extern HRESULT WINAPI IDirectMusicLoaderImpl_ReleaseObject (LPDIRECTMUSICLOADER iface, IDirectMusicObject* pObject);
+extern HRESULT WINAPI IDirectMusicLoaderImpl_ClearCache (LPDIRECTMUSICLOADER iface, REFGUID rguidClass);
+extern HRESULT WINAPI IDirectMusicLoaderImpl_EnableCache (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, BOOL fEnable);
+extern HRESULT WINAPI IDirectMusicLoaderImpl_EnumObject (LPDIRECTMUSICLOADER iface, REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc);
+
+/*****************************************************************************
+ * IDirectMusicLoader8Impl implementation structure
+ */
+struct IDirectMusicLoader8Impl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicLoader8);
+ DWORD ref;
+
+ /* IDirectMusicLoader8Impl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicLoader8Impl_QueryInterface (LPDIRECTMUSICLOADER8 iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicLoader8Impl_AddRef (LPDIRECTMUSICLOADER8 iface);
+extern ULONG WINAPI IDirectMusicLoader8Impl_Release (LPDIRECTMUSICLOADER8 iface);
+/* IDirectMusicLoader: */
+extern HRESULT WINAPI IDirectMusicLoader8Impl_GetObject (LPDIRECTMUSICLOADER8 iface, LPDMUS_OBJECTDESC pDesc, REFIID riid, LPVOID*ppv);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_SetObject (LPDIRECTMUSICLOADER8 iface, LPDMUS_OBJECTDESC pDesc);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_SetSearchDirectory (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, WCHAR* pwzPath, BOOL fClear);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_ScanDirectory (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, WCHAR* pwzFileExtension, WCHAR* pwzScanFileName);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_CacheObject (LPDIRECTMUSICLOADER8 iface, IDirectMusicObject* pObject);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_ReleaseObject (LPDIRECTMUSICLOADER8 iface, IDirectMusicObject* pObject);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_ClearCache (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_EnableCache (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, BOOL fEnable);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_EnumObject (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc);
+/* IDirectMusicLoader8: */
+extern void WINAPI IDirectMusicLoader8Impl_CollectGarbage (LPDIRECTMUSICLOADER8 iface);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_ReleaseObjectByUnknown (LPDIRECTMUSICLOADER8 iface, IUnknown* pObject);
+extern HRESULT WINAPI IDirectMusicLoader8Impl_LoadObjectFromFile (LPDIRECTMUSICLOADER8 iface, REFGUID rguidClassID, REFIID iidInterfaceID, WCHAR* pwzFilePath, void** ppObject);
+
+/*****************************************************************************
+ * IDirectMusicGetLoaderImpl implementation structure
+ */
+struct IDirectMusicGetLoaderImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicGetLoader);
+ DWORD ref;
+
+ /* IDirectMusicGetLoaderImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicGetLoaderImpl_QueryInterface (LPDIRECTMUSICGETLOADER iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicGetLoaderImpl_AddRef (LPDIRECTMUSICGETLOADER iface);
+extern ULONG WINAPI IDirectMusicGetLoaderImpl_Release (LPDIRECTMUSICGETLOADER iface);
+/* IDirectMusicGetLoader: */
+extern HRESULT WINAPI IDirectMusicGetLoaderImpl_GetLoader (LPDIRECTMUSICGETLOADER iface, IDirectMusicLoader** ppLoader);
+
+/*****************************************************************************
+ * IDirectMusicSegmentImpl implementation structure
+ */
+struct IDirectMusicSegmentImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicSegment);
+ DWORD ref;
+
+ /* IDirectMusicSegmentImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicSegmentImpl_QueryInterface (LPDIRECTMUSICSEGMENT iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicSegmentImpl_AddRef (LPDIRECTMUSICSEGMENT iface);
+extern ULONG WINAPI IDirectMusicSegmentImpl_Release (LPDIRECTMUSICSEGMENT iface);
+/* IDirectMusicSegment: */
+extern HRESULT WINAPI IDirectMusicSegmentImpl_GetLength (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME* pmtLength);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_SetLength (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtLength);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_GetRepeats (LPDIRECTMUSICSEGMENT iface, DWORD* pdwRepeats);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_SetRepeats (LPDIRECTMUSICSEGMENT iface, DWORD dwRepeats);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_GetDefaultResolution (LPDIRECTMUSICSEGMENT iface, DWORD* pdwResolution);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_SetDefaultResolution (LPDIRECTMUSICSEGMENT iface, DWORD dwResolution);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_GetTrack (LPDIRECTMUSICSEGMENT iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack** ppTrack);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_GetTrackGroup (LPDIRECTMUSICSEGMENT iface, IDirectMusicTrack* pTrack, DWORD* pdwGroupBits);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_InsertTrack (LPDIRECTMUSICSEGMENT iface, IDirectMusicTrack* pTrack, DWORD dwGroupBits);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_RemoveTrack (LPDIRECTMUSICSEGMENT iface, IDirectMusicTrack* pTrack);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_InitPlay (LPDIRECTMUSICSEGMENT iface, IDirectMusicSegmentState** ppSegState, IDirectMusicPerformance* pPerformance, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_GetGraph (LPDIRECTMUSICSEGMENT iface, IDirectMusicGraph** ppGraph);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_SetGraph (LPDIRECTMUSICSEGMENT iface, IDirectMusicGraph* pGraph);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_AddNotificationType (LPDIRECTMUSICSEGMENT iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_RemoveNotificationType (LPDIRECTMUSICSEGMENT iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_GetParam (LPDIRECTMUSICSEGMENT iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_SetParam (LPDIRECTMUSICSEGMENT iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_Clone (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_SetStartPoint (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtStart);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_GetStartPoint (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME* pmtStart);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_SetLoopPoints (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_GetLoopPoints (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME* pmtStart, MUSIC_TIME* pmtEnd);
+extern HRESULT WINAPI IDirectMusicSegmentImpl_SetPChannelsUsed (LPDIRECTMUSICSEGMENT iface, DWORD dwNumPChannels, DWORD* paPChannels);
+
+/*****************************************************************************
+ * IDirectMusicSegment8Impl implementation structure
+ */
+struct IDirectMusicSegment8Impl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicSegment8);
+ DWORD ref;
+
+ /* IDirectMusicSegment8Impl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicSegment8Impl_QueryInterface (LPDIRECTMUSICSEGMENT8 iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicSegment8Impl_AddRef (LPDIRECTMUSICSEGMENT8 iface);
+extern ULONG WINAPI IDirectMusicSegment8Impl_Release (LPDIRECTMUSICSEGMENT8 iface);
+/* IDirectMusicSegment: */
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetLength (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtLength);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_SetLength (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtLength);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetRepeats (LPDIRECTMUSICSEGMENT8 iface, DWORD* pdwRepeats);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_SetRepeats (LPDIRECTMUSICSEGMENT8 iface, DWORD dwRepeats);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface, DWORD* pdwResolution);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_SetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface, DWORD dwResolution);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetTrack (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack** ppTrack);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetTrackGroup (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack, DWORD* pdwGroupBits);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_InsertTrack (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack, DWORD dwGroupBits);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_RemoveTrack (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_InitPlay (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicSegmentState** ppSegState, IDirectMusicPerformance* pPerformance, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetGraph (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicGraph** ppGraph);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_SetGraph (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicGraph* pGraph);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_AddNotificationType (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_RemoveNotificationType (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetParam (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_SetParam (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_Clone (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_SetStartPoint (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetStartPoint (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtStart);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_SetLoopPoints (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetLoopPoints (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtStart, MUSIC_TIME* pmtEnd);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_SetPChannelsUsed (LPDIRECTMUSICSEGMENT8 iface, DWORD dwNumPChannels, DWORD* paPChannels);
+/* IDirectMusicSegment8: */
+extern HRESULT WINAPI IDirectMusicSegment8Impl_SetTrackConfig (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_GetAudioPathConfig (LPDIRECTMUSICSEGMENT8 iface, IUnknown** ppAudioPathConfig);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_Compose (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtTime, IDirectMusicSegment* pFromSegment, IDirectMusicSegment* pToSegment, IDirectMusicSegment** ppComposedSegment);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_Download (LPDIRECTMUSICSEGMENT8 iface, IUnknown *pAudioPath);
+extern HRESULT WINAPI IDirectMusicSegment8Impl_Unload (LPDIRECTMUSICSEGMENT8 iface, IUnknown *pAudioPath);
+
+/*****************************************************************************
+ * IDirectMusicSegmentStateImpl implementation structure
+ */
+struct IDirectMusicSegmentStateImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicSegmentState);
+ DWORD ref;
+
+ /* IDirectMusicSegmentStateImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicSegmentStateImpl_QueryInterface (LPDIRECTMUSICSEGMENTSTATE iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicSegmentStateImpl_AddRef (LPDIRECTMUSICSEGMENTSTATE iface);
+extern ULONG WINAPI IDirectMusicSegmentStateImpl_Release (LPDIRECTMUSICSEGMENTSTATE iface);
+/* IDirectMusicSegmentState: */
+extern HRESULT WINAPI IDirectMusicSegmentStateImpl_GetRepeats (LPDIRECTMUSICSEGMENTSTATE iface, DWORD* pdwRepeats);
+extern HRESULT WINAPI IDirectMusicSegmentStateImpl_GetSegment (LPDIRECTMUSICSEGMENTSTATE iface, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicSegmentStateImpl_GetStartTime (LPDIRECTMUSICSEGMENTSTATE iface, MUSIC_TIME* pmtStart);
+extern HRESULT WINAPI IDirectMusicSegmentStateImpl_GetSeek (LPDIRECTMUSICSEGMENTSTATE iface, MUSIC_TIME* pmtSeek);
+extern HRESULT WINAPI IDirectMusicSegmentStateImpl_GetStartPoint (LPDIRECTMUSICSEGMENTSTATE iface, MUSIC_TIME* pmtStart);
+
+/*****************************************************************************
+ * IDirectMusicSegmentState8Impl implementation structure
+ */
+struct IDirectMusicSegmentState8Impl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicSegmentState8);
+ DWORD ref;
+
+ /* IDirectMusicSegmentState8Impl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicSegmentState8Impl_QueryInterface (LPDIRECTMUSICSEGMENTSTATE8 iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicSegmentState8Impl_AddRef (LPDIRECTMUSICSEGMENTSTATE8 iface);
+extern ULONG WINAPI IDirectMusicSegmentState8Impl_Release (LPDIRECTMUSICSEGMENTSTATE8 iface);
+/* IDirectMusicSegmentState: */
+extern HRESULT WINAPI IDirectMusicSegmentState8Impl_GetRepeats (LPDIRECTMUSICSEGMENTSTATE8 iface, DWORD* pdwRepeats);
+extern HRESULT WINAPI IDirectMusicSegmentState8Impl_GetSegment (LPDIRECTMUSICSEGMENTSTATE8 iface, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicSegmentState8Impl_GetStartTime (LPDIRECTMUSICSEGMENTSTATE8 iface, MUSIC_TIME* pmtStart);
+extern HRESULT WINAPI IDirectMusicSegmentState8Impl_GetSeek (LPDIRECTMUSICSEGMENTSTATE8 iface, MUSIC_TIME* pmtSeek);
+extern HRESULT WINAPI IDirectMusicSegmentState8Impl_GetStartPoint (LPDIRECTMUSICSEGMENTSTATE8 iface, MUSIC_TIME* pmtStart);
+/* IDirectMusicSegmentState8: */
+extern HRESULT WINAPI IDirectMusicSegmentState8Impl_SetTrackConfig (LPDIRECTMUSICSEGMENTSTATE8 iface, REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff);
+extern HRESULT WINAPI IDirectMusicSegmentState8Impl_GetObjectInPath (LPDIRECTMUSICSEGMENTSTATE8 iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void** ppObject);
+
+/*****************************************************************************
+ * IDirectMusicAudioPathImpl implementation structure
+ */
+struct IDirectMusicAudioPathImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicAudioPath);
+ DWORD ref;
+
+ /* IDirectMusicAudioPathImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicAudioPathImpl_QueryInterface (LPDIRECTMUSICAUDIOPATH iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicAudioPathImpl_AddRef (LPDIRECTMUSICAUDIOPATH iface);
+extern ULONG WINAPI IDirectMusicAudioPathImpl_Release (LPDIRECTMUSICAUDIOPATH iface);
+/* IDirectMusicAudioPath: */
+extern HRESULT WINAPI IDirectMusicAudioPathImpl_GetObjectInPath (LPDIRECTMUSICAUDIOPATH iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, WORD dwIndex, REFGUID iidInterface, void** ppObject);
+extern HRESULT WINAPI IDirectMusicAudioPathImpl_Activate (LPDIRECTMUSICAUDIOPATH iface, BOOL fActivate);
+extern HRESULT WINAPI IDirectMusicAudioPathImpl_SetVolume (LPDIRECTMUSICAUDIOPATH iface, long lVolume, DWORD dwDuration);
+extern HRESULT WINAPI IDirectMusicAudioPathImpl_ConvertPChannel (LPDIRECTMUSICAUDIOPATH iface, DWORD dwPChannelIn, DWORD* pdwPChannelOut);
+
+/*****************************************************************************
+ * IDirectMusicPerformanceImpl implementation structure
+ */
+struct IDirectMusicPerformanceImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicPerformance);
+ DWORD ref;
+
+ /* IDirectMusicPerformanceImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_QueryInterface (LPDIRECTMUSICPERFORMANCE iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicPerformanceImpl_AddRef (LPDIRECTMUSICPERFORMANCE iface);
+extern ULONG WINAPI IDirectMusicPerformanceImpl_Release (LPDIRECTMUSICPERFORMANCE iface);
+/* IDirectMusicPerformance: */
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_Init (LPDIRECTMUSICPERFORMANCE iface, IDirectMusic** ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_PlaySegment (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegment* pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_Stop (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetSegmentState (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegmentState** ppSegmentState, MUSIC_TIME mtTime);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_SetPrepareTime (LPDIRECTMUSICPERFORMANCE iface, DWORD dwMilliSeconds);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetPrepareTime (LPDIRECTMUSICPERFORMANCE iface, DWORD* pdwMilliSeconds);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_SetBumperLength (LPDIRECTMUSICPERFORMANCE iface, DWORD dwMilliSeconds);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetBumperLength (LPDIRECTMUSICPERFORMANCE iface, DWORD* pdwMilliSeconds);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_SendPMsg (LPDIRECTMUSICPERFORMANCE iface, DMUS_PMSG* pPMSG);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_MusicToReferenceTime (LPDIRECTMUSICPERFORMANCE iface, MUSIC_TIME mtTime, REFERENCE_TIME* prtTime);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_ReferenceToMusicTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME rtTime, MUSIC_TIME* pmtTime);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_IsPlaying (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegState);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME* prtNow, MUSIC_TIME* pmtNow);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_AllocPMsg (LPDIRECTMUSICPERFORMANCE iface, ULONG cb, DMUS_PMSG** ppPMSG);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_FreePMsg (LPDIRECTMUSICPERFORMANCE iface, DMUS_PMSG* pPMSG);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetGraph (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicGraph** ppGraph);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_SetGraph (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicGraph* pGraph);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_SetNotificationHandle (LPDIRECTMUSICPERFORMANCE iface, HANDLE hNotification, REFERENCE_TIME rtMinimum);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetNotificationPMsg (LPDIRECTMUSICPERFORMANCE iface, DMUS_NOTIFICATION_PMSG** ppNotificationPMsg);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_AddNotificationType (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_RemoveNotificationType (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_AddPort (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicPort* pPort);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_RemovePort (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicPort* pPort);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE iface, DWORD dwBlockNum, IDirectMusicPort* pPort, DWORD dwGroup);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_AssignPChannel (LPDIRECTMUSICPERFORMANCE iface, DWORD dwPChannel, IDirectMusicPort* pPort, DWORD dwGroup, DWORD dwMChannel);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_PChannelInfo (LPDIRECTMUSICPERFORMANCE iface, DWORD dwPChannel, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_DownloadInstrument (LPDIRECTMUSICPERFORMANCE iface, IDirectMusicInstrument* pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument** ppDownInst, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_Invalidate (LPDIRECTMUSICPERFORMANCE iface, MUSIC_TIME mtTime, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_SetParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetGlobalParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, void* pParam, DWORD dwSize);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_SetGlobalParam (LPDIRECTMUSICPERFORMANCE iface, REFGUID rguidType, void* pParam, DWORD dwSize);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetLatencyTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME* prtTime);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetQueueTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME* prtTime);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_AdjustTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME rtAmount);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_CloseDown (LPDIRECTMUSICPERFORMANCE iface);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_GetResolvedTime (LPDIRECTMUSICPERFORMANCE iface, REFERENCE_TIME rtTime, REFERENCE_TIME* prtResolved, DWORD dwTimeResolveFlags);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_MIDIToMusic (LPDIRECTMUSICPERFORMANCE iface, BYTE bMIDIValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, WORD* pwMusicValue);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_MusicToMIDI (LPDIRECTMUSICPERFORMANCE iface, WORD wMusicValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE* pbMIDIValue);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_TimeToRhythm (LPDIRECTMUSICPERFORMANCE iface, MUSIC_TIME mtTime, DMUS_TIMESIGNATURE* pTimeSig, WORD* pwMeasure, BYTE* pbBeat, BYTE* pbGrid, short* pnOffset);
+extern HRESULT WINAPI IDirectMusicPerformanceImpl_RhythmToTime (LPDIRECTMUSICPERFORMANCE iface, WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE* pTimeSig, MUSIC_TIME* pmtTime);
+
+/*****************************************************************************
+ * IDirectMusicPerformance8Impl implementation structure
+ */
+struct IDirectMusicPerformance8Impl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicPerformance8);
+ DWORD ref;
+
+ /* IDirectMusicPerformance8Impl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_QueryInterface (LPDIRECTMUSICPERFORMANCE8 iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicPerformance8Impl_AddRef (LPDIRECTMUSICPERFORMANCE8 iface);
+extern ULONG WINAPI IDirectMusicPerformance8Impl_Release (LPDIRECTMUSICPERFORMANCE8 iface);
+/* IDirectMusicPerformance: */
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_Init (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusic** ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegment (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_Stop (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetSegmentState (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegmentState** ppSegmentState, MUSIC_TIME mtTime);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_SetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwMilliSeconds);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface, DWORD* pdwMilliSeconds);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_SetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwMilliSeconds);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface, DWORD* pdwMilliSeconds);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_SendPMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pPMSG);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToReferenceTime (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, REFERENCE_TIME* prtTime);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_ReferenceToMusicTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtTime, MUSIC_TIME* pmtTime);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_IsPlaying (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegState);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtNow, MUSIC_TIME* pmtNow);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_AllocPMsg (LPDIRECTMUSICPERFORMANCE8 iface, ULONG cb, DMUS_PMSG** ppPMSG);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_FreePMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pPMSG);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph** ppGraph);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_SetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph* pGraph);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_SetNotificationHandle (LPDIRECTMUSICPERFORMANCE8 iface, HANDLE hNotification, REFERENCE_TIME rtMinimum);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetNotificationPMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_NOTIFICATION_PMSG** ppNotificationPMsg);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_AddNotificationType (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_RemoveNotificationType (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidNotificationType);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_AddPort (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicPort* pPort);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_RemovePort (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicPort* pPort);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwBlockNum, IDirectMusicPort* pPort, DWORD dwGroup);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannel (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwPChannel, IDirectMusicPort* pPort, DWORD dwGroup, DWORD dwMChannel);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_PChannelInfo (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwPChannel, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_DownloadInstrument (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicInstrument* pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument** ppDownInst, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_Invalidate (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_SetParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, void* pParam, DWORD dwSize);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_SetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, void* pParam, DWORD dwSize);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetLatencyTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtTime);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetQueueTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtTime);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_AdjustTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtAmount);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_CloseDown (LPDIRECTMUSICPERFORMANCE8 iface);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetResolvedTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtTime, REFERENCE_TIME* prtResolved, DWORD dwTimeResolveFlags);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_MIDIToMusic (LPDIRECTMUSICPERFORMANCE8 iface, BYTE bMIDIValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, WORD* pwMusicValue);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToMIDI (LPDIRECTMUSICPERFORMANCE8 iface, WORD wMusicValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE* pbMIDIValue);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_TimeToRhythm (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, DMUS_TIMESIGNATURE* pTimeSig, WORD* pwMeasure, BYTE* pbBeat, BYTE* pbGrid, short* pnOffset);
+extern HRESULT WINAPI IDirectMusicPerformance8Impl_RhythmToTime (LPDIRECTMUSICPERFORMANCE8 iface, WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE* pTimeSig, MUSIC_TIME* pmtTime);
+/* IDirectMusicPerformance8: */
+extern HRESULT WINAPI IDirectMusicPerformance8ImplInitAudio (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusic** ppDirectMusic, IDirectSound** ppDirectSound, HWND hWnd, DWORD dwDefaultPathType, DWORD dwPChannelCount, DWORD dwFlags, DMUS_AUDIOPARAMS* pParams);
+extern HRESULT WINAPI IDirectMusicPerformance8ImplPlaySegmentEx (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pSource, WCHAR* pwzSegmentName, IUnknown* pTransition, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState, IUnknown* pFrom, IUnknown* pAudioPath);
+extern HRESULT WINAPI IDirectMusicPerformance8ImplStopEx (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pObjectToStop, __int64 i64StopTime, DWORD dwFlags);
+extern HRESULT WINAPI IDirectMusicPerformance8ImplClonePMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pSourcePMSG, DMUS_PMSG** ppCopyPMSG);
+extern HRESULT WINAPI IDirectMusicPerformance8ImplCreateAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pSourceConfig, BOOL fActivate, IDirectMusicAudioPath** ppNewPath);
+extern HRESULT WINAPI IDirectMusicPerformance8ImplCreateStandardAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwType, DWORD dwPChannelCount, BOOL fActivate, IDirectMusicAudioPath** ppNewPath);
+extern HRESULT WINAPI IDirectMusicPerformance8ImplSetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath* pAudioPath);
+extern HRESULT WINAPI IDirectMusicPerformance8ImplGetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath** ppAudioPath);
+extern HRESULT WINAPI IDirectMusicPerformance8ImplGetParamEx (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwTrackID, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam);
+
+/*****************************************************************************
+ * IDirectMusicGraphImpl implementation structure
+ */
+struct IDirectMusicGraphImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicGraph);
+ DWORD ref;
+
+ /* IDirectMusicGraphImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicGraphImpl_QueryInterface (LPDIRECTMUSICGRAPH iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicGraphImpl_AddRef (LPDIRECTMUSICGRAPH iface);
+extern ULONG WINAPI IDirectMusicGraphImpl_Release (LPDIRECTMUSICGRAPH iface);
+/* IDirectMusicGraph: */
+extern HRESULT WINAPI IDirectMusicGraphImpl_StampPMsg (LPDIRECTMUSICGRAPH iface, DMUS_PMSG* pPMSG);
+extern HRESULT WINAPI IDirectMusicGraphImpl_InsertTool (LPDIRECTMUSICGRAPH iface, IDirectMusicTool* pTool, DWORD* pdwPChannels, DWORD cPChannels, LONG lIndex);
+extern HRESULT WINAPI IDirectMusicGraphImpl_GetTool (LPDIRECTMUSICGRAPH iface, DWORD dwIndex, IDirectMusicTool** ppTool);
+extern HRESULT WINAPI IDirectMusicGraphImpl_RemoveTool (LPDIRECTMUSICGRAPH iface, IDirectMusicTool* pTool);
+
+/*****************************************************************************
+ * IDirectMusicStyleImpl implementation structure
+ */
+struct IDirectMusicStyleImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicStyle);
+ DWORD ref;
+
+ /* IDirectMusicStyleImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicStyleImpl_QueryInterface (LPDIRECTMUSICSTYLE iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicStyleImpl_AddRef (LPDIRECTMUSICSTYLE iface);
+extern ULONG WINAPI IDirectMusicStyleImpl_Release (LPDIRECTMUSICSTYLE iface);
+/* IDirectMusicStyle: */
+extern HRESULT WINAPI IDirectMusicStyleImpl_GetBand (LPDIRECTMUSICSTYLE iface, WCHAR* pwszName, IDirectMusicBand** ppBand);
+extern HRESULT WINAPI IDirectMusicStyleImpl_EnumBand (LPDIRECTMUSICSTYLE iface, DWORD dwIndex, WCHAR* pwszName);
+extern HRESULT WINAPI IDirectMusicStyleImpl_GetDefaultBand (LPDIRECTMUSICSTYLE iface, IDirectMusicBand** ppBand);
+extern HRESULT WINAPI IDirectMusicStyleImpl_EnumMotif (LPDIRECTMUSICSTYLE iface, DWORD dwIndex, WCHAR* pwszName);
+extern HRESULT WINAPI IDirectMusicStyleImpl_GetMotif (LPDIRECTMUSICSTYLE iface, WCHAR* pwszName, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicStyleImpl_GetDefaultChordMap (LPDIRECTMUSICSTYLE iface, IDirectMusicChordMap** ppChordMap);
+extern HRESULT WINAPI IDirectMusicStyleImpl_EnumChordMap (LPDIRECTMUSICSTYLE iface, DWORD dwIndex, WCHAR* pwszName);
+extern HRESULT WINAPI IDirectMusicStyleImpl_GetChordMap (LPDIRECTMUSICSTYLE iface, WCHAR* pwszName, IDirectMusicChordMap** ppChordMap);
+extern HRESULT WINAPI IDirectMusicStyleImpl_GetTimeSignature (LPDIRECTMUSICSTYLE iface, DMUS_TIMESIGNATURE* pTimeSig);
+extern HRESULT WINAPI IDirectMusicStyleImpl_GetEmbellishmentLength (LPDIRECTMUSICSTYLE iface, DWORD dwType, DWORD dwLevel, DWORD* pdwMin, DWORD* pdwMax);
+extern HRESULT WINAPI IDirectMusicStyleImpl_GetTempo (LPDIRECTMUSICSTYLE iface, double* pTempo);
+
+/*****************************************************************************
+ * IDirectMusicStyle8Impl implementation structure
+ */
+struct IDirectMusicStyle8Impl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicStyle8);
+ DWORD ref;
+
+ /* IDirectMusicStyle8Impl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicStyle8Impl_QueryInterface (LPDIRECTMUSICSTYLE8 iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicStyle8Impl_AddRef (LPDIRECTMUSICSTYLE8 iface);
+extern ULONG WINAPI IDirectMusicStyle8Impl_Release (LPDIRECTMUSICSTYLE8 iface);
+/* IDirectMusicStyle: */
+extern HRESULT WINAPI IDirectMusicStyle8Impl_GetBand (LPDIRECTMUSICSTYLE8 iface, WCHAR* pwszName, IDirectMusicBand** ppBand);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_EnumBand (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, WCHAR* pwszName);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_GetDefaultBand (LPDIRECTMUSICSTYLE8 iface, IDirectMusicBand** ppBand);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_EnumMotif (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, WCHAR* pwszName);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_GetMotif (LPDIRECTMUSICSTYLE8 iface, WCHAR* pwszName, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_GetDefaultChordMap (LPDIRECTMUSICSTYLE8 iface, IDirectMusicChordMap** ppChordMap);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_EnumChordMap (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, WCHAR* pwszName);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_GetChordMap (LPDIRECTMUSICSTYLE8 iface, WCHAR* pwszName, IDirectMusicChordMap** ppChordMap);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_GetTimeSignature (LPDIRECTMUSICSTYLE8 iface, DMUS_TIMESIGNATURE* pTimeSig);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_GetEmbellishmentLength (LPDIRECTMUSICSTYLE8 iface, DWORD dwType, DWORD dwLevel, DWORD* pdwMin, DWORD* pdwMax);
+extern HRESULT WINAPI IDirectMusicStyle8Impl_GetTempo (LPDIRECTMUSICSTYLE8 iface, double* pTempo);
+/* IDirectMusicStyle8: */
+extern HRESULT WINAPI IDirectMusicStyle8ImplEnumPattern (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, DWORD dwPatternType, WCHAR* pwszName);
+
+/*****************************************************************************
+ * IDirectMusicChordMapImpl implementation structure
+ */
+struct IDirectMusicChordMapImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicChordMap);
+ DWORD ref;
+
+ /* IDirectMusicGetLoaderImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicChordMapImpl_QueryInterface (LPDIRECTMUSICCHORDMAP iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicChordMapImpl_AddRef (LPDIRECTMUSICCHORDMAP iface);
+extern ULONG WINAPI IDirectMusicChordMapImpl_Release (LPDIRECTMUSICCHORDMAP iface);
+/* IDirectMusicChordMap: */
+extern HRESULT WINAPI IDirectMusicChordMapImpl_GetScale (LPDIRECTMUSICCHORDMAP iface, DWORD* pdwScale);
+
+/*****************************************************************************
+ * IDirectMusicComposerImpl implementation structure
+ */
+struct IDirectMusicComposerImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicComposer);
+ DWORD ref;
+
+ /* IDirectMusicComposerImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicComposerImpl_QueryInterface (LPDIRECTMUSICCOMPOSER iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicComposerImpl_AddRef (LPDIRECTMUSICCOMPOSER iface);
+extern ULONG WINAPI IDirectMusicComposerImpl_Release (LPDIRECTMUSICCOMPOSER iface);
+/* IDirectMusicComposer: */
+extern HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromTemplate (LPDIRECTMUSICCOMPOSER iface, IDirectMusicStyle* pStyle, IDirectMusicSegment* pTemplate, WORD wActivity, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromShape (LPDIRECTMUSICCOMPOSER iface, IDirectMusicStyle* pStyle, WORD wNumMeasures, WORD wShape, WORD wActivity, BOOL fIntro, BOOL fEnd, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicComposerImpl_ComposeTransition (LPDIRECTMUSICCOMPOSER iface, IDirectMusicSegment* pFromSeg, IDirectMusicSegment* pToSeg, MUSIC_TIME mtTime, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppTransSeg);
+extern HRESULT WINAPI IDirectMusicComposerImpl_AutoTransition (LPDIRECTMUSICCOMPOSER iface, IDirectMusicPerformance* pPerformance, IDirectMusicSegment* pToSeg, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap* pChordMap, IDirectMusicSegment** ppTransSeg, IDirectMusicSegmentState** ppToSegState, IDirectMusicSegmentState** ppTransSegState);
+extern HRESULT WINAPI IDirectMusicComposerImpl_ComposeTemplateFromShape (LPDIRECTMUSICCOMPOSER iface, WORD wNumMeasures, WORD wShape, BOOL fIntro, BOOL fEnd, WORD wEndLength, IDirectMusicSegment** ppTemplate);
+extern HRESULT WINAPI IDirectMusicComposerImpl_ChangeChordMap (LPDIRECTMUSICCOMPOSER iface, IDirectMusicSegment* pSegment, BOOL fTrackScale, IDirectMusicChordMap* pChordMap);
+
+/*****************************************************************************
+ * IDirectMusicPatternTrackImpl implementation structure
+ */
+struct IDirectMusicPatternTrackImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicPatternTrack);
+ DWORD ref;
+
+ /* IDirectMusicComposerImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicPatternTrackImpl_QueryInterface (LPDIRECTMUSICPATTERNTRACK iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicPatternTrackImpl_AddRef (LPDIRECTMUSICPATTERNTRACK iface);
+extern ULONG WINAPI IDirectMusicPatternTrackImpl_Release (LPDIRECTMUSICPATTERNTRACK iface);
+/* IDirectMusicPatternTrack: */
+extern HRESULT WINAPI IDirectMusicPatternTrackImpl_CreateSegment (LPDIRECTMUSICPATTERNTRACK iface, IDirectMusicStyle* pStyle, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicPatternTrackImpl_SetVariation (LPDIRECTMUSICPATTERNTRACK iface, IDirectMusicSegmentState* pSegState, DWORD dwVariationFlags, DWORD dwPart);
+extern HRESULT WINAPI IDirectMusicPatternTrackImpl_SetPatternByName (LPDIRECTMUSICPATTERNTRACK iface, IDirectMusicSegmentState* pSegState, WCHAR* wszName, IDirectMusicStyle* pStyle, DWORD dwPatternType, DWORD* pdwLength);
+
+/*****************************************************************************
+ * IDirectMusicScriptImpl implementation structure
+ */
+struct IDirectMusicScriptImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicScript);
+ DWORD ref;
+
+ /* IDirectMusicScriptImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicScriptImpl_QueryInterface (LPDIRECTMUSICSCRIPT iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicScriptImpl_AddRef (LPDIRECTMUSICSCRIPT iface);
+extern ULONG WINAPI IDirectMusicScriptImpl_Release (LPDIRECTMUSICSCRIPT iface);
+/* IDirectMusicScript: */
+extern HRESULT WINAPI IDirectMusicScriptImpl_Init (LPDIRECTMUSICSCRIPT iface, IDirectMusicPerformance* pPerformance, DMUS_SCRIPT_ERRORINFO* pErrorInfo);
+extern HRESULT WINAPI IDirectMusicScriptImpl_CallRoutine (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszRoutineName, DMUS_SCRIPT_ERRORINFO* pErrorInfo);
+extern HRESULT WINAPI IDirectMusicScriptImpl_SetVariableVariant (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, VARIANT varValue, BOOL fSetRef, DMUS_SCRIPT_ERRORINFO* pErrorInfo);
+extern HRESULT WINAPI IDirectMusicScriptImpl_GetVariableVariant (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, VARIANT* pvarValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo);
+extern HRESULT WINAPI IDirectMusicScriptImpl_SetVariableNumber (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, LONG lValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo);
+extern HRESULT WINAPI IDirectMusicScriptImpl_GetVariableNumber (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, LONG* plValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo);
+extern HRESULT WINAPI IDirectMusicScriptImpl_SetVariableObject (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, IUnknown* punkValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo);
+extern HRESULT WINAPI IDirectMusicScriptImpl_GetVariableObject (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, REFIID riid, LPVOID* ppv, DMUS_SCRIPT_ERRORINFO* pErrorInfo);
+extern HRESULT WINAPI IDirectMusicScriptImpl_EnumRoutine (LPDIRECTMUSICSCRIPT iface, DWORD dwIndex, WCHAR* pwszName);
+extern HRESULT WINAPI IDirectMusicScriptImpl_EnumVariable (LPDIRECTMUSICSCRIPT iface, DWORD dwIndex, WCHAR* pwszName);
+
+/*****************************************************************************
+ * IDirectMusicContainerImpl implementation structure
+ */
+struct IDirectMusicContainerImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicContainer);
+ DWORD ref;
+
+ /* IDirectMusicContainerImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicContainerImpl_QueryInterface (LPDIRECTMUSICCONTAINER iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicContainerImpl_AddRef (LPDIRECTMUSICCONTAINER iface);
+extern ULONG WINAPI IDirectMusicContainerImpl_Release (LPDIRECTMUSICCONTAINER iface);
+/* IDirectMusicContainer: */
+extern HRESULT WINAPI IDirectMusicContainerImpl_EnumObject (LPDIRECTMUSICCONTAINER iface, REFGUID rguidClass, DWORD dwIndex, LPDMUS_OBJECTDESC pDesc, WCHAR* pwszAlias);
+
+/*****************************************************************************
+ * IDirectMusicSongImpl implementation structure
+ */
+struct IDirectMusicSongImpl
+{
+ /* IUnknown fields */
+ ICOM_VFIELD(IDirectMusicSong);
+ DWORD ref;
+
+ /* IDirectMusicSongImpl fields */
+};
+
+/* IUnknown: */
+extern HRESULT WINAPI IDirectMusicSongImpl_QueryInterface (LPDIRECTMUSICSONG iface, REFIID riid, LPVOID *ppobj);
+extern ULONG WINAPI IDirectMusicSongImpl_AddRef (LPDIRECTMUSICSONG iface);
+extern ULONG WINAPI IDirectMusicSongImpll_Release (LPDIRECTMUSICSONG iface);
+/* IDirectMusicContainer: */
+extern HRESULT WINAPI IDirectMusicSongImpl_Compose (LPDIRECTMUSICSONG iface);
+extern HRESULT WINAPI IDirectMusicSongImpl_GetParam (LPDIRECTMUSICSONG iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam);
+extern HRESULT WINAPI IDirectMusicSongImpl_GetSegment (LPDIRECTMUSICSONG iface, WCHAR* pwzName, IDirectMusicSegment** ppSegment);
+extern HRESULT WINAPI IDirectMusicSongImpl_GetAudioPathConfig (LPDIRECTMUSICSONG iface, IUnknown** ppAudioPathConfig);
+extern HRESULT WINAPI IDirectMusicSongImpl_Download (LPDIRECTMUSICSONG iface, IUnknown* pAudioPath);
+extern HRESULT WINAPI IDirectMusicSongImpl_Unload (LPDIRECTMUSICSONG iface, IUnknown* pAudioPath);
+extern HRESULT WINAPI IDirectMusicSongImpl_EnumSegment (LPDIRECTMUSICSONG iface, DWORD dwIndex, IDirectMusicSegment** ppSegment);
+
#endif /* __WINE_DMUSIC_PRIVATE_H */
diff --git a/dlls/dmusic/dmusic_segment.c b/dlls/dmusic/dmusic_segment.c
new file mode 100644
index 0000000..2e46679
--- /dev/null
+++ b/dlls/dmusic/dmusic_segment.c
@@ -0,0 +1,714 @@
+/* IDirectMusicSegment Implementation
+ * IDirectMusicSegment8 Implementation
+ * IDirectMusicSegmentState Implementation
+ * IDirectMusicSegmentState8 Implementation
+ * IDirectMusicPatternTrack Implementation
+ *
+ * Copyright (C) 2003 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "wine/debug.h"
+
+#include "dmusic_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
+
+/* IDirectMusicSegment IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicSegmentImpl_QueryInterface (LPDIRECTMUSICSEGMENT iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicSegmentImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicSegment))
+ {
+ IDirectMusicSegmentImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicSegmentImpl_AddRef (LPDIRECTMUSICSEGMENT iface)
+{
+ ICOM_THIS(IDirectMusicSegmentImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicSegmentImpl_Release (LPDIRECTMUSICSEGMENT iface)
+{
+ ICOM_THIS(IDirectMusicSegmentImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicSegment Interface follow: */
+HRESULT WINAPI IDirectMusicSegmentImpl_GetLength (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME* pmtLength)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_SetLength (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtLength)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_GetRepeats (LPDIRECTMUSICSEGMENT iface, DWORD* pdwRepeats)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_SetRepeats (LPDIRECTMUSICSEGMENT iface, DWORD dwRepeats)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_GetDefaultResolution (LPDIRECTMUSICSEGMENT iface, DWORD* pdwResolution)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_SetDefaultResolution (LPDIRECTMUSICSEGMENT iface, DWORD dwResolution)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_GetTrack (LPDIRECTMUSICSEGMENT iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack** ppTrack)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_GetTrackGroup (LPDIRECTMUSICSEGMENT iface, IDirectMusicTrack* pTrack, DWORD* pdwGroupBits)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_InsertTrack (LPDIRECTMUSICSEGMENT iface, IDirectMusicTrack* pTrack, DWORD dwGroupBits)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_RemoveTrack (LPDIRECTMUSICSEGMENT iface, IDirectMusicTrack* pTrack)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_InitPlay (LPDIRECTMUSICSEGMENT iface, IDirectMusicSegmentState** ppSegState, IDirectMusicPerformance* pPerformance, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_GetGraph (LPDIRECTMUSICSEGMENT iface, IDirectMusicGraph** ppGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_SetGraph (LPDIRECTMUSICSEGMENT iface, IDirectMusicGraph* pGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_AddNotificationType (LPDIRECTMUSICSEGMENT iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_RemoveNotificationType (LPDIRECTMUSICSEGMENT iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_GetParam (LPDIRECTMUSICSEGMENT iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_SetParam (LPDIRECTMUSICSEGMENT iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_Clone (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_SetStartPoint (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtStart)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_GetStartPoint (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME* pmtStart)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_SetLoopPoints (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_GetLoopPoints (LPDIRECTMUSICSEGMENT iface, MUSIC_TIME* pmtStart, MUSIC_TIME* pmtEnd)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentImpl_SetPChannelsUsed (LPDIRECTMUSICSEGMENT iface, DWORD dwNumPChannels, DWORD* paPChannels)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicSegment) DirectMusicSegment_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicSegmentImpl_QueryInterface,
+ IDirectMusicSegmentImpl_AddRef,
+ IDirectMusicSegmentImpl_Release,
+ IDirectMusicSegmentImpl_GetLength,
+ IDirectMusicSegmentImpl_SetLength,
+ IDirectMusicSegmentImpl_GetRepeats,
+ IDirectMusicSegmentImpl_SetRepeats,
+ IDirectMusicSegmentImpl_GetDefaultResolution,
+ IDirectMusicSegmentImpl_SetDefaultResolution,
+ IDirectMusicSegmentImpl_GetTrack,
+ IDirectMusicSegmentImpl_GetTrackGroup,
+ IDirectMusicSegmentImpl_InsertTrack,
+ IDirectMusicSegmentImpl_RemoveTrack,
+ IDirectMusicSegmentImpl_InitPlay,
+ IDirectMusicSegmentImpl_GetGraph,
+ IDirectMusicSegmentImpl_SetGraph,
+ IDirectMusicSegmentImpl_AddNotificationType,
+ IDirectMusicSegmentImpl_RemoveNotificationType,
+ IDirectMusicSegmentImpl_GetParam,
+ IDirectMusicSegmentImpl_SetParam,
+ IDirectMusicSegmentImpl_Clone,
+ IDirectMusicSegmentImpl_SetStartPoint,
+ IDirectMusicSegmentImpl_GetStartPoint,
+ IDirectMusicSegmentImpl_SetLoopPoints,
+ IDirectMusicSegmentImpl_GetLoopPoints,
+ IDirectMusicSegmentImpl_SetPChannelsUsed
+};
+
+
+/* IDirectMusicSegment8 IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicSegment8Impl_QueryInterface (LPDIRECTMUSICSEGMENT8 iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicSegment8Impl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicSegment8))
+ {
+ IDirectMusicSegment8Impl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicSegment8Impl_AddRef (LPDIRECTMUSICSEGMENT8 iface)
+{
+ ICOM_THIS(IDirectMusicSegment8Impl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicSegment8Impl_Release (LPDIRECTMUSICSEGMENT8 iface)
+{
+ ICOM_THIS(IDirectMusicSegment8Impl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicSegment Interface part follow: */
+HRESULT WINAPI IDirectMusicSegment8Impl_GetLength (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtLength)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_SetLength (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtLength)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_GetRepeats (LPDIRECTMUSICSEGMENT8 iface, DWORD* pdwRepeats)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_SetRepeats (LPDIRECTMUSICSEGMENT8 iface, DWORD dwRepeats)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_GetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface, DWORD* pdwResolution)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_SetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface, DWORD dwResolution)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_GetTrack (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack** ppTrack)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_GetTrackGroup (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack, DWORD* pdwGroupBits)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_InsertTrack (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack, DWORD dwGroupBits)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_RemoveTrack (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_InitPlay (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicSegmentState** ppSegState, IDirectMusicPerformance* pPerformance, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_GetGraph (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicGraph** ppGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_SetGraph (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicGraph* pGraph)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_AddNotificationType (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_RemoveNotificationType (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidNotificationType)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_GetParam (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_SetParam (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_Clone (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_SetStartPoint (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_GetStartPoint (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtStart)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_SetLoopPoints (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_GetLoopPoints (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtStart, MUSIC_TIME* pmtEnd)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_SetPChannelsUsed (LPDIRECTMUSICSEGMENT8 iface, DWORD dwNumPChannels, DWORD* paPChannels)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+/* IDirectMusicSegment Interface part follow: */
+HRESULT WINAPI IDirectMusicSegment8Impl_SetTrackConfig (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_GetAudioPathConfig (LPDIRECTMUSICSEGMENT8 iface, IUnknown** ppAudioPathConfig)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_Compose (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtTime, IDirectMusicSegment* pFromSegment, IDirectMusicSegment* pToSegment, IDirectMusicSegment** ppComposedSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_Download (LPDIRECTMUSICSEGMENT8 iface, IUnknown *pAudioPath)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegment8Impl_Unload (LPDIRECTMUSICSEGMENT8 iface, IUnknown *pAudioPath)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicSegment8) DirectMusicSegment8_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicSegment8Impl_QueryInterface,
+ IDirectMusicSegment8Impl_AddRef,
+ IDirectMusicSegment8Impl_Release,
+ IDirectMusicSegment8Impl_GetLength,
+ IDirectMusicSegment8Impl_SetLength,
+ IDirectMusicSegment8Impl_GetRepeats,
+ IDirectMusicSegment8Impl_SetRepeats,
+ IDirectMusicSegment8Impl_GetDefaultResolution,
+ IDirectMusicSegment8Impl_SetDefaultResolution,
+ IDirectMusicSegment8Impl_GetTrack,
+ IDirectMusicSegment8Impl_GetTrackGroup,
+ IDirectMusicSegment8Impl_InsertTrack,
+ IDirectMusicSegment8Impl_RemoveTrack,
+ IDirectMusicSegment8Impl_InitPlay,
+ IDirectMusicSegment8Impl_GetGraph,
+ IDirectMusicSegment8Impl_SetGraph,
+ IDirectMusicSegment8Impl_AddNotificationType,
+ IDirectMusicSegment8Impl_RemoveNotificationType,
+ IDirectMusicSegment8Impl_GetParam,
+ IDirectMusicSegment8Impl_SetParam,
+ IDirectMusicSegment8Impl_Clone,
+ IDirectMusicSegment8Impl_SetStartPoint,
+ IDirectMusicSegment8Impl_GetStartPoint,
+ IDirectMusicSegment8Impl_SetLoopPoints,
+ IDirectMusicSegment8Impl_GetLoopPoints,
+ IDirectMusicSegment8Impl_SetPChannelsUsed,
+ IDirectMusicSegment8Impl_SetTrackConfig,
+ IDirectMusicSegment8Impl_GetAudioPathConfig,
+ IDirectMusicSegment8Impl_Compose,
+ IDirectMusicSegment8Impl_Download,
+ IDirectMusicSegment8Impl_Unload
+};
+
+
+/* IDirectMusicSegmentState IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicSegmentStateImpl_QueryInterface (LPDIRECTMUSICSEGMENTSTATE iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicSegmentStateImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicSegmentState))
+ {
+ IDirectMusicSegmentStateImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicSegmentStateImpl_AddRef (LPDIRECTMUSICSEGMENTSTATE iface)
+{
+ ICOM_THIS(IDirectMusicSegmentStateImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicSegmentStateImpl_Release (LPDIRECTMUSICSEGMENTSTATE iface)
+{
+ ICOM_THIS(IDirectMusicSegmentStateImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicSegmentState Interface follow: */
+HRESULT WINAPI IDirectMusicSegmentStateImpl_GetRepeats (LPDIRECTMUSICSEGMENTSTATE iface, DWORD* pdwRepeats)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentStateImpl_GetSegment (LPDIRECTMUSICSEGMENTSTATE iface, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentStateImpl_GetStartTime (LPDIRECTMUSICSEGMENTSTATE iface, MUSIC_TIME* pmtStart)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentStateImpl_GetSeek (LPDIRECTMUSICSEGMENTSTATE iface, MUSIC_TIME* pmtSeek)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentStateImpl_GetStartPoint (LPDIRECTMUSICSEGMENTSTATE iface, MUSIC_TIME* pmtStart)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicSegmentState) DirectMusicSegmentState_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicSegmentStateImpl_QueryInterface,
+ IDirectMusicSegmentStateImpl_AddRef,
+ IDirectMusicSegmentStateImpl_Release,
+ IDirectMusicSegmentStateImpl_GetRepeats,
+ IDirectMusicSegmentStateImpl_GetSegment,
+ IDirectMusicSegmentStateImpl_GetStartTime,
+ IDirectMusicSegmentStateImpl_GetSeek,
+ IDirectMusicSegmentStateImpl_GetStartPoint
+};
+
+/* IDirectMusicSegmentState8 IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicSegmentState8Impl_QueryInterface (LPDIRECTMUSICSEGMENTSTATE8 iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicSegmentState8))
+ {
+ IDirectMusicSegmentState8Impl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicSegmentState8Impl_AddRef (LPDIRECTMUSICSEGMENTSTATE8 iface)
+{
+ ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicSegmentState8Impl_Release (LPDIRECTMUSICSEGMENTSTATE8 iface)
+{
+ ICOM_THIS(IDirectMusicSegmentState8Impl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicSegmentState Interface part follow: */
+HRESULT WINAPI IDirectMusicSegmentState8Impl_GetRepeats (LPDIRECTMUSICSEGMENTSTATE8 iface, DWORD* pdwRepeats)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentState8Impl_GetSegment (LPDIRECTMUSICSEGMENTSTATE8 iface, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentState8Impl_GetStartTime (LPDIRECTMUSICSEGMENTSTATE8 iface, MUSIC_TIME* pmtStart)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentState8Impl_GetSeek (LPDIRECTMUSICSEGMENTSTATE8 iface, MUSIC_TIME* pmtSeek)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentState8Impl_GetStartPoint (LPDIRECTMUSICSEGMENTSTATE8 iface, MUSIC_TIME* pmtStart)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+/* IDirectMusicSegmentState8 Interface part follow: */
+HRESULT WINAPI IDirectMusicSegmentState8Impl_SetTrackConfig (LPDIRECTMUSICSEGMENTSTATE8 iface, REFGUID rguidTrackClassID, DWORD dwGroupBits, DWORD dwIndex, DWORD dwFlagsOn, DWORD dwFlagsOff)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSegmentState8Impl_GetObjectInPath (LPDIRECTMUSICSEGMENTSTATE8 iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void** ppObject)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicSegmentState8) DirectMusicSegmentState8_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicSegmentState8Impl_QueryInterface,
+ IDirectMusicSegmentState8Impl_AddRef,
+ IDirectMusicSegmentState8Impl_Release,
+ IDirectMusicSegmentState8Impl_GetRepeats,
+ IDirectMusicSegmentState8Impl_GetSegment,
+ IDirectMusicSegmentState8Impl_GetStartTime,
+ IDirectMusicSegmentState8Impl_GetSeek,
+ IDirectMusicSegmentState8Impl_GetStartPoint,
+ IDirectMusicSegmentState8Impl_SetTrackConfig,
+ IDirectMusicSegmentState8Impl_GetObjectInPath
+};
+
+
+/* IDirectMusicPatternTrack IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicPatternTrackImpl_QueryInterface (LPDIRECTMUSICPATTERNTRACK iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicPatternTrackImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicPatternTrack))
+ {
+ IDirectMusicPatternTrackImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicPatternTrackImpl_AddRef (LPDIRECTMUSICPATTERNTRACK iface)
+{
+ ICOM_THIS(IDirectMusicPatternTrackImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicPatternTrackImpl_Release (LPDIRECTMUSICPATTERNTRACK iface)
+{
+ ICOM_THIS(IDirectMusicPatternTrackImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicPatternTrack Interface follow: */
+HRESULT WINAPI IDirectMusicPatternTrackImpl_CreateSegment (LPDIRECTMUSICPATTERNTRACK iface, IDirectMusicStyle* pStyle, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPatternTrackImpl_SetVariation (LPDIRECTMUSICPATTERNTRACK iface, IDirectMusicSegmentState* pSegState, DWORD dwVariationFlags, DWORD dwPart)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicPatternTrackImpl_SetPatternByName (LPDIRECTMUSICPATTERNTRACK iface, IDirectMusicSegmentState* pSegState, WCHAR* wszName, IDirectMusicStyle* pStyle, DWORD dwPatternType, DWORD* pdwLength)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicPatternTrack) DirectMusicPatternTrack_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicPatternTrackImpl_QueryInterface,
+ IDirectMusicPatternTrackImpl_AddRef,
+ IDirectMusicPatternTrackImpl_Release,
+ IDirectMusicPatternTrackImpl_CreateSegment,
+ IDirectMusicPatternTrackImpl_SetVariation,
+ IDirectMusicPatternTrackImpl_SetPatternByName
+};
diff --git a/dlls/dmusic/dmusic_style.c b/dlls/dmusic/dmusic_style.c
new file mode 100644
index 0000000..8b9e535
--- /dev/null
+++ b/dlls/dmusic/dmusic_style.c
@@ -0,0 +1,278 @@
+/* IDirectMusicStyle Implementation
+ * IDirectMusicStyle8 Implementation
+ *
+ * Copyright (C) 2003 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "wine/debug.h"
+
+#include "dmusic_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
+
+/* IDirectMusicStyle IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicStyleImpl_QueryInterface (LPDIRECTMUSICSTYLE iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicStyleImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicStyle))
+ {
+ IDirectMusicStyleImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicStyleImpl_AddRef (LPDIRECTMUSICSTYLE iface)
+{
+ ICOM_THIS(IDirectMusicStyleImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicStyleImpl_Release (LPDIRECTMUSICSTYLE iface)
+{
+ ICOM_THIS(IDirectMusicStyleImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicStyle Interface follow: */
+HRESULT WINAPI IDirectMusicStyleImpl_GetBand (LPDIRECTMUSICSTYLE iface, WCHAR* pwszName, IDirectMusicBand** ppBand)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_EnumBand (LPDIRECTMUSICSTYLE iface, DWORD dwIndex, WCHAR* pwszName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_GetDefaultBand (LPDIRECTMUSICSTYLE iface, IDirectMusicBand** ppBand)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_EnumMotif (LPDIRECTMUSICSTYLE iface, DWORD dwIndex, WCHAR* pwszName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_GetMotif (LPDIRECTMUSICSTYLE iface, WCHAR* pwszName, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_GetDefaultChordMap (LPDIRECTMUSICSTYLE iface, IDirectMusicChordMap** ppChordMap)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_EnumChordMap (LPDIRECTMUSICSTYLE iface, DWORD dwIndex, WCHAR* pwszName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_GetChordMap (LPDIRECTMUSICSTYLE iface, WCHAR* pwszName, IDirectMusicChordMap** ppChordMap)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_GetTimeSignature (LPDIRECTMUSICSTYLE iface, DMUS_TIMESIGNATURE* pTimeSig)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_GetEmbellishmentLength (LPDIRECTMUSICSTYLE iface, DWORD dwType, DWORD dwLevel, DWORD* pdwMin, DWORD* pdwMax)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyleImpl_GetTempo (LPDIRECTMUSICSTYLE iface, double* pTempo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicStyle) DirectMusicStyle_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicStyleImpl_QueryInterface,
+ IDirectMusicStyleImpl_AddRef,
+ IDirectMusicStyleImpl_Release,
+ IDirectMusicStyleImpl_GetBand,
+ IDirectMusicStyleImpl_EnumBand,
+ IDirectMusicStyleImpl_GetDefaultBand,
+ IDirectMusicStyleImpl_EnumMotif,
+ IDirectMusicStyleImpl_GetMotif,
+ IDirectMusicStyleImpl_GetDefaultChordMap,
+ IDirectMusicStyleImpl_EnumChordMap,
+ IDirectMusicStyleImpl_GetChordMap,
+ IDirectMusicStyleImpl_GetTimeSignature,
+ IDirectMusicStyleImpl_GetEmbellishmentLength,
+ IDirectMusicStyleImpl_GetTempo
+};
+
+
+/* IDirectMusicStyle8 IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicStyle8Impl_QueryInterface (LPDIRECTMUSICSTYLE8 iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicStyle8Impl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicStyle8))
+ {
+ IDirectMusicStyle8Impl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicStyle8Impl_AddRef (LPDIRECTMUSICSTYLE8 iface)
+{
+ ICOM_THIS(IDirectMusicStyle8Impl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicStyle8Impl_Release (LPDIRECTMUSICSTYLE8 iface)
+{
+ ICOM_THIS(IDirectMusicStyle8Impl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicStyle Interface part follow: */
+HRESULT WINAPI IDirectMusicStyle8Impl_GetBand (LPDIRECTMUSICSTYLE8 iface, WCHAR* pwszName, IDirectMusicBand** ppBand)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_EnumBand (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, WCHAR* pwszName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_GetDefaultBand (LPDIRECTMUSICSTYLE8 iface, IDirectMusicBand** ppBand)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_EnumMotif (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, WCHAR* pwszName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_GetMotif (LPDIRECTMUSICSTYLE8 iface, WCHAR* pwszName, IDirectMusicSegment** ppSegment)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_GetDefaultChordMap (LPDIRECTMUSICSTYLE8 iface, IDirectMusicChordMap** ppChordMap)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_EnumChordMap (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, WCHAR* pwszName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_GetChordMap (LPDIRECTMUSICSTYLE8 iface, WCHAR* pwszName, IDirectMusicChordMap** ppChordMap)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_GetTimeSignature (LPDIRECTMUSICSTYLE8 iface, DMUS_TIMESIGNATURE* pTimeSig)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_GetEmbellishmentLength (LPDIRECTMUSICSTYLE8 iface, DWORD dwType, DWORD dwLevel, DWORD* pdwMin, DWORD* pdwMax)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicStyle8Impl_GetTempo (LPDIRECTMUSICSTYLE8 iface, double* pTempo)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+/* IDirectMusicStyle8 Interface part follow: */
+HRESULT WINAPI IDirectMusicStyle8ImplEnumPattern (LPDIRECTMUSICSTYLE8 iface, DWORD dwIndex, DWORD dwPatternType, WCHAR* pwszName)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicStyle8) DirectMusicStyle8_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicStyle8Impl_QueryInterface,
+ IDirectMusicStyle8Impl_AddRef,
+ IDirectMusicStyle8Impl_Release,
+ IDirectMusicStyle8Impl_GetBand,
+ IDirectMusicStyle8Impl_EnumBand,
+ IDirectMusicStyle8Impl_GetDefaultBand,
+ IDirectMusicStyle8Impl_EnumMotif,
+ IDirectMusicStyle8Impl_GetMotif,
+ IDirectMusicStyle8Impl_GetDefaultChordMap,
+ IDirectMusicStyle8Impl_EnumChordMap,
+ IDirectMusicStyle8Impl_GetChordMap,
+ IDirectMusicStyle8Impl_GetTimeSignature,
+ IDirectMusicStyle8Impl_GetEmbellishmentLength,
+ IDirectMusicStyle8Impl_GetTempo,
+ IDirectMusicStyle8ImplEnumPattern
+};
diff --git a/dlls/dmusic/dmusic_synth.c b/dlls/dmusic/dmusic_synth.c
new file mode 100644
index 0000000..f1a4dbb
--- /dev/null
+++ b/dlls/dmusic/dmusic_synth.c
@@ -0,0 +1,491 @@
+/* IDirectMusicSynth Implementation
+ * IDirectMusicSynth8 Implementation
+ * IDirectMusicSynthSink Implementation
+ *
+ * Copyright (C) 2003 Rok Mandeljc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "wine/debug.h"
+
+#include "dmusic_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
+
+/* IDirectMusicSynth IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicSynthImpl_QueryInterface (LPDIRECTMUSICSYNTH iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicSynthImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicSynth))
+ {
+ IDirectMusicSynthImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicSynthImpl_AddRef (LPDIRECTMUSICSYNTH iface)
+{
+ ICOM_THIS(IDirectMusicSynthImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicSynthImpl_Release (LPDIRECTMUSICSYNTH iface)
+{
+ ICOM_THIS(IDirectMusicSynthImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicSynth Interface follow: */
+HRESULT WINAPI IDirectMusicSynthImpl_Open (LPDIRECTMUSICSYNTH iface, LPDMUS_PORTPARAMS pPortParams)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_Close (LPDIRECTMUSICSYNTH iface)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_SetNumChannelGroups (LPDIRECTMUSICSYNTH iface, DWORD dwGroups)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_Download (LPDIRECTMUSICSYNTH iface, LPHANDLE phDownload, LPVOID pvData, LPBOOL pbFree)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_Unload (LPDIRECTMUSICSYNTH iface, HANDLE hDownload, HRESULT (CALLBACK* lpFreeHandle)(HANDLE,HANDLE), HANDLE hUserData)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_PlayBuffer (LPDIRECTMUSICSYNTH iface, REFERENCE_TIME rt, LPBYTE pbBuffer, DWORD cbBuffer)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_GetRunningStats (LPDIRECTMUSICSYNTH iface, LPDMUS_SYNTHSTATS pStats)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_GetPortCaps (LPDIRECTMUSICSYNTH iface, LPDMUS_PORTCAPS pCaps)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_SetMasterClock (LPDIRECTMUSICSYNTH iface, IReferenceClock* pClock)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_GetLatencyClock (LPDIRECTMUSICSYNTH iface, IReferenceClock** ppClock)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_Activate (LPDIRECTMUSICSYNTH iface, BOOL fEnable)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_SetSynthSink (LPDIRECTMUSICSYNTH iface, IDirectMusicSynthSink* pSynthSink)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_Render (LPDIRECTMUSICSYNTH iface, short* pBuffer, DWORD dwLength, LONGLONG llPosition)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_SetChannelPriority (LPDIRECTMUSICSYNTH iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_GetChannelPriority (LPDIRECTMUSICSYNTH iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_GetFormat (LPDIRECTMUSICSYNTH iface, LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSiz)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynthImpl_GetAppend (LPDIRECTMUSICSYNTH iface, DWORD* pdwAppend)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicSynth) DirectMusicSynth_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicSynthImpl_QueryInterface,
+ IDirectMusicSynthImpl_AddRef,
+ IDirectMusicSynthImpl_Release,
+ IDirectMusicSynthImpl_Open,
+ IDirectMusicSynthImpl_Close,
+ IDirectMusicSynthImpl_SetNumChannelGroups,
+ IDirectMusicSynthImpl_Download,
+ IDirectMusicSynthImpl_Unload,
+ IDirectMusicSynthImpl_PlayBuffer,
+ IDirectMusicSynthImpl_GetRunningStats,
+ IDirectMusicSynthImpl_GetPortCaps,
+ IDirectMusicSynthImpl_SetMasterClock,
+ IDirectMusicSynthImpl_GetLatencyClock,
+ IDirectMusicSynthImpl_Activate,
+ IDirectMusicSynthImpl_SetSynthSink,
+ IDirectMusicSynthImpl_Render,
+ IDirectMusicSynthImpl_SetChannelPriority,
+ IDirectMusicSynthImpl_GetChannelPriority,
+ IDirectMusicSynthImpl_GetFormat,
+ IDirectMusicSynthImpl_GetAppend
+};
+
+
+/* IDirectMusicSynth8 IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicSynth8Impl_QueryInterface (LPDIRECTMUSICSYNTH8 iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicSynth8Impl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicSynth8))
+ {
+ IDirectMusicSynth8Impl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicSynth8Impl_AddRef (LPDIRECTMUSICSYNTH8 iface)
+{
+ ICOM_THIS(IDirectMusicSynth8Impl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicSynth8Impl_Release (LPDIRECTMUSICSYNTH8 iface)
+{
+ ICOM_THIS(IDirectMusicSynth8Impl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicSynth Interface parts follow: */
+HRESULT WINAPI IDirectMusicSynth8Impl_Open (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTPARAMS pPortParams)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_Close (LPDIRECTMUSICSYNTH8 iface)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_SetNumChannelGroups (LPDIRECTMUSICSYNTH8 iface, DWORD dwGroups)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_Download (LPDIRECTMUSICSYNTH8 iface, LPHANDLE phDownload, LPVOID pvData, LPBOOL pbFree)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_Unload (LPDIRECTMUSICSYNTH8 iface, HANDLE hDownload, HRESULT (CALLBACK* lpFreeHandle)(HANDLE,HANDLE), HANDLE hUserData)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_PlayBuffer (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, LPBYTE pbBuffer, DWORD cbBuffer)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_GetRunningStats (LPDIRECTMUSICSYNTH8 iface, LPDMUS_SYNTHSTATS pStats)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_GetPortCaps (LPDIRECTMUSICSYNTH8 iface, LPDMUS_PORTCAPS pCaps)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_SetMasterClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock* pClock)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_GetLatencyClock (LPDIRECTMUSICSYNTH8 iface, IReferenceClock** ppClock)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_Activate (LPDIRECTMUSICSYNTH8 iface, BOOL fEnable)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_SetSynthSink (LPDIRECTMUSICSYNTH8 iface, IDirectMusicSynthSink* pSynthSink)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_Render (LPDIRECTMUSICSYNTH8 iface, short* pBuffer, DWORD dwLength, LONGLONG llPosition)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_SetChannelPriority (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_GetChannelPriority (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_GetFormat (LPDIRECTMUSICSYNTH8 iface, LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSiz)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_GetAppend (LPDIRECTMUSICSYNTH8 iface, DWORD* pdwAppend)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+/* IDirectMusicSynth8 Interface parts follow: */
+HRESULT WINAPI IDirectMusicSynth8Impl_PlayVoice (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, DWORD dwVoiceId, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwDLId, long prPitch, long vrVolume, SAMPLE_TIME stVoiceStart, SAMPLE_TIME stLoopStart, SAMPLE_TIME stLoopEnd)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_StopVoice (LPDIRECTMUSICSYNTH8 iface, REFERENCE_TIME rt, DWORD dwVoiceId)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_GetVoiceState (LPDIRECTMUSICSYNTH8 iface, DWORD dwVoice[], DWORD cbVoice, DMUS_VOICE_STATE dwVoiceState[])
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_Refresh (LPDIRECTMUSICSYNTH8 iface, DWORD dwDownloadID, DWORD dwFlags)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSynth8Impl_AssignChannelToBuses (LPDIRECTMUSICSYNTH8 iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwBuses, DWORD cBuses)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicSynth8) DirectMusicSynth8_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicSynth8Impl_QueryInterface,
+ IDirectMusicSynth8Impl_AddRef,
+ IDirectMusicSynth8Impl_Release,
+ IDirectMusicSynth8Impl_Open,
+ IDirectMusicSynth8Impl_Close,
+ IDirectMusicSynth8Impl_SetNumChannelGroups,
+ IDirectMusicSynth8Impl_Download,
+ IDirectMusicSynth8Impl_Unload,
+ IDirectMusicSynth8Impl_PlayBuffer,
+ IDirectMusicSynth8Impl_GetRunningStats,
+ IDirectMusicSynth8Impl_GetPortCaps,
+ IDirectMusicSynth8Impl_SetMasterClock,
+ IDirectMusicSynth8Impl_GetLatencyClock,
+ IDirectMusicSynth8Impl_Activate,
+ IDirectMusicSynth8Impl_SetSynthSink,
+ IDirectMusicSynth8Impl_Render,
+ IDirectMusicSynth8Impl_SetChannelPriority,
+ IDirectMusicSynth8Impl_GetChannelPriority,
+ IDirectMusicSynth8Impl_GetFormat,
+ IDirectMusicSynth8Impl_GetAppend,
+ IDirectMusicSynth8Impl_PlayVoice,
+ IDirectMusicSynth8Impl_StopVoice,
+ IDirectMusicSynth8Impl_GetVoiceState,
+ IDirectMusicSynth8Impl_Refresh,
+ IDirectMusicSynth8Impl_AssignChannelToBuses
+};
+
+
+/* IDirectMusicSynthSink IUnknown parts follow: */
+HRESULT WINAPI IDirectMusicSynthSinkImpl_QueryInterface (LPDIRECTMUSICSYNTHSINK iface, REFIID riid, LPVOID *ppobj)
+{
+ ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicSynthSink))
+ {
+ IDirectMusicSynthSinkImpl_AddRef(iface);
+ *ppobj = This;
+ return DS_OK;
+ }
+ WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+ return E_NOINTERFACE;
+}
+
+ULONG WINAPI IDirectMusicSynthSinkImpl_AddRef (LPDIRECTMUSICSYNTHSINK iface)
+{
+ ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+ TRACE("(%p) : AddRef from %ld\n", This, This->ref);
+ return ++(This->ref);
+}
+
+ULONG WINAPI IDirectMusicSynthSinkImpl_Release (LPDIRECTMUSICSYNTHSINK iface)
+{
+ ICOM_THIS(IDirectMusicSynthSinkImpl,iface);
+ ULONG ref = --This->ref;
+ TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
+ if (ref == 0)
+ {
+ HeapFree(GetProcessHeap(), 0, This);
+ }
+ return ref;
+}
+
+/* IDirectMusicSynth Interface follow: */
+HRESULT WINAPI IDirectMusicSinkSynthImpl_Init (LPDIRECTMUSICSYNTHSINK iface, IDirectMusicSynth* pSynth)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSinkSynthImpl_SetMasterClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock* pClock)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSinkSynthImpl_GetLatencyClock (LPDIRECTMUSICSYNTHSINK iface, IReferenceClock** ppClock)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSinkSynthImpl_Activate (LPDIRECTMUSICSYNTHSINK iface, BOOL fEnable)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSinkSynthImpl_SampleToRefTime (LPDIRECTMUSICSYNTHSINK iface, LONGLONG llSampleTime, REFERENCE_TIME* prfTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSinkSynthImpl_RefTimeToSample (LPDIRECTMUSICSYNTHSINK iface, REFERENCE_TIME rfTime, LONGLONG* pllSampleTime)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSinkSynthImpl_SetDirectSound (LPDIRECTMUSICSYNTHSINK iface, LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+HRESULT WINAPI IDirectMusicSinkSynthImpl_GetDesiredBufferSize (LPDIRECTMUSICSYNTHSINK iface, LPDWORD pdwBufferSizeInSamples)
+{
+ FIXME("stub\n");
+ return DS_OK;
+}
+
+ICOM_VTABLE(IDirectMusicSynthSink) DirectMusicSynthSink_Vtbl =
+{
+ ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+ IDirectMusicSynthSinkImpl_QueryInterface,
+ IDirectMusicSynthSinkImpl_AddRef,
+ IDirectMusicSynthSinkImpl_Release,
+ IDirectMusicSinkSynthImpl_Init,
+ IDirectMusicSinkSynthImpl_SetMasterClock,
+ IDirectMusicSinkSynthImpl_GetLatencyClock,
+ IDirectMusicSinkSynthImpl_Activate,
+ IDirectMusicSinkSynthImpl_SampleToRefTime,
+ IDirectMusicSinkSynthImpl_RefTimeToSample,
+ IDirectMusicSinkSynthImpl_SetDirectSound,
+ IDirectMusicSinkSynthImpl_GetDesiredBufferSize
+};
diff --git a/dlls/dmusic/dmusic_thru.c b/dlls/dmusic/dmusic_thru.c
deleted file mode 100644
index 26711b5..0000000
--- a/dlls/dmusic/dmusic_thru.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* IDirectMusicThru Implementation
- *
- * Copyright (C) 2003 Rok Mandeljc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-
-#include "dmusic_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
-
-/* IDirectMusicThru IUnknown parts follow: */
-HRESULT WINAPI IDirectMusicThruImpl_QueryInterface (LPDIRECTMUSICTHRU iface, REFIID riid, LPVOID *ppobj)
-{
- ICOM_THIS(IDirectMusicThruImpl,iface);
-
- if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicThru))
- {
- IDirectMusicThruImpl_AddRef(iface);
- *ppobj = This;
- return DS_OK;
- }
- WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
- return E_NOINTERFACE;
-}
-
-ULONG WINAPI IDirectMusicThruImpl_AddRef (LPDIRECTMUSICTHRU iface)
-{
- ICOM_THIS(IDirectMusicThruImpl,iface);
- TRACE("(%p) : AddRef from %ld\n", This, This->ref);
- return ++(This->ref);
-}
-
-ULONG WINAPI IDirectMusicThruImpl_Release (LPDIRECTMUSICTHRU iface)
-{
- ICOM_THIS(IDirectMusicThruImpl,iface);
- ULONG ref = --This->ref;
- TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
- if (ref == 0)
- {
- HeapFree(GetProcessHeap(), 0, This);
- }
- return ref;
-}
-
-/* IDirectMusicThru Interface follow: */
-HRESULT WINAPI IDirectMusicThruImpl_ThruChannel (LPDIRECTMUSICTHRU iface, DWORD dwSourceChannelGroup, DWORD dwSourceChannel, DWORD dwDestinationChannelGroup, DWORD dwDestinationChannel, LPDIRECTMUSICPORT pDestinationPort)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-ICOM_VTABLE(IDirectMusicThru) DirectMusicThru_Vtbl =
-{
- ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
- IDirectMusicThruImpl_QueryInterface,
- IDirectMusicThruImpl_AddRef,
- IDirectMusicThruImpl_Release,
- IDirectMusicThruImpl_ThruChannel
-};
diff --git a/dlls/dmusic/reference_clock.c b/dlls/dmusic/reference_clock.c
deleted file mode 100644
index 9f4678e..0000000
--- a/dlls/dmusic/reference_clock.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * IReferenceClock Implementation
- *
- * Copyright (C) 2003 Rok Mandeljc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include "windef.h"
-#include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "wine/debug.h"
-
-#include "dmusic_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
-
-/* IReferenceClock IUnknown parts follow: */
-HRESULT WINAPI IReferenceClockImpl_QueryInterface (LPREFERENCECLOCK iface, REFIID riid, LPVOID *ppobj)
-{
- ICOM_THIS(IReferenceClockImpl,iface);
-
- if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IReferenceClock))
- {
- IReferenceClockImpl_AddRef(iface);
- *ppobj = This;
- return DS_OK;
- }
- WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
- return E_NOINTERFACE;
-}
-
-ULONG WINAPI IReferenceClockImpl_AddRef (LPREFERENCECLOCK iface)
-{
- ICOM_THIS(IReferenceClockImpl,iface);
- TRACE("(%p) : AddRef from %ld\n", This, This->ref);
- return ++(This->ref);
-}
-
-ULONG WINAPI IReferenceClockImpl_Release (LPREFERENCECLOCK iface)
-{
- ICOM_THIS(IReferenceClockImpl,iface);
- ULONG ref = --This->ref;
- TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
- if (ref == 0)
- {
- HeapFree(GetProcessHeap(), 0, This);
- }
- return ref;
-}
-
-/* IReferenceClock Interface follow: */
-HRESULT WINAPI IReferenceClockImpl_GetTime (LPREFERENCECLOCK iface, REFERENCE_TIME* pTime)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IReferenceClockImpl_AdviseTime (LPREFERENCECLOCK iface, REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HANDLE hEvent, DWORD* pdwAdviseCookie)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IReferenceClockImpl_AdvisePeriodic (LPREFERENCECLOCK iface, REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD* pdwAdviseCookie)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-HRESULT WINAPI IReferenceClockImpl_Unadvise (LPREFERENCECLOCK iface, DWORD dwAdviseCookie)
-{
- FIXME("stub\n");
- return DS_OK;
-}
-
-ICOM_VTABLE(IReferenceClock) ReferenceClock_Vtbl =
-{
- ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
- IReferenceClockImpl_QueryInterface,
- IReferenceClockImpl_AddRef,
- IReferenceClockImpl_Release,
- IReferenceClockImpl_GetTime,
- IReferenceClockImpl_AdviseTime,
- IReferenceClockImpl_AdvisePeriodic,
- IReferenceClockImpl_Unadvise
-};