Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygendmusicc.h
Go to the documentation of this file.
00001 /* DirectMusic Core API Stuff 00002 * 00003 * Copyright (C) 2003-2004 Rok Mandeljc 00004 * 00005 * This program is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this program; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00018 */ 00019 00020 #ifndef __WINE_DMUSIC_CORE_H 00021 #define __WINE_DMUSIC_CORE_H 00022 00023 #ifndef __WINESRC__ 00024 #include <windows.h> 00025 #endif /* __WINESRC__ */ 00026 00027 #define COM_NO_WINDOWS_H 00028 #include <objbase.h> 00029 #include <mmsystem.h> 00030 00031 #include <dls1.h> 00032 #include <dmerror.h> 00033 #include <dmdls.h> 00034 #include <dsound.h> 00035 #include <dmusbuff.h> 00036 00037 #include <pshpack8.h> 00038 00039 #ifdef __cplusplus 00040 extern "C" { 00041 #endif 00042 00043 00044 /***************************************************************************** 00045 * Predeclare the interfaces 00046 */ 00047 /* CLSIDs */ 00048 DEFINE_GUID(CLSID_DirectMusic, 0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21); 00049 DEFINE_GUID(CLSID_DirectMusicCollection, 0x480ff4b0,0x28b2,0x11d1,0xbe,0xf7,0x00,0xc0,0x4f,0xbf,0x8f,0xef); 00050 DEFINE_GUID(CLSID_DirectMusicSynth, 0x58c2b4d0,0x46e7,0x11d1,0x89,0xac,0x00,0xa0,0xc9,0x05,0x41,0x29); 00051 00052 /* IIDs */ 00053 DEFINE_GUID(IID_IDirectMusic, 0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12); 00054 DEFINE_GUID(IID_IDirectMusic2, 0x6fc2cae1,0xbc78,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6); 00055 DEFINE_GUID(IID_IDirectMusic8, 0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97); 00056 DEFINE_GUID(IID_IDirectMusicBuffer, 0xd2ac2878,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd); 00057 DEFINE_GUID(IID_IDirectMusicCollection, 0xd2ac287c,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd); 00058 DEFINE_GUID(IID_IDirectMusicDownload, 0xd2ac287b,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd); 00059 DEFINE_GUID(IID_IDirectMusicDownloadedInstrument, 0xd2ac287e,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd); 00060 DEFINE_GUID(IID_IDirectMusicInstrument, 0xd2ac287d,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd); 00061 DEFINE_GUID(IID_IDirectMusicPort, 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12); 00062 DEFINE_GUID(IID_IDirectMusicPortDownload, 0xd2ac287a,0xb39b,0x11d1,0x87,0x04,0x00,0x60,0x08,0x93,0xb1,0xbd); 00063 DEFINE_GUID(IID_IDirectMusicThru, 0xced153e7,0x3606,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12); 00064 00065 #define IID_IDirectMusicCollection8 IID_IDirectMusicCollection 00066 #define IID_IDirectMusicDownload8 IID_IDirectMusicDownload 00067 #define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument 00068 #define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument 00069 #define IID_IDirectMusicPort8 IID_IDirectMusicPort 00070 #define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload 00071 #define IID_IDirectMusicThru8 IID_IDirectMusicThru 00072 00073 /* GUIDs - property set */ 00074 DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware, 0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12); 00075 DEFINE_GUID(GUID_DMUS_PROP_GS_Capable, 0x6496aba2,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6); 00076 DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware, 0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12); 00077 DEFINE_GUID(GUID_DMUS_PROP_DLS1, 0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12); 00078 DEFINE_GUID(GUID_DMUS_PROP_DLS2, 0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6); 00079 DEFINE_GUID(GUID_DMUS_PROP_Effects, 0xcda8d611,0x684a,0x11d2,0x87,0x1e,0x00,0x60,0x08,0x93,0xb1,0xbd); 00080 DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2, 0x865fd372,0x9f67,0x11d2,0x87,0x2a,0x00,0x60,0x08,0x93,0xb1,0xbd); 00081 DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps, 0xcfa7cdc2,0x00a1,0x11d2,0xaa,0xd5,0x00,0x00,0xf8,0x75,0xac,0x12); 00082 DEFINE_GUID(GUID_DMUS_PROP_MemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12); 00083 DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize, 0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12); 00084 DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate, 0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x00,0x60,0x08,0x33,0xdb,0xd8); 00085 DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND, 0x0aa97844,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd); 00086 DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE, 0x0aa97845,0xc877,0x11d1,0x87,0x0c,0x00,0x60,0x08,0x93,0xb1,0xbd); 00087 DEFINE_GUID(GUID_DMUS_PROP_Volume, 0xfedfae25,0xe46e,0x11d1,0xaa,0xce,0x00,0x00,0xf8,0x75,0xac,0x12); 00088 DEFINE_GUID(GUID_DMUS_PROP_WavesReverb, 0x04cb5622,0x32e5,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6); 00089 DEFINE_GUID(GUID_DMUS_PROP_WriteLatency, 0x268a0fa0,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6); 00090 DEFINE_GUID(GUID_DMUS_PROP_WritePeriod, 0x268a0fa1,0x60f2,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6); 00091 DEFINE_GUID(GUID_DMUS_PROP_XG_Capable, 0x6496aba1,0x61b0,0x11d2,0xaf,0xa6,0x00,0xaa,0x00,0x24,0xd8,0xb6); 00092 DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware, 0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12); 00093 00094 /* typedef definitions */ 00095 typedef struct IDirectMusic *LPDIRECTMUSIC; 00096 typedef struct IDirectMusic8 *LPDIRECTMUSIC8; 00097 typedef struct IDirectMusicBuffer *LPDIRECTMUSICBUFFER; 00098 typedef struct IDirectMusicBuffer IDirectMusicBuffer8, *LPDIRECTMUSICBUFFER8; 00099 typedef struct IDirectMusicInstrument *LPDIRECTMUSICINSTRUMENT; 00100 typedef struct IDirectMusicInstrument IDirectMusicInstrument8, *LPDIRECTMUSICINSTRUMENT8; 00101 typedef struct IDirectMusicDownloadedInstrument *LPDIRECTMUSICDOWNLOADEDINSTRUMENT; 00102 typedef struct IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument8, *LPDIRECTMUSICDOWNLOADEDINSTRUMENT8; 00103 typedef struct IDirectMusicCollection *LPDIRECTMUSICCOLLECTION; 00104 typedef struct IDirectMusicCollection IDirectMusicCollection8, *LPDIRECTMUSICCOLLECTION8; 00105 typedef struct IDirectMusicDownload *LPDIRECTMUSICDOWNLOAD; 00106 typedef struct IDirectMusicDownload IDirectMusicDownload8, *LPDIRECTMUSICDOWNLOAD8; 00107 typedef struct IDirectMusicPortDownload *LPDIRECTMUSICPORTDOWNLOAD; 00108 typedef struct IDirectMusicPortDownload IDirectMusicPortDownload8, *LPDIRECTMUSICPORTDOWNLOAD8; 00109 typedef struct IDirectMusicPort *LPDIRECTMUSICPORT; 00110 typedef struct IDirectMusicPort IDirectMusicPort8, *LPDIRECTMUSICPORT8; 00111 typedef struct IDirectMusicThru *LPDIRECTMUSICTHRU; 00112 typedef struct IDirectMusicThru IDirectMusicThru8, *LPDIRECTMUSICTHRU8; 00113 typedef struct IReferenceClock *LPREFERENCECLOCK; 00114 00115 00116 /***************************************************************************** 00117 * Typedef definitions 00118 */ 00119 typedef ULONGLONG SAMPLE_TIME, *LPSAMPLE_TIME; 00120 typedef ULONGLONG SAMPLE_POSITION, *LPSAMPLE_POSITION; 00121 00122 00123 /***************************************************************************** 00124 * Flags 00125 */ 00126 #ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_ 00127 #define _DIRECTAUDIO_PRIORITIES_DEFINED_ 00128 00129 #define DAUD_CRITICAL_VOICE_PRIORITY 0xF0000000 00130 #define DAUD_HIGH_VOICE_PRIORITY 0xC0000000 00131 #define DAUD_STANDARD_VOICE_PRIORITY 0x80000000 00132 #define DAUD_LOW_VOICE_PRIORITY 0x40000000 00133 #define DAUD_PERSIST_VOICE_PRIORITY 0x10000000 00134 00135 #define DAUD_CHAN1_VOICE_PRIORITY_OFFSET 0x0000000E 00136 #define DAUD_CHAN2_VOICE_PRIORITY_OFFSET 0x0000000D 00137 #define DAUD_CHAN3_VOICE_PRIORITY_OFFSET 0x0000000C 00138 #define DAUD_CHAN4_VOICE_PRIORITY_OFFSET 0x0000000B 00139 #define DAUD_CHAN5_VOICE_PRIORITY_OFFSET 0x0000000A 00140 #define DAUD_CHAN6_VOICE_PRIORITY_OFFSET 0x00000009 00141 #define DAUD_CHAN7_VOICE_PRIORITY_OFFSET 0x00000008 00142 #define DAUD_CHAN8_VOICE_PRIORITY_OFFSET 0x00000007 00143 #define DAUD_CHAN9_VOICE_PRIORITY_OFFSET 0x00000006 00144 #define DAUD_CHAN10_VOICE_PRIORITY_OFFSET 0x0000000F 00145 #define DAUD_CHAN11_VOICE_PRIORITY_OFFSET 0x00000005 00146 #define DAUD_CHAN12_VOICE_PRIORITY_OFFSET 0x00000004 00147 #define DAUD_CHAN13_VOICE_PRIORITY_OFFSET 0x00000003 00148 #define DAUD_CHAN14_VOICE_PRIORITY_OFFSET 0x00000002 00149 #define DAUD_CHAN15_VOICE_PRIORITY_OFFSET 0x00000001 00150 #define DAUD_CHAN16_VOICE_PRIORITY_OFFSET 0x00000000 00151 00152 #define DAUD_CHAN1_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET) 00153 #define DAUD_CHAN2_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET) 00154 #define DAUD_CHAN3_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET) 00155 #define DAUD_CHAN4_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET) 00156 #define DAUD_CHAN5_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET) 00157 #define DAUD_CHAN6_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET) 00158 #define DAUD_CHAN7_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET) 00159 #define DAUD_CHAN8_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET) 00160 #define DAUD_CHAN9_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET) 00161 #define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET) 00162 #define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET) 00163 #define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET) 00164 #define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET) 00165 #define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET) 00166 #define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET) 00167 #define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET) 00168 #endif /* _DIRECTAUDIO_PRIORITIES_DEFINED_ */ 00169 00170 #define DMUS_CLOCKF_GLOBAL 0x1 00171 00172 #define DMUS_EFFECT_NONE 0x0 00173 #define DMUS_EFFECT_REVERB 0x1 00174 #define DMUS_EFFECT_CHORUS 0x2 00175 #define DMUS_EFFECT_DELAY 0x4 00176 00177 #define DMUS_MAX_DESCRIPTION 0x80 00178 #define DMUS_MAX_DRIVER 0x80 00179 00180 #define DMUS_PC_INPUTCLASS 0x0 00181 #define DMUS_PC_OUTPUTCLASS 0x1 00182 00183 #define DMUS_PC_DLS 0x00000001 00184 #define DMUS_PC_EXTERNAL 0x00000002 00185 #define DMUS_PC_SOFTWARESYNTH 0x00000004 00186 #define DMUS_PC_MEMORYSIZEFIXED 0x00000008 00187 #define DMUS_PC_GMINHARDWARE 0x00000010 00188 #define DMUS_PC_GSINHARDWARE 0x00000020 00189 #define DMUS_PC_XGINHARDWARE 0x00000040 00190 #define DMUS_PC_DIRECTSOUND 0x00000080 00191 #define DMUS_PC_SHAREABLE 0x00000100 00192 #define DMUS_PC_DLS2 0x00000200 00193 #define DMUS_PC_AUDIOPATH 0x00000400 00194 #define DMUS_PC_WAVE 0x00000800 00195 #define DMUS_PC_SYSTEMMEMORY 0x7FFFFFFF 00196 00197 #define DMUS_PORT_WINMM_DRIVER 0x0 00198 #define DMUS_PORT_USER_MODE_SYNTH 0x1 00199 #define DMUS_PORT_KERNEL_MODE 0x2 00200 00201 #define DMUS_PORT_FEATURE_AUDIOPATH 0x1 00202 #define DMUS_PORT_FEATURE_STREAMING 0x2 00203 00204 #define DMUS_PORTPARAMS_VOICES 0x01 00205 #define DMUS_PORTPARAMS_CHANNELGROUPS 0x02 00206 #define DMUS_PORTPARAMS_AUDIOCHANNELS 0x04 00207 #define DMUS_PORTPARAMS_SAMPLERATE 0x08 00208 #define DMUS_PORTPARAMS_EFFECTS 0x20 00209 #define DMUS_PORTPARAMS_SHARE 0x40 00210 #define DMUS_PORTPARAMS_FEATURES 0x80 00211 00212 #define DMUS_VOLUME_MAX 2000 00213 #define DMUS_VOLUME_MIN -20000 00214 00215 #define DMUS_SYNTHSTATS_VOICES 0x01 00216 #define DMUS_SYNTHSTATS_TOTAL_CPU 0x02 00217 #define DMUS_SYNTHSTATS_CPU_PER_VOICE 0x04 00218 #define DMUS_SYNTHSTATS_LOST_NOTES 0x08 00219 #define DMUS_SYNTHSTATS_PEAK_VOLUME 0x10 00220 #define DMUS_SYNTHSTATS_FREE_MEMORY 0x20 00221 #define DMUS_SYNTHSTATS_SYSTEMMEMORY DMUS_PC_SYSTEMMEMORY 00222 00223 #define DSBUSID_FIRST_SPKR_LOC 0x00000000 00224 #define DSBUSID_FRONT_LEFT 0x00000000 00225 #define DSBUSID_LEFT 0x00000000 00226 #define DSBUSID_FRONT_RIGHT 0x00000001 00227 #define DSBUSID_RIGHT 0x00000001 00228 #define DSBUSID_FRONT_CENTER 0x00000002 00229 #define DSBUSID_LOW_FREQUENCY 0x00000003 00230 #define DSBUSID_BACK_LEFT 0x00000004 00231 #define DSBUSID_BACK_RIGHT 0x00000005 00232 #define DSBUSID_FRONT_LEFT_OF_CENTER 0x00000006 00233 #define DSBUSID_FRONT_RIGHT_OF_CENTER 0x00000007 00234 #define DSBUSID_BACK_CENTER 0x00000008 00235 #define DSBUSID_SIDE_LEFT 0x00000009 00236 #define DSBUSID_SIDE_RIGHT 0x0000000A 00237 #define DSBUSID_TOP_CENTER 0x0000000B 00238 #define DSBUSID_TOP_FRONT_LEFT 0x0000000C 00239 #define DSBUSID_TOP_FRONT_CENTER 0x0000000D 00240 #define DSBUSID_TOP_FRONT_RIGHT 0x0000000E 00241 #define DSBUSID_TOP_BACK_LEFT 0x0000000F 00242 #define DSBUSID_TOP_BACK_CENTER 0x00000010 00243 #define DSBUSID_TOP_BACK_RIGHT 0x011 00244 #define DSBUSID_LAST_SPKR_LOC 0x00000011 00245 #define DSBUSID_IS_SPKR_LOC(id) (((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC)) 00246 00247 #define DSBUSID_REVERB_SEND 0x00000040 00248 #define DSBUSID_CHORUS_SEND 0x00000041 00249 00250 #define DSBUSID_DYNAMIC_0 0x00000200 00251 00252 #define DSBUSID_NULL 0xFFFFFFFF 00253 00254 /***************************************************************************** 00255 * Enumerations 00256 */ 00257 typedef enum { 00258 DMUS_CLOCK_SYSTEM = 0x0, 00259 DMUS_CLOCK_WAVE = 0x1 00260 } DMUS_CLOCKTYPE; 00261 00262 00263 /***************************************************************************** 00264 * Structures 00265 */ 00266 /* typedef definitions */ 00267 typedef struct _DMUS_BUFFERDESC DMUS_BUFFERDESC, *LPDMUS_BUFFERDESC; 00268 typedef struct _DMUS_PORTCAPS DMUS_PORTCAPS, *LPDMUS_PORTCAPS; 00269 typedef struct _DMUS_PORTPARAMS DMUS_PORTPARAMS7, *LPDMUS_PORTPARAMS7; 00270 typedef struct _DMUS_PORTPARAMS8 DMUS_PORTPARAMS8, *LPDMUS_PORTPARAMS8; 00271 typedef DMUS_PORTPARAMS8 DMUS_PORTPARAMS, *LPDMUS_PORTPARAMS; 00272 typedef struct _DMUS_SYNTHSTATS DMUS_SYNTHSTATS, *LPDMUS_SYNTHSTATS; 00273 typedef struct _DMUS_SYNTHSTATS8 DMUS_SYNTHSTATS8, *LPDMUS_SYNTHSTATS8; 00274 typedef struct _DMUS_WAVES_REVERB_PARAMS DMUS_WAVES_REVERB_PARAMS, *LPDMUS_WAVES_REVERB_PARAMS; 00275 typedef struct _DMUS_CLOCKINFO7 DMUS_CLOCKINFO7, *LPDMUS_CLOCKINFO7; 00276 typedef struct _DMUS_CLOCKINFO8 DMUS_CLOCKINFO8, *LPDMUS_CLOCKINFO8; 00277 typedef DMUS_CLOCKINFO8 DMUS_CLOCKINFO, *LPDMUS_CLOCKINFO; 00278 00279 00280 /* actual structures */ 00281 struct _DMUS_BUFFERDESC { 00282 DWORD dwSize; 00283 DWORD dwFlags; 00284 GUID guidBufferFormat; 00285 DWORD cbBuffer; 00286 } ; 00287 00288 struct _DMUS_PORTCAPS { 00289 DWORD dwSize; 00290 DWORD dwFlags; 00291 GUID guidPort; 00292 DWORD dwClass; 00293 DWORD dwType; 00294 DWORD dwMemorySize; 00295 DWORD dwMaxChannelGroups; 00296 DWORD dwMaxVoices; 00297 DWORD dwMaxAudioChannels; 00298 DWORD dwEffectFlags; 00299 WCHAR wszDescription[DMUS_MAX_DESCRIPTION]; 00300 }; 00301 00302 struct _DMUS_PORTPARAMS { 00303 DWORD dwSize; 00304 DWORD dwValidParams; 00305 DWORD dwVoices; 00306 DWORD dwChannelGroups; 00307 DWORD dwAudioChannels; 00308 DWORD dwSampleRate; 00309 DWORD dwEffectFlags; 00310 BOOL fShare; 00311 }; 00312 00313 struct _DMUS_PORTPARAMS8 { 00314 DWORD dwSize; 00315 DWORD dwValidParams; 00316 DWORD dwVoices; 00317 DWORD dwChannelGroups; 00318 DWORD dwAudioChannels; 00319 DWORD dwSampleRate; 00320 DWORD dwEffectFlags; 00321 BOOL fShare; 00322 DWORD dwFeatures; 00323 }; 00324 00325 struct _DMUS_SYNTHSTATS { 00326 DWORD dwSize; 00327 DWORD dwValidStats; 00328 DWORD dwVoices; 00329 DWORD dwTotalCPU; 00330 DWORD dwCPUPerVoice; 00331 DWORD dwLostNotes; 00332 DWORD dwFreeMemory; 00333 LONG lPeakVolume; 00334 }; 00335 00336 struct _DMUS_SYNTHSTATS8 { 00337 DWORD dwSize; 00338 DWORD dwValidStats; 00339 DWORD dwVoices; 00340 DWORD dwTotalCPU; 00341 DWORD dwCPUPerVoice; 00342 DWORD dwLostNotes; 00343 DWORD dwFreeMemory; 00344 LONG lPeakVolume; 00345 DWORD dwSynthMemUse; 00346 }; 00347 00348 struct _DMUS_WAVES_REVERB_PARAMS { 00349 float fInGain; 00350 float fReverbMix; 00351 float fReverbTime; 00352 float fHighFreqRTRatio; 00353 }; 00354 00355 struct _DMUS_CLOCKINFO7 { 00356 DWORD dwSize; 00357 DMUS_CLOCKTYPE ctType; 00358 GUID guidClock; 00359 WCHAR wszDescription[DMUS_MAX_DESCRIPTION]; 00360 }; 00361 00362 struct _DMUS_CLOCKINFO8 { 00363 DWORD dwSize; 00364 DMUS_CLOCKTYPE ctType; 00365 GUID guidClock; 00366 WCHAR wszDescription[DMUS_MAX_DESCRIPTION]; 00367 DWORD dwFlags; 00368 }; 00369 00370 00371 /***************************************************************************** 00372 * IDirectMusic interface 00373 */ 00374 #define INTERFACE IDirectMusic 00375 DECLARE_INTERFACE_(IDirectMusic,IUnknown) 00376 { 00377 /*** IUnknown methods ***/ 00378 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00379 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00380 STDMETHOD_(ULONG,Release)(THIS) PURE; 00381 /*** IDirectMusic methods ***/ 00382 STDMETHOD(EnumPort)(THIS_ DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps) PURE; 00383 STDMETHOD(CreateMusicBuffer)(THIS_ LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER **ppBuffer, LPUNKNOWN pUnkOuter) PURE; 00384 STDMETHOD(CreatePort)(THIS_ REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT *ppPort, LPUNKNOWN pUnkOuter) PURE; 00385 STDMETHOD(EnumMasterClock)(THIS_ DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo) PURE; 00386 STDMETHOD(GetMasterClock)(THIS_ LPGUID pguidClock, struct IReferenceClock **ppReferenceClock) PURE; 00387 STDMETHOD(SetMasterClock)(THIS_ REFGUID rguidClock) PURE; 00388 STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE; 00389 STDMETHOD(GetDefaultPort)(THIS_ LPGUID pguidPort) PURE; 00390 STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, HWND hWnd) PURE; 00391 }; 00392 #undef INTERFACE 00393 00394 #if !defined(__cplusplus) || defined(CINTERFACE) 00395 /*** IUnknown methods ***/ 00396 #define IDirectMusic_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00397 #define IDirectMusic_AddRef(p) (p)->lpVtbl->AddRef(p) 00398 #define IDirectMusic_Release(p) (p)->lpVtbl->Release(p) 00399 /*** IDirectMusic methods ***/ 00400 #define IDirectMusic_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b) 00401 #define IDirectMusic_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c) 00402 #define IDirectMusic_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d) 00403 #define IDirectMusic_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b) 00404 #define IDirectMusic_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b) 00405 #define IDirectMusic_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a) 00406 #define IDirectMusic_Activate(p,a) (p)->lpVtbl->Activate(p,a) 00407 #define IDirectMusic_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a) 00408 #define IDirectMusic_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b) 00409 #endif 00410 00411 00412 /***************************************************************************** 00413 * IDirectMusic8 interface 00414 */ 00415 #define INTERFACE IDirectMusic8 00416 DECLARE_INTERFACE_(IDirectMusic8,IDirectMusic) 00417 { 00418 /*** IUnknown methods ***/ 00419 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00420 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00421 STDMETHOD_(ULONG,Release)(THIS) PURE; 00422 /*** IDirectMusic methods ***/ 00423 STDMETHOD(EnumPort)(THIS_ DWORD dwIndex, LPDMUS_PORTCAPS pPortCaps) PURE; 00424 STDMETHOD(CreateMusicBuffer)(THIS_ LPDMUS_BUFFERDESC pBufferDesc, LPDIRECTMUSICBUFFER **ppBuffer, LPUNKNOWN pUnkOuter) PURE; 00425 STDMETHOD(CreatePort)(THIS_ REFCLSID rclsidPort, LPDMUS_PORTPARAMS pPortParams, LPDIRECTMUSICPORT *ppPort, LPUNKNOWN pUnkOuter) PURE; 00426 STDMETHOD(EnumMasterClock)(THIS_ DWORD dwIndex, LPDMUS_CLOCKINFO lpClockInfo) PURE; 00427 STDMETHOD(GetMasterClock)(THIS_ LPGUID pguidClock, struct IReferenceClock **ppReferenceClock) PURE; 00428 STDMETHOD(SetMasterClock)(THIS_ REFGUID rguidClock) PURE; 00429 STDMETHOD(Activate)(THIS_ BOOL fEnable) PURE; 00430 STDMETHOD(GetDefaultPort)(THIS_ LPGUID pguidPort) PURE; 00431 STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, HWND hWnd) PURE; 00432 /*** IDirectMusic8 methods ***/ 00433 STDMETHOD(SetExternalMasterClock)(THIS_ struct IReferenceClock *pClock) PURE; 00434 }; 00435 #undef INTERFACE 00436 00437 #if !defined(__cplusplus) || defined(CINTERFACE) 00438 /*** IUnknown methods ***/ 00439 #define IDirectMusic8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00440 #define IDirectMusic8_AddRef(p) (p)->lpVtbl->AddRef(p) 00441 #define IDirectMusic8_Release(p) (p)->lpVtbl->Release(p) 00442 /*** IDirectMusic methods ***/ 00443 #define IDirectMusic8_EnumPort(p,a,b) (p)->lpVtbl->EnumPort(p,a,b) 00444 #define IDirectMusic8_CreateMusicBuffer(p,a,b,c) (p)->lpVtbl->CreateMusicBuffer(p,a,b,c) 00445 #define IDirectMusic8_CreatePort(p,a,b,c,d) (p)->lpVtbl->CreatePort(p,a,b,c,d) 00446 #define IDirectMusic8_EnumMasterClock(p,a,b) (p)->lpVtbl->EnumMasterClock(p,a,b) 00447 #define IDirectMusic8_GetMasterClock(p,a,b) (p)->lpVtbl->GetMasterClock(p,a,b) 00448 #define IDirectMusic8_SetMasterClock(p,a) (p)->lpVtbl->SetMasterClock(p,a) 00449 #define IDirectMusic8_Activate(p,a) (p)->lpVtbl->Activate(p,a) 00450 #define IDirectMusic8_GetDefaultPort(p,a) (p)->lpVtbl->GetDefaultPort(p,a) 00451 #define IDirectMusic8_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b) 00452 /*** IDirectMusic8 methods ***/ 00453 #define IDirectMusic8_SetExternalMasterClock(p,a) (p)->lpVtbl->SetExternalMasterClock(p,a) 00454 #endif 00455 00456 00457 /***************************************************************************** 00458 * IDirectMusicBuffer interface 00459 */ 00460 #define INTERFACE IDirectMusicBuffer 00461 DECLARE_INTERFACE_(IDirectMusicBuffer,IUnknown) 00462 { 00463 /*** IUnknown methods ***/ 00464 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00465 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00466 STDMETHOD_(ULONG,Release)(THIS) PURE; 00467 /*** IDirectMusicBuffer methods ***/ 00468 STDMETHOD(Flush)(THIS) PURE; 00469 STDMETHOD(TotalTime)(THIS_ LPREFERENCE_TIME prtTime) PURE; 00470 STDMETHOD(PackStructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD dwChannelMessage) PURE; 00471 STDMETHOD(PackUnstructured)(THIS_ REFERENCE_TIME rt, DWORD dwChannelGroup, DWORD cb, LPBYTE lpb) PURE; 00472 STDMETHOD(ResetReadPtr)(THIS) PURE; 00473 STDMETHOD(GetNextEvent)(THIS_ LPREFERENCE_TIME prt, LPDWORD pdwChannelGroup, LPDWORD pdwLength, LPBYTE *ppData) PURE; 00474 STDMETHOD(GetRawBufferPtr)(THIS_ LPBYTE *ppData) PURE; 00475 STDMETHOD(GetStartTime)(THIS_ LPREFERENCE_TIME prt) PURE; 00476 STDMETHOD(GetUsedBytes)(THIS_ LPDWORD pcb) PURE; 00477 STDMETHOD(GetMaxBytes)(THIS_ LPDWORD pcb) PURE; 00478 STDMETHOD(GetBufferFormat)(THIS_ LPGUID pGuidFormat) PURE; 00479 STDMETHOD(SetStartTime)(THIS_ REFERENCE_TIME rt) PURE; 00480 STDMETHOD(SetUsedBytes)(THIS_ DWORD cb) PURE; 00481 }; 00482 #undef INTERFACE 00483 00484 #if !defined(__cplusplus) || defined(CINTERFACE) 00485 /*** IUnknown methods ***/ 00486 #define IDirectMusicBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00487 #define IDirectMusicBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) 00488 #define IDirectMusicBuffer_Release(p) (p)->lpVtbl->Release(p) 00489 /*** IDirectMusicBuffer methods ***/ 00490 #define IDirectMusicBuffer_Flush(p) (p)->lpVtbl->Flush(p) 00491 #define IDirectMusicBuffer_TotalTime(p,a) (p)->lpVtbl->TotalTime(p,a) 00492 #define IDirectMusicBuffer_PackStructured(p,a,b,c) (p)->lpVtbl->PackStructured(p,a,b,c) 00493 #define IDirectMusicBuffer_PackUnstructured(p,a,b,c,d) (p)->lpVtbl->PackUnstructured(p,a,b,c,d) 00494 #define IDirectMusicBuffer_ResetReadPtr(p) (p)->lpVtbl->ResetReadPtr(p) 00495 #define IDirectMusicBuffer_GetNextEvent(p,a,b,c,d) (p)->lpVtbl->GetNextEvent(p,a,b,c,d) 00496 #define IDirectMusicBuffer_GetRawBufferPtr(p,a) (p)->lpVtbl->GetRawBufferPtr(p,a) 00497 #define IDirectMusicBuffer_GetStartTime(p,a) (p)->lpVtbl->GetStartTime(p,a) 00498 #define IDirectMusicBuffer_GetUsedBytes(p,a) (p)->lpVtbl->GetUsedBytes(p,a) 00499 #define IDirectMusicBuffer_GetMaxBytes(p,a) (p)->lpVtbl->GetMaxBytes(p,a) 00500 #define IDirectMusicBuffer_GetBufferFormat(p,a) (p)->lpVtbl->GetBufferFormat(p,a) 00501 #define IDirectMusicBuffer_SetStartTime(p,a) (p)->lpVtbl->SetStartTime(p,a) 00502 #define IDirectMusicBuffer_SetUsedBytes(p,a) (p)->lpVtbl->SetUsedBytes(p,a) 00503 #endif 00504 00505 00506 /***************************************************************************** 00507 * IDirectMusicInstrument interface 00508 */ 00509 #define INTERFACE IDirectMusicInstrument 00510 DECLARE_INTERFACE_(IDirectMusicInstrument,IUnknown) 00511 { 00512 /*** IUnknown methods ***/ 00513 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00514 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00515 STDMETHOD_(ULONG,Release)(THIS) PURE; 00516 /*** IDirectMusicInstrument methods ***/ 00517 STDMETHOD(GetPatch)(THIS_ DWORD *pdwPatch) PURE; 00518 STDMETHOD(SetPatch)(THIS_ DWORD dwPatch) PURE; 00519 }; 00520 #undef INTERFACE 00521 00522 #if !defined(__cplusplus) || defined(CINTERFACE) 00523 /*** IUnknown methods ***/ 00524 #define IDirectMusicInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00525 #define IDirectMusicInstrument_AddRef(p) (p)->lpVtbl->AddRef(p) 00526 #define IDirectMusicInstrument_Release(p) (p)->lpVtbl->Release(p) 00527 /*** IDirectMusicInstrument methods ***/ 00528 #define IDirectMusicInstrument_GetPatch(p,a) (p)->lpVtbl->GetPatch(p,a) 00529 #define IDirectMusicInstrument_SetPatch(p,a) (p)->lpVtbl->SetPatch(p,a) 00530 #endif 00531 00532 00533 /***************************************************************************** 00534 * IDirectMusicDownloadedInstrument interface 00535 */ 00536 #define INTERFACE IDirectMusicDownloadedInstrument 00537 DECLARE_INTERFACE_(IDirectMusicDownloadedInstrument,IUnknown) 00538 { 00539 /*** IUnknown methods ***/ 00540 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00541 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00542 STDMETHOD_(ULONG,Release)(THIS) PURE; 00543 /* no IDirectMusicDownloadedInstrument methods at this time */ 00544 }; 00545 #undef INTERFACE 00546 00547 #if !defined(__cplusplus) || defined(CINTERFACE) 00548 /*** IUnknown methods ***/ 00549 #define IDirectMusicDownloadedInstrument_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00550 #define IDirectMusicDownloadedInstrument_AddRef(p) (p)->lpVtbl->AddRef(p) 00551 #define IDirectMusicDownloadedInstrument_Release(p) (p)->lpVtbl->Release(p) 00552 /*** IDirectMusicDownloadedInstrument methods ***/ 00553 /* none at this time */ 00554 #endif 00555 00556 00557 /***************************************************************************** 00558 * IDirectMusicCollection interface 00559 */ 00560 #define INTERFACE IDirectMusicCollection 00561 DECLARE_INTERFACE_(IDirectMusicCollection,IUnknown) 00562 { 00563 /*** IUnknown methods ***/ 00564 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00565 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00566 STDMETHOD_(ULONG,Release)(THIS) PURE; 00567 /*** IDirectMusicCollection methods ***/ 00568 STDMETHOD(GetInstrument)(THIS_ DWORD dwPatch, IDirectMusicInstrument **ppInstrument) PURE; 00569 STDMETHOD(EnumInstrument)(THIS_ DWORD dwIndex, DWORD *pdwPatch, LPWSTR pwszName, DWORD dwNameLen) PURE; 00570 }; 00571 #undef INTERFACE 00572 00573 #if !defined(__cplusplus) || defined(CINTERFACE) 00574 /*** IUnknown methods ***/ 00575 #define IDirectMusicCollection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00576 #define IDirectMusicCollection_AddRef(p) (p)->lpVtbl->AddRef(p) 00577 #define IDirectMusicCollection_Release(p) (p)->lpVtbl->Release(p) 00578 /*** IDirectMusicCollection methods ***/ 00579 #define IDirectMusicCollection_GetInstrument(p,a,b) (p)->lpVtbl->GetInstrument(p,a,b) 00580 #define IDirectMusicCollection_EnumInstrument(p,a,b,c,d) (p)->lpVtbl->EnumInstrument(p,a,b,c,d) 00581 #endif 00582 00583 00584 /***************************************************************************** 00585 * IDirectMusicDownload interface 00586 */ 00587 #define INTERFACE IDirectMusicDownload 00588 DECLARE_INTERFACE_(IDirectMusicDownload,IUnknown) 00589 { 00590 /*** IUnknown methods ***/ 00591 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00592 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00593 STDMETHOD_(ULONG,Release)(THIS) PURE; 00594 /*** IDirectMusicDownload methods ***/ 00595 STDMETHOD(GetBuffer)(THIS_ void **ppvBuffer, DWORD *pdwSize) PURE; 00596 }; 00597 #undef INTERFACE 00598 00599 #if !defined(__cplusplus) || defined(CINTERFACE) 00600 /*** IUnknown methods ***/ 00601 #define IDirectMusicDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00602 #define IDirectMusicDownload_AddRef(p) (p)->lpVtbl->AddRef(p) 00603 #define IDirectMusicDownload_Release(p) (p)->lpVtbl->Release(p) 00604 /*** IDirectMusicDownload methods ***/ 00605 #define IDirectMusicDownload_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b) 00606 #endif 00607 00608 00609 /***************************************************************************** 00610 * IDirectMusicPortDownload interface 00611 */ 00612 #define INTERFACE IDirectMusicPortDownload 00613 DECLARE_INTERFACE_(IDirectMusicPortDownload,IUnknown) 00614 { 00615 /*** IUnknown methods ***/ 00616 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00617 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00618 STDMETHOD_(ULONG,Release)(THIS) PURE; 00619 /*** IDirectMusicPortDownload methods ***/ 00620 STDMETHOD(GetBuffer)(THIS_ DWORD dwDLId, IDirectMusicDownload **ppIDMDownload) PURE; 00621 STDMETHOD(AllocateBuffer)(THIS_ DWORD dwSize, IDirectMusicDownload **ppIDMDownload) PURE; 00622 STDMETHOD(GetDLId)(THIS_ DWORD *pdwStartDLId, DWORD dwCount) PURE; 00623 STDMETHOD(GetAppend)(THIS_ DWORD *pdwAppend) PURE; 00624 STDMETHOD(Download)(THIS_ IDirectMusicDownload *pIDMDownload) PURE; 00625 STDMETHOD(Unload)(THIS_ IDirectMusicDownload *pIDMDownload) PURE; 00626 }; 00627 #undef INTERFACE 00628 00629 #if !defined(__cplusplus) || defined(CINTERFACE) 00630 /*** IUnknown methods ***/ 00631 #define IDirectMusicPortDownload_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00632 #define IDirectMusicPortDownload_AddRef(p) (p)->lpVtbl->AddRef(p) 00633 #define IDirectMusicPortDownload_Release(p) (p)->lpVtbl->Release(p) 00634 /*** IDirectMusicPortDownload methods ***/ 00635 #define IDirectMusicPortDownload_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b) 00636 #define IDirectMusicPortDownload_AllocateBuffer(p,a,b) (p)->lpVtbl->AllocateBuffer(p,a,b) 00637 #define IDirectMusicPortDownload_GetDLId(p,a,b) (p)->lpVtbl->GetDLId(p,a,b) 00638 #define IDirectMusicPortDownload_GetAppend(p,a) (p)->lpVtbl->GetAppend(p,a) 00639 #define IDirectMusicPortDownload_Download(p,a) (p)->lpVtbl->Download(p,a) 00640 #define IDirectMusicPortDownload_Unload(p,a) (p)->lpVtbl->GetBuffer(p,a) 00641 #endif 00642 00643 00644 /***************************************************************************** 00645 * IDirectMusicPort interface 00646 */ 00647 #define INTERFACE IDirectMusicPort 00648 DECLARE_INTERFACE_(IDirectMusicPort,IUnknown) 00649 { 00650 /*** IUnknown methods ***/ 00651 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00652 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00653 STDMETHOD_(ULONG,Release)(THIS) PURE; 00654 /*** IDirectMusicPort methods ***/ 00655 STDMETHOD(PlayBuffer)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE; 00656 STDMETHOD(SetReadNotificationHandle)(THIS_ HANDLE hEvent) PURE; 00657 STDMETHOD(Read)(THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE; 00658 STDMETHOD(DownloadInstrument)(THIS_ IDirectMusicInstrument *pInstrument, IDirectMusicDownloadedInstrument **ppDownloadedInstrument, DMUS_NOTERANGE *pNoteRanges, DWORD dwNumNoteRanges) PURE; 00659 STDMETHOD(UnloadInstrument)(THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument) PURE; 00660 STDMETHOD(GetLatencyClock)(THIS_ struct IReferenceClock **ppClock) PURE; 00661 STDMETHOD(GetRunningStats)(THIS_ LPDMUS_SYNTHSTATS pStats) PURE; 00662 STDMETHOD(Compact)(THIS) PURE; 00663 STDMETHOD(GetCaps)(THIS_ LPDMUS_PORTCAPS pPortCaps) PURE; 00664 STDMETHOD(DeviceIoControl)(THIS_ DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped) PURE; 00665 STDMETHOD(SetNumChannelGroups)(THIS_ DWORD dwChannelGroups) PURE; 00666 STDMETHOD(GetNumChannelGroups)(THIS_ LPDWORD pdwChannelGroups) PURE; 00667 STDMETHOD(Activate)(THIS_ BOOL fActive) PURE; 00668 STDMETHOD(SetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE; 00669 STDMETHOD(GetChannelPriority)(THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE; 00670 STDMETHOD(SetDirectSound)(THIS_ LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE; 00671 STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize) PURE; 00672 }; 00673 #undef INTERFACE 00674 00675 #if !defined(__cplusplus) || defined(CINTERFACE) 00676 /*** IUnknown methods ***/ 00677 #define IDirectMusicPort_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00678 #define IDirectMusicPort_AddRef(p) (p)->lpVtbl->AddRef(p) 00679 #define IDirectMusicPort_Release(p) (p)->lpVtbl->Release(p) 00680 /*** IDirectMusicPort methods ***/ 00681 #define IDirectMusicPort_PlayBuffer(p,a) (p)->lpVtbl->PlayBuffer(p,a) 00682 #define IDirectMusicPort_SetReadNotificationHandle(p,a) (p)->lpVtbl->SetReadNotificationHandle(p,a) 00683 #define IDirectMusicPort_Read(p,a) (p)->lpVtbl->Read(p,a) 00684 #define IDirectMusicPort_DownloadInstrument(p,a,b,c,d) (p)->lpVtbl->DownloadInstrument(p,a,b,c,d) 00685 #define IDirectMusicPort_UnloadInstrument(p,a) (p)->lpVtbl->UnloadInstrument(p,a) 00686 #define IDirectMusicPort_GetLatencyClock(p,a) (p)->lpVtbl->GetLatencyClock(p,a) 00687 #define IDirectMusicPort_GetRunningStats(p,a) (p)->lpVtbl->GetRunningStats(p,a) 00688 #define IDirectMusicPort_Compact(p) (p)->lpVtbl->Compact(p) 00689 #define IDirectMusicPort_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) 00690 #define IDirectMusicPort_DeviceIoControl(p,a,b,c,d,e,f,g) (p)->lpVtbl->DeviceIoControl(p,a,b,c,d,e,f,g) 00691 #define IDirectMusicPort_SetNumChannelGroups(p,a) (p)->lpVtbl->SetNumChannelGroups(p,a) 00692 #define IDirectMusicPort_GetNumChannelGroups(p,a) (p)->lpVtbl->GetNumChannelGroups(p,a) 00693 #define IDirectMusicPort_Activate(p,a) (p)->lpVtbl->Activate(p,a) 00694 #define IDirectMusicPort_SetChannelPriority(p,a,b,c) (p)->lpVtbl->SetChannelPriority(p,a,b,c) 00695 #define IDirectMusicPort_GetChannelPriority(p,a,b,c) (p)->lpVtbl->GetChannelPriority(p,a,b,c) 00696 #define IDirectMusicPort_SetDirectSound(p,a,b) (p)->lpVtbl->SetDirectSound(p,a,b) 00697 #define IDirectMusicPort_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) 00698 #endif 00699 00700 00701 /***************************************************************************** 00702 * IDirectMusicThru interface 00703 */ 00704 #define INTERFACE IDirectMusicThru 00705 DECLARE_INTERFACE_(IDirectMusicThru,IUnknown) 00706 { 00707 /*** IUnknown methods ***/ 00708 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00709 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00710 STDMETHOD_(ULONG,Release)(THIS) PURE; 00711 /*** IDirectMusicThru methods ***/ 00712 STDMETHOD(ThruChannel)(THIS_ DWORD dwSourceChannelGroup, DWORD dwSourceChannel, DWORD dwDestinationChannelGroup, DWORD dwDestinationChannel, LPDIRECTMUSICPORT pDestinationPort) PURE; 00713 }; 00714 #undef INTERFACE 00715 00716 #if !defined(__cplusplus) || defined(CINTERFACE) 00717 /*** IUnknown methods ***/ 00718 #define IDirectMusicThru_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00719 #define IDirectMusicThru_AddRef(p) (p)->lpVtbl->AddRef(p) 00720 #define IDirectMusicThru_Release(p) (p)->lpVtbl->Release(p) 00721 /*** IDirectMusicThru methods ***/ 00722 #define IDirectMusicThru_ThruChannel(p,a,b,c,d,e) (p)->lpVtbl->ThruChannel(p,a,b,c,d,e) 00723 #endif 00724 00725 00726 #ifndef __IReferenceClock_INTERFACE_DEFINED__ 00727 #define __IReferenceClock_INTERFACE_DEFINED__ 00728 DEFINE_GUID(IID_IReferenceClock,0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70); 00729 00730 /***************************************************************************** 00731 * IReferenceClock interface 00732 */ 00733 #define INTERFACE IReferenceClock 00734 DECLARE_INTERFACE_(IReferenceClock,IUnknown) 00735 { 00736 /*** IUnknown methods ***/ 00737 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00738 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00739 STDMETHOD_(ULONG,Release)(THIS) PURE; 00740 /*** IReferenceClock methods ***/ 00741 STDMETHOD(GetTime)(THIS_ REFERENCE_TIME *pTime) PURE; 00742 STDMETHOD(AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HANDLE hEvent, DWORD *pdwAdviseCookie) PURE; 00743 STDMETHOD(AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HANDLE hSemaphore, DWORD *pdwAdviseCookie) PURE; 00744 STDMETHOD(Unadvise)(THIS_ DWORD dwAdviseCookie) PURE; 00745 }; 00746 #undef INTERFACE 00747 00748 #if !defined(__cplusplus) || defined(CINTERFACE) 00749 /*** IUnknown methods ***/ 00750 #define IReferenceClock_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00751 #define IReferenceClock_AddRef(p) (p)->lpVtbl->AddRef(p) 00752 #define IReferenceClock_Release(p) (p)->lpVtbl->Release(p) 00753 /*** IReferenceClock methods ***/ 00754 #define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) 00755 #define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d) 00756 #define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d) 00757 #define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) 00758 #endif 00759 00760 #endif /* __IReferenceClock_INTERFACE_DEFINED__ */ 00761 00762 #ifdef __cplusplus 00763 } 00764 #endif 00765 00766 #include <poppack.h> 00767 00768 #endif /* __WINE_DMUSIC_CORE_H */ Generated on Sun May 27 2012 04:30:39 for ReactOS by
1.7.6.1
|