20#ifndef __WINE_DMUSIC_CORE_H
21#define __WINE_DMUSIC_CORE_H
27#define COM_NO_WINDOWS_H
48DEFINE_GUID(CLSID_DirectMusic, 0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21);
49DEFINE_GUID(CLSID_DirectMusicCollection, 0x480ff4b0,0x28b2,0x11d1,0xbe,0xf7,0x00,0xc0,0x4f,0xbf,0x8f,0xef);
50DEFINE_GUID(CLSID_DirectMusicSynth, 0x58c2b4d0,0x46e7,0x11d1,0x89,0xac,0x00,0xa0,0xc9,0x05,0x41,0x29);
53DEFINE_GUID(IID_IDirectMusic, 0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12);
54DEFINE_GUID(IID_IDirectMusic2, 0x6fc2cae1,0xbc78,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
55DEFINE_GUID(IID_IDirectMusic8, 0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97);
56DEFINE_GUID(IID_IDirectMusicBuffer, 0xd2ac2878,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
57DEFINE_GUID(IID_IDirectMusicCollection, 0xd2ac287c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
58DEFINE_GUID(IID_IDirectMusicDownload, 0xd2ac287b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
59DEFINE_GUID(IID_IDirectMusicDownloadedInstrument, 0xd2ac287e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
60DEFINE_GUID(IID_IDirectMusicInstrument, 0xd2ac287d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
61DEFINE_GUID(IID_IDirectMusicPort, 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
62DEFINE_GUID(IID_IDirectMusicPortDownload, 0xd2ac287a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
63DEFINE_GUID(IID_IDirectMusicThru, 0xced153e7,0x3606,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
65#define IID_IDirectMusicCollection8 IID_IDirectMusicCollection
66#define IID_IDirectMusicDownload8 IID_IDirectMusicDownload
67#define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument
68#define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument
69#define IID_IDirectMusicPort8 IID_IDirectMusicPort
70#define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload
71#define IID_IDirectMusicThru8 IID_IDirectMusicThru
74DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware, 0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
75DEFINE_GUID(GUID_DMUS_PROP_GS_Capable, 0x6496aba2,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
76DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware, 0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
77DEFINE_GUID(GUID_DMUS_PROP_DLS1, 0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
78DEFINE_GUID(GUID_DMUS_PROP_DLS2, 0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
79DEFINE_GUID(GUID_DMUS_PROP_Effects, 0xcda8d611,0x684a,0x11d2,0x87,0x1e,0x00,0x60,0x08,0x93,0xb1,0xbd);
80DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2, 0x865fd372,0x9f67,0x11d2,0x87,0x2a,0x00,0x60,0x08,0x93,0xb1,0xbd);
81DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps, 0xcfa7cdc2,0x00a1,0x11d2,0xaa,0xd5,0x00,0x00,0xf8,0x75,0xac,0x12);
82DEFINE_GUID(GUID_DMUS_PROP_MemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
83DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
84DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate, 0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x00,0x60,0x08,0x33,0xdb,0xd8);
85DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND, 0x0aa97844,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
86DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE, 0x0aa97845,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
87DEFINE_GUID(GUID_DMUS_PROP_Volume, 0xfedfae25,0xe46e,0x11d1,0xaa,0xce,0x00,0x00,0xf8,0x75,0xac,0x12);
88DEFINE_GUID(GUID_DMUS_PROP_WavesReverb, 0x04cb5622,0x32e5,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
89DEFINE_GUID(GUID_DMUS_PROP_WriteLatency, 0x268a0fa0,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
90DEFINE_GUID(GUID_DMUS_PROP_WritePeriod, 0x268a0fa1,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
91DEFINE_GUID(GUID_DMUS_PROP_XG_Capable, 0x6496aba1,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
92DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware, 0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
126#ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_
127#define _DIRECTAUDIO_PRIORITIES_DEFINED_
129#define DAUD_CRITICAL_VOICE_PRIORITY 0xF0000000
130#define DAUD_HIGH_VOICE_PRIORITY 0xC0000000
131#define DAUD_STANDARD_VOICE_PRIORITY 0x80000000
132#define DAUD_LOW_VOICE_PRIORITY 0x40000000
133#define DAUD_PERSIST_VOICE_PRIORITY 0x10000000
135#define DAUD_CHAN1_VOICE_PRIORITY_OFFSET 0x0000000E
136#define DAUD_CHAN2_VOICE_PRIORITY_OFFSET 0x0000000D
137#define DAUD_CHAN3_VOICE_PRIORITY_OFFSET 0x0000000C
138#define DAUD_CHAN4_VOICE_PRIORITY_OFFSET 0x0000000B
139#define DAUD_CHAN5_VOICE_PRIORITY_OFFSET 0x0000000A
140#define DAUD_CHAN6_VOICE_PRIORITY_OFFSET 0x00000009
141#define DAUD_CHAN7_VOICE_PRIORITY_OFFSET 0x00000008
142#define DAUD_CHAN8_VOICE_PRIORITY_OFFSET 0x00000007
143#define DAUD_CHAN9_VOICE_PRIORITY_OFFSET 0x00000006
144#define DAUD_CHAN10_VOICE_PRIORITY_OFFSET 0x0000000F
145#define DAUD_CHAN11_VOICE_PRIORITY_OFFSET 0x00000005
146#define DAUD_CHAN12_VOICE_PRIORITY_OFFSET 0x00000004
147#define DAUD_CHAN13_VOICE_PRIORITY_OFFSET 0x00000003
148#define DAUD_CHAN14_VOICE_PRIORITY_OFFSET 0x00000002
149#define DAUD_CHAN15_VOICE_PRIORITY_OFFSET 0x00000001
150#define DAUD_CHAN16_VOICE_PRIORITY_OFFSET 0x00000000
152#define DAUD_CHAN1_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)
153#define DAUD_CHAN2_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET)
154#define DAUD_CHAN3_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET)
155#define DAUD_CHAN4_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET)
156#define DAUD_CHAN5_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET)
157#define DAUD_CHAN6_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET)
158#define DAUD_CHAN7_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET)
159#define DAUD_CHAN8_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET)
160#define DAUD_CHAN9_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET)
161#define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET)
162#define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET)
163#define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET)
164#define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET)
165#define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET)
166#define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET)
167#define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET)
170#define DMUS_CLOCKF_GLOBAL 0x1
172#define DMUS_EFFECT_NONE 0x0
173#define DMUS_EFFECT_REVERB 0x1
174#define DMUS_EFFECT_CHORUS 0x2
175#define DMUS_EFFECT_DELAY 0x4
177#define DMUS_MAX_DESCRIPTION 0x80
178#define DMUS_MAX_DRIVER 0x80
180#define DMUS_PC_INPUTCLASS 0x0
181#define DMUS_PC_OUTPUTCLASS 0x1
183#define DMUS_PC_DLS 0x00000001
184#define DMUS_PC_EXTERNAL 0x00000002
185#define DMUS_PC_SOFTWARESYNTH 0x00000004
186#define DMUS_PC_MEMORYSIZEFIXED 0x00000008
187#define DMUS_PC_GMINHARDWARE 0x00000010
188#define DMUS_PC_GSINHARDWARE 0x00000020
189#define DMUS_PC_XGINHARDWARE 0x00000040
190#define DMUS_PC_DIRECTSOUND 0x00000080
191#define DMUS_PC_SHAREABLE 0x00000100
192#define DMUS_PC_DLS2 0x00000200
193#define DMUS_PC_AUDIOPATH 0x00000400
194#define DMUS_PC_WAVE 0x00000800
195#define DMUS_PC_SYSTEMMEMORY 0x7FFFFFFF
197#define DMUS_PORT_WINMM_DRIVER 0x0
198#define DMUS_PORT_USER_MODE_SYNTH 0x1
199#define DMUS_PORT_KERNEL_MODE 0x2
201#define DMUS_PORT_FEATURE_AUDIOPATH 0x1
202#define DMUS_PORT_FEATURE_STREAMING 0x2
204#define DMUS_PORTPARAMS_VOICES 0x01
205#define DMUS_PORTPARAMS_CHANNELGROUPS 0x02
206#define DMUS_PORTPARAMS_AUDIOCHANNELS 0x04
207#define DMUS_PORTPARAMS_SAMPLERATE 0x08
208#define DMUS_PORTPARAMS_EFFECTS 0x20
209#define DMUS_PORTPARAMS_SHARE 0x40
210#define DMUS_PORTPARAMS_FEATURES 0x80
212#define DMUS_VOLUME_MAX 2000
213#define DMUS_VOLUME_MIN -20000
215#define DMUS_SYNTHSTATS_VOICES 0x01
216#define DMUS_SYNTHSTATS_TOTAL_CPU 0x02
217#define DMUS_SYNTHSTATS_CPU_PER_VOICE 0x04
218#define DMUS_SYNTHSTATS_LOST_NOTES 0x08
219#define DMUS_SYNTHSTATS_PEAK_VOLUME 0x10
220#define DMUS_SYNTHSTATS_FREE_MEMORY 0x20
221#define DMUS_SYNTHSTATS_SYSTEMMEMORY DMUS_PC_SYSTEMMEMORY
223#define DSBUSID_FIRST_SPKR_LOC 0x00000000
224#define DSBUSID_FRONT_LEFT 0x00000000
225#define DSBUSID_LEFT 0x00000000
226#define DSBUSID_FRONT_RIGHT 0x00000001
227#define DSBUSID_RIGHT 0x00000001
228#define DSBUSID_FRONT_CENTER 0x00000002
229#define DSBUSID_LOW_FREQUENCY 0x00000003
230#define DSBUSID_BACK_LEFT 0x00000004
231#define DSBUSID_BACK_RIGHT 0x00000005
232#define DSBUSID_FRONT_LEFT_OF_CENTER 0x00000006
233#define DSBUSID_FRONT_RIGHT_OF_CENTER 0x00000007
234#define DSBUSID_BACK_CENTER 0x00000008
235#define DSBUSID_SIDE_LEFT 0x00000009
236#define DSBUSID_SIDE_RIGHT 0x0000000A
237#define DSBUSID_TOP_CENTER 0x0000000B
238#define DSBUSID_TOP_FRONT_LEFT 0x0000000C
239#define DSBUSID_TOP_FRONT_CENTER 0x0000000D
240#define DSBUSID_TOP_FRONT_RIGHT 0x0000000E
241#define DSBUSID_TOP_BACK_LEFT 0x0000000F
242#define DSBUSID_TOP_BACK_CENTER 0x00000010
243#define DSBUSID_TOP_BACK_RIGHT 0x011
244#define DSBUSID_LAST_SPKR_LOC 0x00000011
245#define DSBUSID_IS_SPKR_LOC(id) (((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC))
247#define DSBUSID_REVERB_SEND 0x00000040
248#define DSBUSID_CHORUS_SEND 0x00000041
250#define DSBUSID_DYNAMIC_0 0x00000200
252#define DSBUSID_NULL 0xFFFFFFFF
374#define INTERFACE IDirectMusic
394#if !defined(__cplusplus) || defined(CINTERFACE)
396#define IDirectMusic_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
397#define IDirectMusic_AddRef(p) (p)->lpVtbl->AddRef(p)
398#define IDirectMusic_Release(p) (p)->lpVtbl->Release(p)
400#define IDirectMusic_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b)
401#define IDirectMusic_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
402#define IDirectMusic_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d)
403#define IDirectMusic_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b)
404#define IDirectMusic_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b)
405#define IDirectMusic_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a)
406#define IDirectMusic_Activate(p,a) (p)->lpVtbl->Activate(p,a)
407#define IDirectMusic_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a)
408#define IDirectMusic_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
415#define INTERFACE IDirectMusic8
437#if !defined(__cplusplus) || defined(CINTERFACE)
439#define IDirectMusic8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
440#define IDirectMusic8_AddRef(p) (p)->lpVtbl->AddRef(p)
441#define IDirectMusic8_Release(p) (p)->lpVtbl->Release(p)
443#define IDirectMusic8_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b)
444#define IDirectMusic8_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
445#define IDirectMusic8_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d)
446#define IDirectMusic8_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b)
447#define IDirectMusic8_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b)
448#define IDirectMusic8_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a)
449#define IDirectMusic8_Activate(p,a) (p)->lpVtbl->Activate(p,a)
450#define IDirectMusic8_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a)
451#define IDirectMusic8_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
453#define IDirectMusic8_SetExternalMasterClock(p,a) (p)->lpVtbl->SetExternalMasterClock(p,a)
460#define INTERFACE IDirectMusicBuffer
484#if !defined(__cplusplus) || defined(CINTERFACE)
486#define IDirectMusicBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
487#define IDirectMusicBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
488#define IDirectMusicBuffer_Release(p) (p)->lpVtbl->Release(p)
490#define IDirectMusicBuffer_Flush(p) (p)->lpVtbl->Flush(p)
491#define IDirectMusicBuffer_TotalTime(p,a) (p)->lpVtbl->TotalTime(p,a)
492#define IDirectMusicBuffer_PackStructured(p,a,b,c) (p)->lpVtbl->PackStructured(p,a,b,c)
493#define IDirectMusicBuffer_PackUnstructured(p,a,b,c,d) (p)->lpVtbl->PackUnstructured(p,a,b,c,d)
494#define IDirectMusicBuffer_ResetReadPtr(p) (p)->lpVtbl->ResetReadPtr(p)
495#define IDirectMusicBuffer_GetNextEvent(p,a,b,c,d) (p)->lpVtbl->GetNextEvent(p,a,b,c,d)
496#define IDirectMusicBuffer_GetRawBufferPtr(p,a) (p)->lpVtbl->GetRawBufferPtr(p,a)
497#define IDirectMusicBuffer_GetStartTime(p,a) (p)->lpVtbl->GetStartTime(p,a)
498#define IDirectMusicBuffer_GetUsedBytes(p,a) (p)->lpVtbl->GetUsedBytes(p,a)
499#define IDirectMusicBuffer_GetMaxBytes(p,a) (p)->lpVtbl->GetMaxBytes(p,a)
500#define IDirectMusicBuffer_GetBufferFormat(p,a) (p)->lpVtbl->GetBufferFormat(p,a)
501#define IDirectMusicBuffer_SetStartTime(p,a) (p)->lpVtbl->SetStartTime(p,a)
502#define IDirectMusicBuffer_SetUsedBytes(p,a) (p)->lpVtbl->SetUsedBytes(p,a)
509#define INTERFACE IDirectMusicInstrument
522#if !defined(__cplusplus) || defined(CINTERFACE)
524#define IDirectMusicInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
525#define IDirectMusicInstrument_AddRef(p) (p)->lpVtbl->AddRef(p)
526#define IDirectMusicInstrument_Release(p) (p)->lpVtbl->Release(p)
528#define IDirectMusicInstrument_GetPatch(p,a) (p)->lpVtbl->GetPatch(p,a)
529#define IDirectMusicInstrument_SetPatch(p,a) (p)->lpVtbl->SetPatch(p,a)
536#define INTERFACE IDirectMusicDownloadedInstrument
547#if !defined(__cplusplus) || defined(CINTERFACE)
549#define IDirectMusicDownloadedInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
550#define IDirectMusicDownloadedInstrument_AddRef(p) (p)->lpVtbl->AddRef(p)
551#define IDirectMusicDownloadedInstrument_Release(p) (p)->lpVtbl->Release(p)
560#define INTERFACE IDirectMusicCollection
573#if !defined(__cplusplus) || defined(CINTERFACE)
575#define IDirectMusicCollection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
576#define IDirectMusicCollection_AddRef(p) (p)->lpVtbl->AddRef(p)
577#define IDirectMusicCollection_Release(p) (p)->lpVtbl->Release(p)
579#define IDirectMusicCollection_GetInstrument(p,a,b) (p)->lpVtbl->GetInstrument(p,a,b)
580#define IDirectMusicCollection_EnumInstrument(p,a,b,c,d) (p)->lpVtbl->EnumInstrument(p,a,b,c,d)
587#define INTERFACE IDirectMusicDownload
599#if !defined(__cplusplus) || defined(CINTERFACE)
601#define IDirectMusicDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
602#define IDirectMusicDownload_AddRef(p) (p)->lpVtbl->AddRef(p)
603#define IDirectMusicDownload_Release(p) (p)->lpVtbl->Release(p)
605#define IDirectMusicDownload_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
612#define INTERFACE IDirectMusicPortDownload
629#if !defined(__cplusplus) || defined(CINTERFACE)
631#define IDirectMusicPortDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
632#define IDirectMusicPortDownload_AddRef(p) (p)->lpVtbl->AddRef(p)
633#define IDirectMusicPortDownload_Release(p) (p)->lpVtbl->Release(p)
635#define IDirectMusicPortDownload_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
636#define IDirectMusicPortDownload_AllocateBuffer(p,a,b) (p)->lpVtbl->AllocateBuffer(p,a,b)
637#define IDirectMusicPortDownload_GetDLId(p,a,b) (p)->lpVtbl->GetDLId(p,a,b)
638#define IDirectMusicPortDownload_GetAppend(p,a) (p)->lpVtbl->GetAppend(p,a)
639#define IDirectMusicPortDownload_Download(p,a) (p)->lpVtbl->Download(p,a)
640#define IDirectMusicPortDownload_Unload(p,a) (p)->lpVtbl->GetBuffer(p,a)
647#define INTERFACE IDirectMusicPort
658 STDMETHOD(DownloadInstrument)(
THIS_ IDirectMusicInstrument *pInstrument, IDirectMusicDownloadedInstrument **ppDownloadedInstrument,
DMUS_NOTERANGE *pNoteRanges,
DWORD dwNumNoteRanges)
PURE;
659 STDMETHOD(UnloadInstrument)(
THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument)
PURE;
675#if !defined(__cplusplus) || defined(CINTERFACE)
677#define IDirectMusicPort_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
678#define IDirectMusicPort_AddRef(p) (p)->lpVtbl->AddRef(p)
679#define IDirectMusicPort_Release(p) (p)->lpVtbl->Release(p)
681#define IDirectMusicPort_PlayBuffer(p,a) (p)->lpVtbl->PlayBuffer(p,a)
682#define IDirectMusicPort_SetReadNotificationHandle(p,a) (p)->lpVtbl->SetReadNotificationHandle(p,a)
683#define IDirectMusicPort_Read(p,a) (p)->lpVtbl->Read(p,a)
684#define IDirectMusicPort_DownloadInstrument(p,a,b,c,d) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d)
685#define IDirectMusicPort_UnloadInstrument(p,a) (p)->lpVtbl->UnloadInstrument(p,a)
686#define IDirectMusicPort_GetLatencyClock(p,a) (p)->lpVtbl->GetLatencyClock(p,a)
687#define IDirectMusicPort_GetRunningStats(p,a) (p)->lpVtbl->GetRunningStats(p,a)
688#define IDirectMusicPort_Compact(p) (p)->lpVtbl->Compact(p)
689#define IDirectMusicPort_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
690#define IDirectMusicPort_DeviceIoControl(p,a,b,c,d,e,f,g) (p)->lpVtbl->DeviceIoControl(p,a,b,c,d,e,f,g)
691#define IDirectMusicPort_SetNumChannelGroups(p,a) (p)->lpVtbl->SetNumChannelGroups(p,a)
692#define IDirectMusicPort_GetNumChannelGroups(p,a) (p)->lpVtbl->GetNumChannelGroups(p,a)
693#define IDirectMusicPort_Activate(p,a) (p)->lpVtbl->Activate(p,a)
694#define IDirectMusicPort_SetChannelPriority(p,a,b,c) (p)->lpVtbl->SetChannelPriority(p,a,b,c)
695#define IDirectMusicPort_GetChannelPriority(p,a,b,c) (p)->lpVtbl->GetChannelPriority(p,a,b,c)
696#define IDirectMusicPort_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
697#define IDirectMusicPort_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c)
704#define INTERFACE IDirectMusicThru
716#if !defined(__cplusplus) || defined(CINTERFACE)
718#define IDirectMusicThru_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
719#define IDirectMusicThru_AddRef(p) (p)->lpVtbl->AddRef(p)
720#define IDirectMusicThru_Release(p) (p)->lpVtbl->Release(p)
722#define IDirectMusicThru_ThruChannel(p,a,b,c,d,e) (p)->lpVtbl->ThruChannel(p,a,b,c,d,e)
726#ifndef __IReferenceClock_INTERFACE_DEFINED__
727#define __IReferenceClock_INTERFACE_DEFINED__
728DEFINE_GUID(IID_IReferenceClock,0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70);
733#define INTERFACE IReferenceClock
748#if !defined(__cplusplus) || defined(CINTERFACE)
750#define IReferenceClock_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
751#define IReferenceClock_AddRef(p) (p)->lpVtbl->AddRef(p)
752#define IReferenceClock_Release(p) (p)->lpVtbl->Release(p)
754#define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a)
755#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d)
756#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d)
757#define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
#define DECLARE_INTERFACE_(i, b)
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
static ULONGLONG startTime
REFERENCE_TIME * LPREFERENCE_TIME
struct _DMUS_CLOCKINFO8 * LPDMUS_CLOCKINFO8
struct IDirectMusicPortDownload * LPDIRECTMUSICPORTDOWNLOAD8
struct IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument8
ULONGLONG * LPSAMPLE_TIME
struct IDirectMusicDownload * LPDIRECTMUSICDOWNLOAD
struct _DMUS_WAVES_REVERB_PARAMS * LPDMUS_WAVES_REVERB_PARAMS
DMUS_PORTPARAMS8 * LPDMUS_PORTPARAMS
struct IDirectMusicCollection * LPDIRECTMUSICCOLLECTION8
struct IDirectMusic * LPDIRECTMUSIC
DMUS_CLOCKINFO8 DMUS_CLOCKINFO
struct IDirectMusicPort * LPDIRECTMUSICPORT
struct IDirectMusicInstrument IDirectMusicInstrument8
struct IDirectMusicPort * LPDIRECTMUSICPORT8
struct IDirectMusicInstrument * LPDIRECTMUSICINSTRUMENT8
ULONGLONG * LPSAMPLE_POSITION
struct IDirectMusicBuffer IDirectMusicBuffer8
struct _DMUS_SYNTHSTATS * LPDMUS_SYNTHSTATS
struct IDirectMusicBuffer * LPDIRECTMUSICBUFFER8
struct _DMUS_BUFFERDESC * LPDMUS_BUFFERDESC
struct IDirectMusicCollection * LPDIRECTMUSICCOLLECTION
struct IDirectMusicCollection IDirectMusicCollection8
struct IDirectMusicPortDownload IDirectMusicPortDownload8
struct IDirectMusicThru IDirectMusicThru8
struct _DMUS_PORTCAPS * LPDMUS_PORTCAPS
DMUS_CLOCKINFO8 * LPDMUS_CLOCKINFO
DMUS_PORTPARAMS8 DMUS_PORTPARAMS
struct IDirectMusicDownload * LPDIRECTMUSICDOWNLOAD8
struct IDirectMusicPortDownload * LPDIRECTMUSICPORTDOWNLOAD
struct IDirectMusicThru * LPDIRECTMUSICTHRU
ULONGLONG SAMPLE_POSITION
struct IDirectMusicThru * LPDIRECTMUSICTHRU8
#define DMUS_MAX_DESCRIPTION
struct IDirectMusic8 * LPDIRECTMUSIC8
struct _DMUS_PORTPARAMS8 * LPDMUS_PORTPARAMS8
struct IDirectMusicDownloadedInstrument * LPDIRECTMUSICDOWNLOADEDINSTRUMENT
struct IDirectMusicPort IDirectMusicPort8
struct IReferenceClock * LPREFERENCECLOCK
struct IDirectMusicInstrument * LPDIRECTMUSICINSTRUMENT
struct IDirectMusicDownload IDirectMusicDownload8
struct _DMUS_CLOCKINFO7 * LPDMUS_CLOCKINFO7
struct IDirectMusicDownloadedInstrument * LPDIRECTMUSICDOWNLOADEDINSTRUMENT8
struct _DMUS_SYNTHSTATS8 * LPDMUS_SYNTHSTATS8
struct IDirectMusicBuffer * LPDIRECTMUSICBUFFER
struct _DMUS_PORTPARAMS * LPDMUS_PORTPARAMS7
struct IDirectSoundBuffer * LPDIRECTSOUNDBUFFER
struct IDirectSound * LPDIRECTSOUND
static VOID NTAPI Unload(PDRIVER_OBJECT DriverObject)
return pMemory GetBuffer()
HRESULT AdviseTime([in] REFERENCE_TIME baseTime, [in] REFERENCE_TIME streamTime, [in] HEVENT hEvent, [out] DWORD_PTR *pdwAdviseCookie)
HRESULT Unadvise([in] DWORD_PTR dwAdviseCookie)
HRESULT AdvisePeriodic([in] REFERENCE_TIME startTime, [in] REFERENCE_TIME periodTime, [in] HSEMAPHORE hSemaphore, [out] DWORD_PTR *pdwAdviseCookie)
PSDBQUERYRESULT_VISTA PVOID * ppData
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static HMODULE MODULEINFO DWORD cb
static HRESULT QueryInterface(REFIID, void **)
static ULONG WINAPI AddRef(IStream *iface)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED lpOverlapped
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
WCHAR wszDescription[DMUS_MAX_DESCRIPTION]
WCHAR wszDescription[DMUS_MAX_DESCRIPTION]
WCHAR wszDescription[DMUS_MAX_DESCRIPTION]
_In_ PCCERT_CONTEXT _In_opt_ LPFILETIME pTime
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
_In_ DWORD _In_ DWORD _In_ DWORD _Out_ LPDWORD lpBytesReturned
_In_ DWORD dwIoControlCode