20#ifndef __WINE_DMUSIC_CORE_H
21#define __WINE_DMUSIC_CORE_H
27#define COM_NO_WINDOWS_H
49DEFINE_GUID(CLSID_DirectMusic, 0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21);
50DEFINE_GUID(CLSID_DirectMusicCollection, 0x480ff4b0,0x28b2,0x11d1,0xbe,0xf7,0x00,0xc0,0x4f,0xbf,0x8f,0xef);
51DEFINE_GUID(CLSID_DirectMusicSynth, 0x58c2b4d0,0x46e7,0x11d1,0x89,0xac,0x00,0xa0,0xc9,0x05,0x41,0x29);
54DEFINE_GUID(IID_IDirectMusic, 0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12);
55DEFINE_GUID(IID_IDirectMusic2, 0x6fc2cae1,0xbc78,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
56DEFINE_GUID(IID_IDirectMusic8, 0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97);
57DEFINE_GUID(IID_IDirectMusicBuffer, 0xd2ac2878,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
58DEFINE_GUID(IID_IDirectMusicCollection, 0xd2ac287c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
59DEFINE_GUID(IID_IDirectMusicDownload, 0xd2ac287b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
60DEFINE_GUID(IID_IDirectMusicDownloadedInstrument, 0xd2ac287e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
61DEFINE_GUID(IID_IDirectMusicInstrument, 0xd2ac287d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
62DEFINE_GUID(IID_IDirectMusicPort, 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
63DEFINE_GUID(IID_IDirectMusicPortDownload, 0xd2ac287a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd);
64DEFINE_GUID(IID_IDirectMusicThru, 0xced153e7,0x3606,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
66#define IID_IDirectMusicCollection8 IID_IDirectMusicCollection
67#define IID_IDirectMusicDownload8 IID_IDirectMusicDownload
68#define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument
69#define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument
70#define IID_IDirectMusicPort8 IID_IDirectMusicPort
71#define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload
72#define IID_IDirectMusicThru8 IID_IDirectMusicThru
75DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware, 0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
76DEFINE_GUID(GUID_DMUS_PROP_GS_Capable, 0x6496aba2,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
77DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware, 0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
78DEFINE_GUID(GUID_DMUS_PROP_DLS1, 0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
79DEFINE_GUID(GUID_DMUS_PROP_DLS2, 0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
80DEFINE_GUID(GUID_DMUS_PROP_Effects, 0xcda8d611,0x684a,0x11d2,0x87,0x1e,0x00,0x60,0x08,0x93,0xb1,0xbd);
81DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2, 0x865fd372,0x9f67,0x11d2,0x87,0x2a,0x00,0x60,0x08,0x93,0xb1,0xbd);
82DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps, 0xcfa7cdc2,0x00a1,0x11d2,0xaa,0xd5,0x00,0x00,0xf8,0x75,0xac,0x12);
83DEFINE_GUID(GUID_DMUS_PROP_MemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
84DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
85DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate, 0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x00,0x60,0x08,0x33,0xdb,0xd8);
86DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND, 0x0aa97844,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
87DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE, 0x0aa97845,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd);
88DEFINE_GUID(GUID_DMUS_PROP_Volume, 0xfedfae25,0xe46e,0x11d1,0xaa,0xce,0x00,0x00,0xf8,0x75,0xac,0x12);
89DEFINE_GUID(GUID_DMUS_PROP_WavesReverb, 0x04cb5622,0x32e5,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
90DEFINE_GUID(GUID_DMUS_PROP_WriteLatency, 0x268a0fa0,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
91DEFINE_GUID(GUID_DMUS_PROP_WritePeriod, 0x268a0fa1,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
92DEFINE_GUID(GUID_DMUS_PROP_XG_Capable, 0x6496aba1,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6);
93DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware, 0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12);
127#ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_
128#define _DIRECTAUDIO_PRIORITIES_DEFINED_
130#define DAUD_CRITICAL_VOICE_PRIORITY 0xF0000000
131#define DAUD_HIGH_VOICE_PRIORITY 0xC0000000
132#define DAUD_STANDARD_VOICE_PRIORITY 0x80000000
133#define DAUD_LOW_VOICE_PRIORITY 0x40000000
134#define DAUD_PERSIST_VOICE_PRIORITY 0x10000000
136#define DAUD_CHAN1_VOICE_PRIORITY_OFFSET 0x0000000E
137#define DAUD_CHAN2_VOICE_PRIORITY_OFFSET 0x0000000D
138#define DAUD_CHAN3_VOICE_PRIORITY_OFFSET 0x0000000C
139#define DAUD_CHAN4_VOICE_PRIORITY_OFFSET 0x0000000B
140#define DAUD_CHAN5_VOICE_PRIORITY_OFFSET 0x0000000A
141#define DAUD_CHAN6_VOICE_PRIORITY_OFFSET 0x00000009
142#define DAUD_CHAN7_VOICE_PRIORITY_OFFSET 0x00000008
143#define DAUD_CHAN8_VOICE_PRIORITY_OFFSET 0x00000007
144#define DAUD_CHAN9_VOICE_PRIORITY_OFFSET 0x00000006
145#define DAUD_CHAN10_VOICE_PRIORITY_OFFSET 0x0000000F
146#define DAUD_CHAN11_VOICE_PRIORITY_OFFSET 0x00000005
147#define DAUD_CHAN12_VOICE_PRIORITY_OFFSET 0x00000004
148#define DAUD_CHAN13_VOICE_PRIORITY_OFFSET 0x00000003
149#define DAUD_CHAN14_VOICE_PRIORITY_OFFSET 0x00000002
150#define DAUD_CHAN15_VOICE_PRIORITY_OFFSET 0x00000001
151#define DAUD_CHAN16_VOICE_PRIORITY_OFFSET 0x00000000
153#define DAUD_CHAN1_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)
154#define DAUD_CHAN2_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET)
155#define DAUD_CHAN3_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET)
156#define DAUD_CHAN4_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET)
157#define DAUD_CHAN5_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET)
158#define DAUD_CHAN6_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET)
159#define DAUD_CHAN7_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET)
160#define DAUD_CHAN8_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET)
161#define DAUD_CHAN9_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET)
162#define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET)
163#define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET)
164#define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET)
165#define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET)
166#define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET)
167#define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET)
168#define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET)
171#define DMUS_CLOCKF_GLOBAL 0x1
173#define DMUS_EFFECT_NONE 0x0
174#define DMUS_EFFECT_REVERB 0x1
175#define DMUS_EFFECT_CHORUS 0x2
176#define DMUS_EFFECT_DELAY 0x4
178#define DMUS_MAX_DESCRIPTION 0x80
179#define DMUS_MAX_DRIVER 0x80
181#define DMUS_PC_INPUTCLASS 0x0
182#define DMUS_PC_OUTPUTCLASS 0x1
184#define DMUS_PC_DLS 0x00000001
185#define DMUS_PC_EXTERNAL 0x00000002
186#define DMUS_PC_SOFTWARESYNTH 0x00000004
187#define DMUS_PC_MEMORYSIZEFIXED 0x00000008
188#define DMUS_PC_GMINHARDWARE 0x00000010
189#define DMUS_PC_GSINHARDWARE 0x00000020
190#define DMUS_PC_XGINHARDWARE 0x00000040
191#define DMUS_PC_DIRECTSOUND 0x00000080
192#define DMUS_PC_SHAREABLE 0x00000100
193#define DMUS_PC_DLS2 0x00000200
194#define DMUS_PC_AUDIOPATH 0x00000400
195#define DMUS_PC_WAVE 0x00000800
196#define DMUS_PC_SYSTEMMEMORY 0x7FFFFFFF
198#define DMUS_PORT_WINMM_DRIVER 0x0
199#define DMUS_PORT_USER_MODE_SYNTH 0x1
200#define DMUS_PORT_KERNEL_MODE 0x2
202#define DMUS_PORT_FEATURE_AUDIOPATH 0x1
203#define DMUS_PORT_FEATURE_STREAMING 0x2
205#define DMUS_PORTPARAMS_VOICES 0x01
206#define DMUS_PORTPARAMS_CHANNELGROUPS 0x02
207#define DMUS_PORTPARAMS_AUDIOCHANNELS 0x04
208#define DMUS_PORTPARAMS_SAMPLERATE 0x08
209#define DMUS_PORTPARAMS_EFFECTS 0x20
210#define DMUS_PORTPARAMS_SHARE 0x40
211#define DMUS_PORTPARAMS_FEATURES 0x80
213#define DMUS_VOLUME_MAX 2000
214#define DMUS_VOLUME_MIN -20000
216#define DMUS_SYNTHSTATS_VOICES 0x01
217#define DMUS_SYNTHSTATS_TOTAL_CPU 0x02
218#define DMUS_SYNTHSTATS_CPU_PER_VOICE 0x04
219#define DMUS_SYNTHSTATS_LOST_NOTES 0x08
220#define DMUS_SYNTHSTATS_PEAK_VOLUME 0x10
221#define DMUS_SYNTHSTATS_FREE_MEMORY 0x20
222#define DMUS_SYNTHSTATS_SYSTEMMEMORY DMUS_PC_SYSTEMMEMORY
224#define DSBUSID_FIRST_SPKR_LOC 0x00000000
225#define DSBUSID_FRONT_LEFT 0x00000000
226#define DSBUSID_LEFT 0x00000000
227#define DSBUSID_FRONT_RIGHT 0x00000001
228#define DSBUSID_RIGHT 0x00000001
229#define DSBUSID_FRONT_CENTER 0x00000002
230#define DSBUSID_LOW_FREQUENCY 0x00000003
231#define DSBUSID_BACK_LEFT 0x00000004
232#define DSBUSID_BACK_RIGHT 0x00000005
233#define DSBUSID_FRONT_LEFT_OF_CENTER 0x00000006
234#define DSBUSID_FRONT_RIGHT_OF_CENTER 0x00000007
235#define DSBUSID_BACK_CENTER 0x00000008
236#define DSBUSID_SIDE_LEFT 0x00000009
237#define DSBUSID_SIDE_RIGHT 0x0000000A
238#define DSBUSID_TOP_CENTER 0x0000000B
239#define DSBUSID_TOP_FRONT_LEFT 0x0000000C
240#define DSBUSID_TOP_FRONT_CENTER 0x0000000D
241#define DSBUSID_TOP_FRONT_RIGHT 0x0000000E
242#define DSBUSID_TOP_BACK_LEFT 0x0000000F
243#define DSBUSID_TOP_BACK_CENTER 0x00000010
244#define DSBUSID_TOP_BACK_RIGHT 0x011
245#define DSBUSID_LAST_SPKR_LOC 0x00000011
246#define DSBUSID_IS_SPKR_LOC(id) (((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC))
248#define DSBUSID_REVERB_SEND 0x00000040
249#define DSBUSID_CHORUS_SEND 0x00000041
251#define DSBUSID_DYNAMIC_0 0x00000200
253#define DSBUSID_NULL 0xFFFFFFFF
375#define INTERFACE IDirectMusic
395#if !defined(__cplusplus) || defined(CINTERFACE)
397#define IDirectMusic_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
398#define IDirectMusic_AddRef(p) (p)->lpVtbl->AddRef(p)
399#define IDirectMusic_Release(p) (p)->lpVtbl->Release(p)
401#define IDirectMusic_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b)
402#define IDirectMusic_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
403#define IDirectMusic_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d)
404#define IDirectMusic_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b)
405#define IDirectMusic_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b)
406#define IDirectMusic_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a)
407#define IDirectMusic_Activate(p,a) (p)->lpVtbl->Activate(p,a)
408#define IDirectMusic_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a)
409#define IDirectMusic_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
416#define INTERFACE IDirectMusic8
438#if !defined(__cplusplus) || defined(CINTERFACE)
440#define IDirectMusic8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
441#define IDirectMusic8_AddRef(p) (p)->lpVtbl->AddRef(p)
442#define IDirectMusic8_Release(p) (p)->lpVtbl->Release(p)
444#define IDirectMusic8_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b)
445#define IDirectMusic8_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c)
446#define IDirectMusic8_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d)
447#define IDirectMusic8_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b)
448#define IDirectMusic8_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b)
449#define IDirectMusic8_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a)
450#define IDirectMusic8_Activate(p,a) (p)->lpVtbl->Activate(p,a)
451#define IDirectMusic8_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a)
452#define IDirectMusic8_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
454#define IDirectMusic8_SetExternalMasterClock(p,a) (p)->lpVtbl->SetExternalMasterClock(p,a)
461#define INTERFACE IDirectMusicBuffer
485#if !defined(__cplusplus) || defined(CINTERFACE)
487#define IDirectMusicBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
488#define IDirectMusicBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
489#define IDirectMusicBuffer_Release(p) (p)->lpVtbl->Release(p)
491#define IDirectMusicBuffer_Flush(p) (p)->lpVtbl->Flush(p)
492#define IDirectMusicBuffer_TotalTime(p,a) (p)->lpVtbl->TotalTime(p,a)
493#define IDirectMusicBuffer_PackStructured(p,a,b,c) (p)->lpVtbl->PackStructured(p,a,b,c)
494#define IDirectMusicBuffer_PackUnstructured(p,a,b,c,d) (p)->lpVtbl->PackUnstructured(p,a,b,c,d)
495#define IDirectMusicBuffer_ResetReadPtr(p) (p)->lpVtbl->ResetReadPtr(p)
496#define IDirectMusicBuffer_GetNextEvent(p,a,b,c,d) (p)->lpVtbl->GetNextEvent(p,a,b,c,d)
497#define IDirectMusicBuffer_GetRawBufferPtr(p,a) (p)->lpVtbl->GetRawBufferPtr(p,a)
498#define IDirectMusicBuffer_GetStartTime(p,a) (p)->lpVtbl->GetStartTime(p,a)
499#define IDirectMusicBuffer_GetUsedBytes(p,a) (p)->lpVtbl->GetUsedBytes(p,a)
500#define IDirectMusicBuffer_GetMaxBytes(p,a) (p)->lpVtbl->GetMaxBytes(p,a)
501#define IDirectMusicBuffer_GetBufferFormat(p,a) (p)->lpVtbl->GetBufferFormat(p,a)
502#define IDirectMusicBuffer_SetStartTime(p,a) (p)->lpVtbl->SetStartTime(p,a)
503#define IDirectMusicBuffer_SetUsedBytes(p,a) (p)->lpVtbl->SetUsedBytes(p,a)
510#define INTERFACE IDirectMusicInstrument
523#if !defined(__cplusplus) || defined(CINTERFACE)
525#define IDirectMusicInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
526#define IDirectMusicInstrument_AddRef(p) (p)->lpVtbl->AddRef(p)
527#define IDirectMusicInstrument_Release(p) (p)->lpVtbl->Release(p)
529#define IDirectMusicInstrument_GetPatch(p,a) (p)->lpVtbl->GetPatch(p,a)
530#define IDirectMusicInstrument_SetPatch(p,a) (p)->lpVtbl->SetPatch(p,a)
537#define INTERFACE IDirectMusicDownloadedInstrument
548#if !defined(__cplusplus) || defined(CINTERFACE)
550#define IDirectMusicDownloadedInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
551#define IDirectMusicDownloadedInstrument_AddRef(p) (p)->lpVtbl->AddRef(p)
552#define IDirectMusicDownloadedInstrument_Release(p) (p)->lpVtbl->Release(p)
561#define INTERFACE IDirectMusicCollection
574#if !defined(__cplusplus) || defined(CINTERFACE)
576#define IDirectMusicCollection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
577#define IDirectMusicCollection_AddRef(p) (p)->lpVtbl->AddRef(p)
578#define IDirectMusicCollection_Release(p) (p)->lpVtbl->Release(p)
580#define IDirectMusicCollection_GetInstrument(p,a,b) (p)->lpVtbl->GetInstrument(p,a,b)
581#define IDirectMusicCollection_EnumInstrument(p,a,b,c,d) (p)->lpVtbl->EnumInstrument(p,a,b,c,d)
588#define INTERFACE IDirectMusicDownload
600#if !defined(__cplusplus) || defined(CINTERFACE)
602#define IDirectMusicDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
603#define IDirectMusicDownload_AddRef(p) (p)->lpVtbl->AddRef(p)
604#define IDirectMusicDownload_Release(p) (p)->lpVtbl->Release(p)
606#define IDirectMusicDownload_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
613#define INTERFACE IDirectMusicPortDownload
630#if !defined(__cplusplus) || defined(CINTERFACE)
632#define IDirectMusicPortDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
633#define IDirectMusicPortDownload_AddRef(p) (p)->lpVtbl->AddRef(p)
634#define IDirectMusicPortDownload_Release(p) (p)->lpVtbl->Release(p)
636#define IDirectMusicPortDownload_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
637#define IDirectMusicPortDownload_AllocateBuffer(p,a,b) (p)->lpVtbl->AllocateBuffer(p,a,b)
638#define IDirectMusicPortDownload_GetDLId(p,a,b) (p)->lpVtbl->GetDLId(p,a,b)
639#define IDirectMusicPortDownload_GetAppend(p,a) (p)->lpVtbl->GetAppend(p,a)
640#define IDirectMusicPortDownload_Download(p,a) (p)->lpVtbl->Download(p,a)
641#define IDirectMusicPortDownload_Unload(p,a) (p)->lpVtbl->Unload(p,a)
648#define INTERFACE IDirectMusicPort
659 STDMETHOD(DownloadInstrument)(
THIS_ IDirectMusicInstrument *pInstrument, IDirectMusicDownloadedInstrument **ppDownloadedInstrument,
DMUS_NOTERANGE *pNoteRanges,
DWORD dwNumNoteRanges)
PURE;
660 STDMETHOD(UnloadInstrument)(
THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument)
PURE;
676#if !defined(__cplusplus) || defined(CINTERFACE)
678#define IDirectMusicPort_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
679#define IDirectMusicPort_AddRef(p) (p)->lpVtbl->AddRef(p)
680#define IDirectMusicPort_Release(p) (p)->lpVtbl->Release(p)
682#define IDirectMusicPort_PlayBuffer(p,a) (p)->lpVtbl->PlayBuffer(p,a)
683#define IDirectMusicPort_SetReadNotificationHandle(p,a) (p)->lpVtbl->SetReadNotificationHandle(p,a)
684#define IDirectMusicPort_Read(p,a) (p)->lpVtbl->Read(p,a)
685#define IDirectMusicPort_DownloadInstrument(p,a,b,c,d) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d)
686#define IDirectMusicPort_UnloadInstrument(p,a) (p)->lpVtbl->UnloadInstrument(p,a)
687#define IDirectMusicPort_GetLatencyClock(p,a) (p)->lpVtbl->GetLatencyClock(p,a)
688#define IDirectMusicPort_GetRunningStats(p,a) (p)->lpVtbl->GetRunningStats(p,a)
689#define IDirectMusicPort_Compact(p) (p)->lpVtbl->Compact(p)
690#define IDirectMusicPort_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
691#define IDirectMusicPort_DeviceIoControl(p,a,b,c,d,e,f,g) (p)->lpVtbl->DeviceIoControl(p,a,b,c,d,e,f,g)
692#define IDirectMusicPort_SetNumChannelGroups(p,a) (p)->lpVtbl->SetNumChannelGroups(p,a)
693#define IDirectMusicPort_GetNumChannelGroups(p,a) (p)->lpVtbl->GetNumChannelGroups(p,a)
694#define IDirectMusicPort_Activate(p,a) (p)->lpVtbl->Activate(p,a)
695#define IDirectMusicPort_SetChannelPriority(p,a,b,c) (p)->lpVtbl->SetChannelPriority(p,a,b,c)
696#define IDirectMusicPort_GetChannelPriority(p,a,b,c) (p)->lpVtbl->GetChannelPriority(p,a,b,c)
697#define IDirectMusicPort_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b)
698#define IDirectMusicPort_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c)
705#define INTERFACE IDirectMusicThru
717#if !defined(__cplusplus) || defined(CINTERFACE)
719#define IDirectMusicThru_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
720#define IDirectMusicThru_AddRef(p) (p)->lpVtbl->AddRef(p)
721#define IDirectMusicThru_Release(p) (p)->lpVtbl->Release(p)
723#define IDirectMusicThru_ThruChannel(p,a,b,c,d,e) (p)->lpVtbl->ThruChannel(p,a,b,c,d,e)
#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)
_Check_return_ _In_ PQUERY_INTERFACE QueryInterface
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()
PSDBQUERYRESULT_VISTA PVOID * ppData
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
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_ DWORD _In_ DWORD _In_ DWORD _Out_ LPDWORD lpBytesReturned
_In_ DWORD dwIoControlCode