blob: 2374af24a94d32c26c4225b950cb711b5e64d681 [file] [log] [blame]
Rok Mandeljc473c5652003-07-21 22:10:14 +00001/* DirectMusicInteractiveEngine Private Include
2 *
Rok Mandeljc0382ea12004-01-20 00:21:40 +00003 * Copyright (C) 2003-2004 Rok Mandeljc
Rok Mandeljc473c5652003-07-21 22:10:14 +00004 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Library General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 */
19
20#ifndef __WINE_DMIME_PRIVATE_H
21#define __WINE_DMIME_PRIVATE_H
22
Rok Mandeljcb26d65b2004-02-25 01:30:03 +000023#include <stdio.h>
Alexandre Julliarde37c6e12003-09-05 23:08:26 +000024#include <stdarg.h>
Rok Mandeljcb26d65b2004-02-25 01:30:03 +000025#include <string.h>
Alexandre Julliarde37c6e12003-09-05 23:08:26 +000026
Francois Gougetbf72af32004-08-11 19:43:45 +000027#define COBJMACROS
28
Rok Mandeljc473c5652003-07-21 22:10:14 +000029#include "windef.h"
Rok Mandeljc473c5652003-07-21 22:10:14 +000030#include "winbase.h"
31#include "winnt.h"
Alexandre Julliarde37c6e12003-09-05 23:08:26 +000032#include "wingdi.h"
Rok Mandeljc0382ea12004-01-20 00:21:40 +000033#include "winuser.h"
34
35#include "wine/debug.h"
36#include "wine/list.h"
37#include "wine/unicode.h"
38#include "winreg.h"
Alexandre Julliard25e2a322004-08-22 21:38:46 +000039#include "objbase.h"
Rok Mandeljc0382ea12004-01-20 00:21:40 +000040
Rok Mandeljc473c5652003-07-21 22:10:14 +000041#include "dmusici.h"
Rok Mandeljc473c5652003-07-21 22:10:14 +000042#include "dmusicf.h"
Rok Mandeljc0382ea12004-01-20 00:21:40 +000043#include "dmusics.h"
Rok Mandeljc473c5652003-07-21 22:10:14 +000044
Rok Mandeljc473c5652003-07-21 22:10:14 +000045/*****************************************************************************
46 * Interfaces
47 */
48typedef struct IDirectMusicPerformance8Impl IDirectMusicPerformance8Impl;
49typedef struct IDirectMusicSegment8Impl IDirectMusicSegment8Impl;
50typedef struct IDirectMusicSegmentState8Impl IDirectMusicSegmentState8Impl;
51typedef struct IDirectMusicGraphImpl IDirectMusicGraphImpl;
Rok Mandeljc473c5652003-07-21 22:10:14 +000052typedef struct IDirectMusicAudioPathImpl IDirectMusicAudioPathImpl;
53typedef struct IDirectMusicTool8Impl IDirectMusicTool8Impl;
Rok Mandeljc473c5652003-07-21 22:10:14 +000054typedef struct IDirectMusicPatternTrackImpl IDirectMusicPatternTrackImpl;
55
Rok Mandeljcdf167d12003-08-22 23:53:27 +000056typedef struct IDirectMusicLyricsTrack IDirectMusicLyricsTrack;
Rok Mandeljcdf167d12003-08-22 23:53:27 +000057typedef struct IDirectMusicMarkerTrack IDirectMusicMarkerTrack;
Rok Mandeljcdf167d12003-08-22 23:53:27 +000058typedef struct IDirectMusicParamControlTrack IDirectMusicParamControlTrack;
Rok Mandeljcdf167d12003-08-22 23:53:27 +000059typedef struct IDirectMusicSegTriggerTrack IDirectMusicSegTriggerTrack;
Rok Mandeljcdf167d12003-08-22 23:53:27 +000060typedef struct IDirectMusicSeqTrack IDirectMusicSeqTrack;
Rok Mandeljcdf167d12003-08-22 23:53:27 +000061typedef struct IDirectMusicSysExTrack IDirectMusicSysExTrack;
Rok Mandeljcdf167d12003-08-22 23:53:27 +000062typedef struct IDirectMusicTempoTrack IDirectMusicTempoTrack;
Rok Mandeljcdf167d12003-08-22 23:53:27 +000063typedef struct IDirectMusicTimeSigTrack IDirectMusicTimeSigTrack;
Rok Mandeljcdf167d12003-08-22 23:53:27 +000064typedef struct IDirectMusicWaveTrack IDirectMusicWaveTrack;
Rok Mandeljcdf167d12003-08-22 23:53:27 +000065
Rok Mandeljc473c5652003-07-21 22:10:14 +000066/*****************************************************************************
Rok Mandeljc473c5652003-07-21 22:10:14 +000067 * ClassFactory
68 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +000069extern HRESULT WINAPI DMUSIC_CreateDirectMusicPerformanceImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
70extern HRESULT WINAPI DMUSIC_CreateDirectMusicSegmentImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
71extern HRESULT WINAPI DMUSIC_CreateDirectMusicSegmentStateImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
72extern HRESULT WINAPI DMUSIC_CreateDirectMusicGraphImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
73extern HRESULT WINAPI DMUSIC_CreateDirectMusicAudioPathImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
74extern HRESULT WINAPI DMUSIC_CreateDirectMusicToolImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
75extern HRESULT WINAPI DMUSIC_CreateDirectMusicPatternTrackImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter);
Rok Mandeljc473c5652003-07-21 22:10:14 +000076
Rok Mandeljc0382ea12004-01-20 00:21:40 +000077extern HRESULT WINAPI DMUSIC_CreateDirectMusicLyricsTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
78extern HRESULT WINAPI DMUSIC_CreateDirectMusicMarkerTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
79extern HRESULT WINAPI DMUSIC_CreateDirectMusicParamControlTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
80extern HRESULT WINAPI DMUSIC_CreateDirectMusicSegTriggerTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
81extern HRESULT WINAPI DMUSIC_CreateDirectMusicSeqTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
82extern HRESULT WINAPI DMUSIC_CreateDirectMusicSysExTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
83extern HRESULT WINAPI DMUSIC_CreateDirectMusicTempoTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
84extern HRESULT WINAPI DMUSIC_CreateDirectMusicTimeSigTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
85extern HRESULT WINAPI DMUSIC_CreateDirectMusicWaveTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter);
Rok Mandeljcdf167d12003-08-22 23:53:27 +000086
Rok Mandeljcdf167d12003-08-22 23:53:27 +000087
Raphael Junqueira858557f2004-05-14 21:36:15 +000088/*****************************************************************************
89 * Auxiliary definitions
90 */
91typedef struct _DMUS_PRIVATE_SEGMENT_TRACK {
92 struct list entry; /* for listing elements */
93 DWORD dwGroupBits;
94 IDirectMusicTrack* pTrack;
95} DMUS_PRIVATE_SEGMENT_TRACK, *LPDMUS_PRIVATE_SEGMENT_TRACK;
96
Raphael Junqueira8d954392004-05-17 19:48:49 +000097typedef struct _DMUS_PRIVATE_TEMPO_ITEM {
98 struct list entry; /* for listing elements */
99 DMUS_IO_TEMPO_ITEM item;
100} DMUS_PRIVATE_TEMPO_ITEM, *LPDMUS_PRIVATE_TEMPO_ITEM;
101
Raphael Junqueiradfbf36d2004-05-19 04:32:43 +0000102typedef struct _DMUS_PRIVATE_SEGMENT_ITEM {
103 struct list entry; /* for listing elements */
104 DMUS_IO_SEGMENT_ITEM_HEADER header;
105 IDirectMusicObject* pObject;
106 WCHAR wszName[DMUS_MAX_NAME];
107} DMUS_PRIVATE_SEGMENT_ITEM, *LPDMUS_PRIVATE_SEGMENT_ITEM;
108
Raphael Junqueiraca7ee472004-05-20 01:15:30 +0000109typedef struct _DMUS_PRIVATE_GRAPH_TOOL {
110 struct list entry; /* for listing elements */
111 DWORD dwIndex;
112 IDirectMusicTool* pTool;
113} DMUS_PRIVATE_GRAPH_TOOL, *LPDMUS_PRIVATE_GRAPH_TOOL;
114
Raphael Junqueiradfbf36d2004-05-19 04:32:43 +0000115typedef struct _DMUS_PRIVATE_TEMPO_PLAY_STATE {
116 DWORD dummy;
117} DMUS_PRIVATE_TEMPO_PLAY_STATE, *LPDMUS_PRIVATE_TEMPO_PLAY_STATE;
Raphael Junqueira8d954392004-05-17 19:48:49 +0000118
Alexandre Julliardcb5c00d2004-01-03 00:58:08 +0000119/* some sort of aux. performance channel: as far as i can understand, these are
120 used to represent a particular midi channel in particular group at particular
121 group; so all we need to do is to fill it with parent port, group and midi
122 channel ? */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000123typedef struct DMUSIC_PRIVATE_PCHANNEL_ {
Alexandre Julliardcb5c00d2004-01-03 00:58:08 +0000124 DWORD channel; /* map to this channel... */
125 DWORD group; /* ... in this group ... */
126 IDirectMusicPort *port; /* ... at this port */
127} DMUSIC_PRIVATE_PCHANNEL, *LPDMUSIC_PRIVATE_PCHANNEL;
128
Rok Mandeljc473c5652003-07-21 22:10:14 +0000129/*****************************************************************************
130 * IDirectMusicPerformance8Impl implementation structure
131 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000132struct IDirectMusicPerformance8Impl {
Rok Mandeljc473c5652003-07-21 22:10:14 +0000133 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000134 const IDirectMusicPerformance8Vtbl *lpVtbl;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000135 DWORD ref;
136
137 /* IDirectMusicPerformanceImpl fields */
138 IDirectMusic8* pDirectMusic;
139 IDirectSound* pDirectSound;
140 IDirectMusicGraph* pToolGraph;
141 DMUS_AUDIOPARAMS pParams;
142
143 /* global parameters */
144 BOOL fAutoDownload;
145 char cMasterGrooveLevel;
146 float fMasterTempo;
147 long lMasterVolume;
148
149 /* performance channels */
150 DMUSIC_PRIVATE_PCHANNEL PChannel[1];
151
152 /* IDirectMusicPerformance8Impl fields */
153 IDirectMusicAudioPath* pDefaultPath;
Raphael Junqueira1afbcd72004-05-05 01:32:55 +0000154 HANDLE hNotification;
155 REFERENCE_TIME rtMinimum;
Raphael Junqueira7be996e2004-05-05 18:59:59 +0000156
Raphael Junqueirafaf1b082004-05-06 23:37:54 +0000157 REFERENCE_TIME rtLatencyTime;
158 DWORD dwBumperLength;
159 DWORD dwPrepareTime;
Raphael Junqueira7be996e2004-05-05 18:59:59 +0000160 /** Message Processing */
161 HANDLE procThread;
Raphael Junqueirafaf1b082004-05-06 23:37:54 +0000162 DWORD procThreadId;
Raphael Junqueira7be996e2004-05-05 18:59:59 +0000163 REFERENCE_TIME procThreadStartTime;
164 BOOL procThreadTicStarted;
Raphael Junqueirafaf1b082004-05-06 23:37:54 +0000165 CRITICAL_SECTION safe;
166 struct DMUS_PMSGItem* head;
167 struct DMUS_PMSGItem* imm_head;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000168};
169
170/* IUnknown: */
171extern HRESULT WINAPI IDirectMusicPerformance8Impl_QueryInterface (LPDIRECTMUSICPERFORMANCE8 iface, REFIID riid, LPVOID *ppobj);
172extern ULONG WINAPI IDirectMusicPerformance8Impl_AddRef (LPDIRECTMUSICPERFORMANCE8 iface);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000173/* IDirectMusicPerformance: */
Rok Mandeljc473c5652003-07-21 22:10:14 +0000174extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtNow, MUSIC_TIME* pmtNow);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000175extern HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph** ppGraph);
176extern HRESULT WINAPI IDirectMusicPerformance8Impl_SetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph* pGraph);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000177/* IDirectMusicPerformance8: */
Raphael Junqueira1afbcd72004-05-05 01:32:55 +0000178extern HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwType, DWORD dwPChannelCount, BOOL fActivate, IDirectMusicAudioPath** ppNewPath);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000179
180/*****************************************************************************
181 * IDirectMusicSegment8Impl implementation structure
182 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000183struct IDirectMusicSegment8Impl {
Rok Mandeljc473c5652003-07-21 22:10:14 +0000184 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000185 const IUnknownVtbl *UnknownVtbl;
186 const IDirectMusicSegment8Vtbl *SegmentVtbl;
187 const IDirectMusicObjectVtbl *ObjectVtbl;
188 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000189 DWORD ref;
190
191 /* IDirectMusicSegment8Impl fields */
Raphael Junqueirac77788b2004-05-10 19:56:17 +0000192 LPDMUS_OBJECTDESC pDesc;
193 DMUS_IO_SEGMENT_HEADER header;
Raphael Junqueira858557f2004-05-14 21:36:15 +0000194 IDirectMusicGraph* pGraph;
195 struct list Tracks;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000196};
197
198/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000199extern HRESULT WINAPI IDirectMusicSegment8Impl_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
200extern ULONG WINAPI IDirectMusicSegment8Impl_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000201/* IDirectMusicSegment(8): */
202extern HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_QueryInterface (LPDIRECTMUSICSEGMENT8 iface, REFIID riid, LPVOID *ppobj);
203extern ULONG WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_AddRef (LPDIRECTMUSICSEGMENT8 iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000204/* IDirectMusicObject: */
205extern HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicObject_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj);
206extern ULONG WINAPI IDirectMusicSegment8Impl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000207/* IPersistStream: */
208extern HRESULT WINAPI IDirectMusicSegment8Impl_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
209extern ULONG WINAPI IDirectMusicSegment8Impl_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000210
Rok Mandeljc473c5652003-07-21 22:10:14 +0000211/*****************************************************************************
212 * IDirectMusicSegmentState8Impl implementation structure
213 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000214struct IDirectMusicSegmentState8Impl {
Rok Mandeljc473c5652003-07-21 22:10:14 +0000215 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000216 const IDirectMusicSegmentState8Vtbl *lpVtbl;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000217 DWORD ref;
218
219 /* IDirectMusicSegmentState8Impl fields */
220};
221
222/* IUnknown: */
223extern HRESULT WINAPI IDirectMusicSegmentState8Impl_QueryInterface (LPDIRECTMUSICSEGMENTSTATE8 iface, REFIID riid, LPVOID *ppobj);
224extern ULONG WINAPI IDirectMusicSegmentState8Impl_AddRef (LPDIRECTMUSICSEGMENTSTATE8 iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000225/* IDirectMusicSegmentState(8): */
Rok Mandeljc473c5652003-07-21 22:10:14 +0000226extern HRESULT WINAPI IDirectMusicSegmentState8Impl_GetObjectInPath (LPDIRECTMUSICSEGMENTSTATE8 iface, DWORD dwPChannel, DWORD dwStage, DWORD dwBuffer, REFGUID guidObject, DWORD dwIndex, REFGUID iidInterface, void** ppObject);
227
228/*****************************************************************************
229 * IDirectMusicGraphImpl implementation structure
230 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000231struct IDirectMusicGraphImpl {
Rok Mandeljc473c5652003-07-21 22:10:14 +0000232 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000233 const IUnknownVtbl *UnknownVtbl;
234 const IDirectMusicGraphVtbl *GraphVtbl;
235 const IDirectMusicObjectVtbl *ObjectVtbl;
236 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000237 DWORD ref;
238
239 /* IDirectMusicGraphImpl fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000240 LPDMUS_OBJECTDESC pDesc;
Raphael Junqueiraca7ee472004-05-20 01:15:30 +0000241 WORD num_tools;
242 struct list Tools;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000243};
244
245/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000246extern HRESULT WINAPI IDirectMusicGraphImpl_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
247extern ULONG WINAPI IDirectMusicGraphImpl_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000248/* IDirectMusicGraph: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000249extern HRESULT WINAPI IDirectMusicGraphImpl_IDirectMusicGraph_QueryInterface (LPDIRECTMUSICGRAPH iface, REFIID riid, LPVOID *ppobj);
250extern ULONG WINAPI IDirectMusicGraphImpl_IDirectMusicGraph_AddRef (LPDIRECTMUSICGRAPH iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000251/* IDirectMusicObject: */
252extern HRESULT WINAPI IDirectMusicGraphImpl_IDirectMusicObject_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj);
253extern ULONG WINAPI IDirectMusicGraphImpl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000254/* IPersistStream: */
255extern HRESULT WINAPI IDirectMusicGraphImpl_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
256extern ULONG WINAPI IDirectMusicGraphImpl_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000257
258/*****************************************************************************
259 * IDirectMusicAudioPathImpl implementation structure
260 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000261struct IDirectMusicAudioPathImpl {
Rok Mandeljc473c5652003-07-21 22:10:14 +0000262 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000263 const IUnknownVtbl *UnknownVtbl;
264 const IDirectMusicAudioPathVtbl *AudioPathVtbl;
265 const IDirectMusicObjectVtbl *ObjectVtbl;
266 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000267 DWORD ref;
268
269 /* IDirectMusicAudioPathImpl fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000270 LPDMUS_OBJECTDESC pDesc;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000271
Rok Mandeljc473c5652003-07-21 22:10:14 +0000272 IDirectMusicPerformance8* pPerf;
273 IDirectMusicGraph* pToolGraph;
274 IDirectSoundBuffer* pDSBuffer;
275 IDirectSoundBuffer* pPrimary;
Raphael Junqueirac77788b2004-05-10 19:56:17 +0000276
277 BOOL fActive;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000278};
279
280/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000281extern HRESULT WINAPI IDirectMusicAudioPathImpl_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
282extern ULONG WINAPI IDirectMusicAudioPathImpl_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000283/* IDirectMusicAudioPath: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000284extern HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_QueryInterface (LPDIRECTMUSICAUDIOPATH iface, REFIID riid, LPVOID *ppobj);
285extern ULONG WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_AddRef (LPDIRECTMUSICAUDIOPATH iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000286extern HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_Activate (LPDIRECTMUSICAUDIOPATH iface, BOOL fActivate);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000287/* IDirectMusicObject: */
288extern HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicObject_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj);
289extern ULONG WINAPI IDirectMusicAudioPathImpl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000290/* IPersistStream: */
291extern HRESULT WINAPI IDirectMusicAudioPathImpl_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
292extern ULONG WINAPI IDirectMusicAudioPathImpl_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000293
294/*****************************************************************************
295 * IDirectMusicTool8Impl implementation structure
296 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000297struct IDirectMusicTool8Impl {
Rok Mandeljc473c5652003-07-21 22:10:14 +0000298 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000299 const IDirectMusicTool8Vtbl *lpVtbl;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000300 DWORD ref;
301
302 /* IDirectMusicTool8Impl fields */
Rok Mandeljc473c5652003-07-21 22:10:14 +0000303};
304
305/* IUnknown: */
306extern HRESULT WINAPI IDirectMusicTool8Impl_QueryInterface (LPDIRECTMUSICTOOL8 iface, REFIID riid, LPVOID *ppobj);
307extern ULONG WINAPI IDirectMusicTool8Impl_AddRef (LPDIRECTMUSICTOOL8 iface);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000308
309/*****************************************************************************
Rok Mandeljc473c5652003-07-21 22:10:14 +0000310 * IDirectMusicPatternTrackImpl implementation structure
311 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000312struct IDirectMusicPatternTrackImpl {
Rok Mandeljc473c5652003-07-21 22:10:14 +0000313 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000314 const IDirectMusicPatternTrackVtbl *lpVtbl;
Rok Mandeljc473c5652003-07-21 22:10:14 +0000315 DWORD ref;
316
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000317 /* IDirectMusicPatternTrackImpl fields */
Rok Mandeljc473c5652003-07-21 22:10:14 +0000318};
319
320/* IUnknown: */
321extern HRESULT WINAPI IDirectMusicPatternTrackImpl_QueryInterface (LPDIRECTMUSICPATTERNTRACK iface, REFIID riid, LPVOID *ppobj);
322extern ULONG WINAPI IDirectMusicPatternTrackImpl_AddRef (LPDIRECTMUSICPATTERNTRACK iface);
Rok Mandeljc473c5652003-07-21 22:10:14 +0000323
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000324/*****************************************************************************
325 * IDirectMusicLyricsTrack implementation structure
326 */
327struct IDirectMusicLyricsTrack
328{
329 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000330 const IUnknownVtbl *UnknownVtbl;
331 const IDirectMusicTrack8Vtbl *TrackVtbl;
332 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000333 DWORD ref;
334
335 /* IDirectMusicLyricsTrack fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000336 LPDMUS_OBJECTDESC pDesc;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000337};
338
339/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000340extern HRESULT WINAPI IDirectMusicLyricsTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
341extern ULONG WINAPI IDirectMusicLyricsTrack_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000342/* IDirectMusicTrack(8): */
343extern HRESULT WINAPI IDirectMusicLyricsTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
344extern ULONG WINAPI IDirectMusicLyricsTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000345/* IPersistStream: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000346extern HRESULT WINAPI IDirectMusicLyricsTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
347extern ULONG WINAPI IDirectMusicLyricsTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000348
349/*****************************************************************************
350 * IDirectMusicMarkerTrack implementation structure
351 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000352struct IDirectMusicMarkerTrack {
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000353 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000354 const IUnknownVtbl *UnknownVtbl;
355 const IDirectMusicTrack8Vtbl *TrackVtbl;
356 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000357 DWORD ref;
358
359 /* IDirectMusicMarkerTrack fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000360 LPDMUS_OBJECTDESC pDesc;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000361};
362
363/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000364extern HRESULT WINAPI IDirectMusicMarkerTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
365extern ULONG WINAPI IDirectMusicMarkerTrack_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000366/* IDirectMusicTrack(8): */
367extern HRESULT WINAPI IDirectMusicMarkerTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
368extern ULONG WINAPI IDirectMusicMarkerTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000369/* IPersistStream: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000370extern HRESULT WINAPI IDirectMusicMarkerTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
371extern ULONG WINAPI IDirectMusicMarkerTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000372
373/*****************************************************************************
374 * IDirectMusicParamControlTrack implementation structure
375 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000376struct IDirectMusicParamControlTrack {
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000377 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000378 const IUnknownVtbl *UnknownVtbl;
379 const IDirectMusicTrack8Vtbl *TrackVtbl;
380 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000381 DWORD ref;
382
383 /* IDirectMusicParamControlTrack fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000384 LPDMUS_OBJECTDESC pDesc;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000385};
386
387/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000388extern HRESULT WINAPI IDirectMusicParamControlTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
389extern ULONG WINAPI IDirectMusicParamControlTrack_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000390/* IDirectMusicTrack(8): */
391extern HRESULT WINAPI IDirectMusicParamControlTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
392extern ULONG WINAPI IDirectMusicParamControlTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000393/* IPersistStream: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000394extern HRESULT WINAPI IDirectMusicParamControlTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
395extern ULONG WINAPI IDirectMusicParamControlTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000396
397/*****************************************************************************
398 * IDirectMusicSegTriggerTrack implementation structure
399 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000400struct IDirectMusicSegTriggerTrack {
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000401 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000402 const IUnknownVtbl *UnknownVtbl;
403 const IDirectMusicTrack8Vtbl *TrackVtbl;
404 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000405 DWORD ref;
406
407 /* IDirectMusicSegTriggerTrack fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000408 LPDMUS_OBJECTDESC pDesc;
Raphael Junqueiradfbf36d2004-05-19 04:32:43 +0000409
410 struct list Items;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000411};
412
413/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000414extern HRESULT WINAPI IDirectMusicSegTriggerTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
415extern ULONG WINAPI IDirectMusicSegTriggerTrack_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000416/* IDirectMusicTrack(8): */
417extern HRESULT WINAPI IDirectMusicSegTriggerTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
418extern ULONG WINAPI IDirectMusicSegTriggerTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000419/* IPersistStream: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000420extern HRESULT WINAPI IDirectMusicSegTriggerTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
421extern ULONG WINAPI IDirectMusicSegTriggerTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000422
423/*****************************************************************************
424 * IDirectMusicSeqTrack implementation structure
425 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000426struct IDirectMusicSeqTrack {
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000427 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000428 const IUnknownVtbl *UnknownVtbl;
429 const IDirectMusicTrack8Vtbl *TrackVtbl;
430 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000431 DWORD ref;
432
433 /* IDirectMusicSeqTrack fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000434 LPDMUS_OBJECTDESC pDesc;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000435};
436
437/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000438extern HRESULT WINAPI IDirectMusicSeqTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
439extern ULONG WINAPI IDirectMusicSeqTrack_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000440/* IDirectMusicTrack(8): */
441extern HRESULT WINAPI IDirectMusicSeqTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
442extern ULONG WINAPI IDirectMusicSeqTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000443/* IPersistStream: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000444extern HRESULT WINAPI IDirectMusicSeqTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
445extern ULONG WINAPI IDirectMusicSeqTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000446
447/*****************************************************************************
448 * IDirectMusicSysExTrack implementation structure
449 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000450struct IDirectMusicSysExTrack {
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000451 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000452 const IUnknownVtbl *UnknownVtbl;
453 const IDirectMusicTrack8Vtbl *TrackVtbl;
454 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000455 DWORD ref;
456
457 /* IDirectMusicSysExTrack fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000458 LPDMUS_OBJECTDESC pDesc;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000459};
460
461/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000462extern HRESULT WINAPI IDirectMusicSysExTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
463extern ULONG WINAPI IDirectMusicSysExTrack_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000464/* IDirectMusicTrack(8): */
465extern HRESULT WINAPI IDirectMusicSysExTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
466extern ULONG WINAPI IDirectMusicSysExTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000467/* IPersistStream: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000468extern HRESULT WINAPI IDirectMusicSysExTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
469extern ULONG WINAPI IDirectMusicSysExTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000470
471/*****************************************************************************
472 * IDirectMusicTempoTrack implementation structure
473 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000474struct IDirectMusicTempoTrack {
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000475 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000476 const IUnknownVtbl *UnknownVtbl;
477 const IDirectMusicTrack8Vtbl *TrackVtbl;
478 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000479 DWORD ref;
480
481 /* IDirectMusicTempoTrack fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000482 LPDMUS_OBJECTDESC pDesc;
Raphael Junqueira8d954392004-05-17 19:48:49 +0000483 BOOL enabled;
484 struct list Items;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000485};
486
487/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000488extern HRESULT WINAPI IDirectMusicTempoTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
489extern ULONG WINAPI IDirectMusicTempoTrack_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000490/* IDirectMusicTrack(8): */
491extern HRESULT WINAPI IDirectMusicTempoTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
492extern ULONG WINAPI IDirectMusicTempoTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000493extern HRESULT WINAPI IDirectMusicTempoTrack_IDirectMusicTrack_IsParamSupported (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000494/* IPersistStream: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000495extern HRESULT WINAPI IDirectMusicTempoTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
496extern ULONG WINAPI IDirectMusicTempoTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000497
498/*****************************************************************************
499 * IDirectMusicTimeSigTrack implementation structure
500 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000501struct IDirectMusicTimeSigTrack {
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000502 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000503 const IUnknownVtbl *UnknownVtbl;
504 const IDirectMusicTrack8Vtbl *TrackVtbl;
505 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000506 DWORD ref;
507
508 /* IDirectMusicTimeSigTrack fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000509 LPDMUS_OBJECTDESC pDesc;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000510};
511
512/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000513extern HRESULT WINAPI IDirectMusicTimeSigTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
514extern ULONG WINAPI IDirectMusicTimeSigTrack_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000515/* IDirectMusicTrack(8): */
516extern HRESULT WINAPI IDirectMusicTimeSigTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
517extern ULONG WINAPI IDirectMusicTimeSigTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000518/* IPersistStream: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000519extern HRESULT WINAPI IDirectMusicTimeSigTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
520extern ULONG WINAPI IDirectMusicTimeSigTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000521
522/*****************************************************************************
523 * IDirectMusicWaveTrack implementation structure
524 */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000525struct IDirectMusicWaveTrack {
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000526 /* IUnknown fields */
Dmitry Timoshkov247246e2005-05-30 10:01:08 +0000527 const IUnknownVtbl *UnknownVtbl;
528 const IDirectMusicTrack8Vtbl *TrackVtbl;
529 const IPersistStreamVtbl *PersistStreamVtbl;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000530 DWORD ref;
531
532 /* IDirectMusicWaveTrack fields */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000533 LPDMUS_OBJECTDESC pDesc;
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000534};
535
536/* IUnknown: */
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000537extern HRESULT WINAPI IDirectMusicWaveTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj);
538extern ULONG WINAPI IDirectMusicWaveTrack_IUnknown_AddRef (LPUNKNOWN iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000539/* IDirectMusicTrack(8): */
540extern HRESULT WINAPI IDirectMusicWaveTrack_IDirectMusicTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj);
541extern ULONG WINAPI IDirectMusicWaveTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000542/* IPersistStream: */
543extern HRESULT WINAPI IDirectMusicWaveTrack_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, void** ppvObject);
544extern ULONG WINAPI IDirectMusicWaveTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface);
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000545
James Hawkins1727eb42005-02-02 09:31:06 +0000546/**********************************************************************
547 * Dll lifetime tracking declaration for dmime.dll
548 */
549extern LONG DMIME_refCount;
550static inline void DMIME_LockModule() { InterlockedIncrement( &DMIME_refCount ); }
551static inline void DMIME_UnlockModule() { InterlockedDecrement( &DMIME_refCount ); }
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000552
553/*****************************************************************************
Rok Mandeljc0382ea12004-01-20 00:21:40 +0000554 * Misc.
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000555 */
Rok Mandeljcdf167d12003-08-22 23:53:27 +0000556
Raphael Junqueira106e13a2004-05-14 04:57:02 +0000557#include "dmutils.h"
Raphael Junqueiraee51a0c2004-05-11 04:27:23 +0000558
Rok Mandeljc473c5652003-07-21 22:10:14 +0000559#endif /* __WINE_DMIME_PRIVATE_H */