ReactOS 0.4.16-dev-117-g38f21f9
dmusic_main.c
Go to the documentation of this file.
1/* DirectMusic Main
2 *
3 * Copyright (C) 2003-2004 Rok Mandeljc
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (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 GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 */
19
20
21#include <stdio.h>
22#include <stdarg.h>
23
24#define COBJMACROS
25
26#include "windef.h"
27#include "winbase.h"
28#include "winnt.h"
29#include "wingdi.h"
30#include "winuser.h"
31#include "winreg.h"
32#include "objbase.h"
33#include "rpcproxy.h"
34#include "initguid.h"
35#include "dmusici.h"
36
37#include "dmusic_private.h"
38
40
43
44typedef struct {
45 IClassFactory IClassFactory_iface;
48
49/******************************************************************
50 * IClassFactory implementation
51 */
53{
54 return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
55}
56
58{
59 if (ppv == NULL)
60 return E_POINTER;
61
63 TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv);
65 TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv);
66 else {
67 FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
68 *ppv = NULL;
69 return E_NOINTERFACE;
70 }
71
72 *ppv = iface;
73 IUnknown_AddRef((IUnknown*)*ppv);
74 return S_OK;
75}
76
78{
80
81 return 2; /* non-heap based object */
82}
83
85{
87
88 return 1; /* non-heap based object */
89}
90
92 REFIID riid, void **ppv)
93{
95
96 TRACE ("(%p, %s, %p)\n", pUnkOuter, debugstr_dmguid(riid), ppv);
97
98 return This->fnCreateInstance(riid, ppv, pUnkOuter);
99}
100
102{
103 TRACE("(%d)\n", dolock);
104
105 if (dolock)
107 else
109
110 return S_OK;
111}
112
113static const IClassFactoryVtbl classfactory_vtbl = {
119};
120
124
125/******************************************************************
126 * DllMain
127 *
128 *
129 */
131 if (fdwReason == DLL_PROCESS_ATTACH) {
132 instance = hinstDLL;
134 }
135
136 return TRUE;
137}
138
139
140/******************************************************************
141 * DllCanUnloadNow (DMUSIC.@)
142 *
143 *
144 */
146{
147 return DMUSIC_refCount != 0 ? S_FALSE : S_OK;
148}
149
150
151/******************************************************************
152 * DllGetClassObject (DMUSIC.@)
153 *
154 *
155 */
157{
158 TRACE("(%s, %s, %p)\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
159 if (IsEqualCLSID (rclsid, &CLSID_DirectMusic) && IsEqualIID (riid, &IID_IClassFactory)) {
161 IClassFactory_AddRef((IClassFactory*)*ppv);
162 return S_OK;
163 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicCollection) && IsEqualIID (riid, &IID_IClassFactory)) {
164 *ppv = &Collection_CF;
165 IClassFactory_AddRef((IClassFactory*)*ppv);
166 return S_OK;
167 }
168
169 WARN("(%s, %s, %p): no interface found.\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
171}
172
173/***********************************************************************
174 * DllRegisterServer (DMUSIC.@)
175 */
177{
179}
180
181/***********************************************************************
182 * DllUnregisterServer (DMUSIC.@)
183 */
185{
187}
188
189/******************************************************************
190 * Helper functions
191 *
192 *
193 */
194/* dwPatch from MIDILOCALE */
196 DWORD dwPatch = 0;
197 if (!pLocale) return 0;
198 dwPatch |= (pLocale->ulBank & F_INSTRUMENT_DRUMS); /* set drum bit */
199 dwPatch |= ((pLocale->ulBank & 0x00007F7F) << 8); /* set MIDI bank location */
200 dwPatch |= (pLocale->ulInstrument & 0x0000007F); /* set PC value */
201 return dwPatch;
202}
203
204/* MIDILOCALE from dwPatch */
205void Patch2MIDILOCALE (DWORD dwPatch, LPMIDILOCALE pLocale) {
206 memset (pLocale, 0, sizeof(MIDILOCALE));
207
208 pLocale->ulInstrument = (dwPatch & 0x7F); /* get PC value */
209 pLocale->ulBank = ((dwPatch & 0x007F7F00) >> 8); /* get MIDI bank location */
210 pLocale->ulBank |= (dwPatch & F_INSTRUMENT_DRUMS); /* get drum bit */
211}
212
213/* check whether the given DWORD is even (return 0) or odd (return 1) */
215 return (number & 0x1); /* basically, check if bit 0 is set ;) */
216}
217
218/* FOURCC to string conversion for debug messages */
219const char *debugstr_fourcc (DWORD fourcc) {
220 if (!fourcc) return "'null'";
221 return wine_dbg_sprintf ("\'%c%c%c%c\'",
222 (char)(fourcc), (char)(fourcc >> 8),
223 (char)(fourcc >> 16), (char)(fourcc >> 24));
224}
225
226/* DMUS_VERSION struct to string conversion for debug messages */
227static const char *debugstr_dmversion(const DMUS_VERSION *version)
228{
229 if (!version)
230 return "'null'";
231 return wine_dbg_sprintf("'%hu,%hu,%hu,%hu'",
232 HIWORD(version->dwVersionMS), LOWORD(version->dwVersionMS),
233 HIWORD(version->dwVersionLS), LOWORD(version->dwVersionLS));
234}
235
236/* returns name of given GUID */
237const char *debugstr_dmguid (const GUID *id) {
238 static const guid_info guids[] = {
239 /* CLSIDs */
240 GE(CLSID_AudioVBScript),
241 GE(CLSID_DirectMusic),
242 GE(CLSID_DirectMusicAudioPathConfig),
243 GE(CLSID_DirectMusicAuditionTrack),
244 GE(CLSID_DirectMusicBand),
245 GE(CLSID_DirectMusicBandTrack),
246 GE(CLSID_DirectMusicChordMapTrack),
247 GE(CLSID_DirectMusicChordMap),
248 GE(CLSID_DirectMusicChordTrack),
249 GE(CLSID_DirectMusicCollection),
250 GE(CLSID_DirectMusicCommandTrack),
251 GE(CLSID_DirectMusicComposer),
252 GE(CLSID_DirectMusicContainer),
253 GE(CLSID_DirectMusicGraph),
254 GE(CLSID_DirectMusicLoader),
255 GE(CLSID_DirectMusicLyricsTrack),
256 GE(CLSID_DirectMusicMarkerTrack),
257 GE(CLSID_DirectMusicMelodyFormulationTrack),
258 GE(CLSID_DirectMusicMotifTrack),
259 GE(CLSID_DirectMusicMuteTrack),
260 GE(CLSID_DirectMusicParamControlTrack),
261 GE(CLSID_DirectMusicPatternTrack),
262 GE(CLSID_DirectMusicPerformance),
263 GE(CLSID_DirectMusicScript),
264 GE(CLSID_DirectMusicScriptAutoImpSegment),
265 GE(CLSID_DirectMusicScriptAutoImpPerformance),
266 GE(CLSID_DirectMusicScriptAutoImpSegmentState),
267 GE(CLSID_DirectMusicScriptAutoImpAudioPathConfig),
268 GE(CLSID_DirectMusicScriptAutoImpAudioPath),
269 GE(CLSID_DirectMusicScriptAutoImpSong),
270 GE(CLSID_DirectMusicScriptSourceCodeLoader),
271 GE(CLSID_DirectMusicScriptTrack),
272 GE(CLSID_DirectMusicSection),
273 GE(CLSID_DirectMusicSegment),
274 GE(CLSID_DirectMusicSegmentState),
275 GE(CLSID_DirectMusicSegmentTriggerTrack),
276 GE(CLSID_DirectMusicSegTriggerTrack),
277 GE(CLSID_DirectMusicSeqTrack),
278 GE(CLSID_DirectMusicSignPostTrack),
279 GE(CLSID_DirectMusicSong),
280 GE(CLSID_DirectMusicStyle),
281 GE(CLSID_DirectMusicStyleTrack),
282 GE(CLSID_DirectMusicSynth),
283 GE(CLSID_DirectMusicSynthSink),
284 GE(CLSID_DirectMusicSysExTrack),
285 GE(CLSID_DirectMusicTemplate),
286 GE(CLSID_DirectMusicTempoTrack),
287 GE(CLSID_DirectMusicTimeSigTrack),
288 GE(CLSID_DirectMusicWaveTrack),
289 GE(CLSID_DirectSoundWave),
290 /* IIDs */
291 GE(IID_IDirectMusic),
292 GE(IID_IDirectMusic2),
293 GE(IID_IDirectMusic8),
294 GE(IID_IDirectMusicAudioPath),
295 GE(IID_IDirectMusicBand),
296 GE(IID_IDirectMusicBuffer),
297 GE(IID_IDirectMusicChordMap),
298 GE(IID_IDirectMusicCollection),
299 GE(IID_IDirectMusicComposer),
300 GE(IID_IDirectMusicContainer),
301 GE(IID_IDirectMusicDownload),
302 GE(IID_IDirectMusicDownloadedInstrument),
303 GE(IID_IDirectMusicGetLoader),
304 GE(IID_IDirectMusicGraph),
305 GE(IID_IDirectMusicInstrument),
306 GE(IID_IDirectMusicLoader),
307 GE(IID_IDirectMusicLoader8),
308 GE(IID_IDirectMusicObject),
309 GE(IID_IDirectMusicPatternTrack),
310 GE(IID_IDirectMusicPerformance),
311 GE(IID_IDirectMusicPerformance2),
312 GE(IID_IDirectMusicPerformance8),
313 GE(IID_IDirectMusicPort),
314 GE(IID_IDirectMusicPortDownload),
315 GE(IID_IDirectMusicScript),
316 GE(IID_IDirectMusicSegment),
317 GE(IID_IDirectMusicSegment2),
318 GE(IID_IDirectMusicSegment8),
319 GE(IID_IDirectMusicSegmentState),
320 GE(IID_IDirectMusicSegmentState8),
321 GE(IID_IDirectMusicStyle),
322 GE(IID_IDirectMusicStyle8),
323 GE(IID_IDirectMusicSynth),
324 GE(IID_IDirectMusicSynth8),
325 GE(IID_IDirectMusicSynthSink),
326 GE(IID_IDirectMusicThru),
327 GE(IID_IDirectMusicTool),
328 GE(IID_IDirectMusicTool8),
329 GE(IID_IDirectMusicTrack),
330 GE(IID_IDirectMusicTrack8),
333 GE(IID_IStream),
335 /* GUIDs */
336 GE(GUID_DirectMusicAllTypes),
337 GE(GUID_NOTIFICATION_CHORD),
338 GE(GUID_NOTIFICATION_COMMAND),
339 GE(GUID_NOTIFICATION_MEASUREANDBEAT),
340 GE(GUID_NOTIFICATION_PERFORMANCE),
341 GE(GUID_NOTIFICATION_RECOMPOSE),
342 GE(GUID_NOTIFICATION_SEGMENT),
343 GE(GUID_BandParam),
344 GE(GUID_ChordParam),
345 GE(GUID_CommandParam),
346 GE(GUID_CommandParam2),
347 GE(GUID_CommandParamNext),
348 GE(GUID_IDirectMusicBand),
349 GE(GUID_IDirectMusicChordMap),
350 GE(GUID_IDirectMusicStyle),
351 GE(GUID_MuteParam),
352 GE(GUID_Play_Marker),
353 GE(GUID_RhythmParam),
354 GE(GUID_TempoParam),
355 GE(GUID_TimeSignature),
356 GE(GUID_Valid_Start_Time),
357 GE(GUID_Clear_All_Bands),
358 GE(GUID_ConnectToDLSCollection),
359 GE(GUID_Disable_Auto_Download),
360 GE(GUID_DisableTempo),
361 GE(GUID_DisableTimeSig),
362 GE(GUID_Download),
363 GE(GUID_DownloadToAudioPath),
364 GE(GUID_Enable_Auto_Download),
365 GE(GUID_EnableTempo),
366 GE(GUID_EnableTimeSig),
368 GE(GUID_SeedVariations),
369 GE(GUID_StandardMIDIFile),
370 GE(GUID_Unload),
371 GE(GUID_UnloadFromAudioPath),
372 GE(GUID_Variations),
373 GE(GUID_PerfMasterTempo),
374 GE(GUID_PerfMasterVolume),
375 GE(GUID_PerfMasterGrooveLevel),
376 GE(GUID_PerfAutoDownload),
377 GE(GUID_DefaultGMCollection),
378 GE(GUID_Synth_Default),
379 GE(GUID_Buffer_Reverb),
380 GE(GUID_Buffer_EnvReverb),
381 GE(GUID_Buffer_Stereo),
382 GE(GUID_Buffer_3D_Dry),
383 GE(GUID_Buffer_Mono),
384 GE(GUID_DMUS_PROP_GM_Hardware),
385 GE(GUID_DMUS_PROP_GS_Capable),
386 GE(GUID_DMUS_PROP_GS_Hardware),
387 GE(GUID_DMUS_PROP_DLS1),
388 GE(GUID_DMUS_PROP_DLS2),
389 GE(GUID_DMUS_PROP_Effects),
390 GE(GUID_DMUS_PROP_INSTRUMENT2),
391 GE(GUID_DMUS_PROP_LegacyCaps),
392 GE(GUID_DMUS_PROP_MemorySize),
393 GE(GUID_DMUS_PROP_SampleMemorySize),
394 GE(GUID_DMUS_PROP_SamplePlaybackRate),
395 GE(GUID_DMUS_PROP_SetSynthSink),
396 GE(GUID_DMUS_PROP_SinkUsesDSound),
397 GE(GUID_DMUS_PROP_SynthSink_DSOUND),
398 GE(GUID_DMUS_PROP_SynthSink_WAVE),
399 GE(GUID_DMUS_PROP_Volume),
400 GE(GUID_DMUS_PROP_WavesReverb),
401 GE(GUID_DMUS_PROP_WriteLatency),
402 GE(GUID_DMUS_PROP_WritePeriod),
403 GE(GUID_DMUS_PROP_XG_Capable),
404 GE(GUID_DMUS_PROP_XG_Hardware)
405 };
406
407 unsigned int i;
408
409 if (!id) return "(null)";
410
411 for (i = 0; i < ARRAY_SIZE(guids); i++) {
412 if (IsEqualGUID(id, guids[i].guid))
413 return guids[i].name;
414 }
415 /* if we didn't find it, act like standard debugstr_guid */
416 return debugstr_guid(id);
417}
418
419/* generic flag-dumping function */
420static const char* debugstr_flags (DWORD flags, const flag_info* names, size_t num_names){
421 char buffer[128] = "", *ptr = &buffer[0];
422 unsigned int i;
423 int size = sizeof(buffer);
424
425 for (i=0; i < num_names; i++)
426 {
427 if ((flags & names[i].val) || /* standard flag*/
428 ((!flags) && (!names[i].val))) { /* zero value only */
429 int cnt = snprintf(ptr, size, "%s ", names[i].name);
430 if (cnt < 0 || cnt >= size) break;
431 size -= cnt;
432 ptr += cnt;
433 }
434 }
435
436 return wine_dbg_sprintf("%s", buffer);
437}
438
439/* dump DMUS_OBJ flags */
440static const char *debugstr_DMUS_OBJ_FLAGS (DWORD flagmask) {
441 static const flag_info flags[] = {
454 };
455 return debugstr_flags(flagmask, flags, ARRAY_SIZE(flags));
456}
457
458/* Dump whole DMUS_OBJECTDESC struct */
460{
461 TRACE("DMUS_OBJECTDESC (%p):\n", desc);
462 TRACE(" - dwSize = %d\n", desc->dwSize);
463 TRACE(" - dwValidData = %s\n", debugstr_DMUS_OBJ_FLAGS (desc->dwValidData));
464 if (desc->dwValidData & DMUS_OBJ_CLASS) TRACE(" - guidClass = %s\n", debugstr_dmguid(&desc->guidClass));
465 if (desc->dwValidData & DMUS_OBJ_OBJECT) TRACE(" - guidObject = %s\n", debugstr_guid(&desc->guidObject));
466 if (desc->dwValidData & DMUS_OBJ_DATE) TRACE(" - ftDate = FIXME\n");
467 if (desc->dwValidData & DMUS_OBJ_VERSION) TRACE(" - vVersion = %s\n", debugstr_dmversion(&desc->vVersion));
468 if (desc->dwValidData & DMUS_OBJ_NAME) TRACE(" - wszName = %s\n", debugstr_w(desc->wszName));
469 if (desc->dwValidData & DMUS_OBJ_CATEGORY) TRACE(" - wszCategory = %s\n", debugstr_w(desc->wszCategory));
470 if (desc->dwValidData & DMUS_OBJ_FILENAME) TRACE(" - wszFileName = %s\n", debugstr_w(desc->wszFileName));
471 if (desc->dwValidData & DMUS_OBJ_MEMORY) TRACE(" - llMemLength = 0x%s\n - pbMemData = %p\n",
472 wine_dbgstr_longlong(desc->llMemLength), desc->pbMemData);
473 if (desc->dwValidData & DMUS_OBJ_STREAM) TRACE(" - pStream = %p\n", desc->pStream);
474}
475
476/* Dump DMUS_PORTPARAMS flags */
477static const char* debugstr_DMUS_PORTPARAMS_FLAGS(DWORD flagmask)
478{
479 static const flag_info flags[] = {
486 };
487 return debugstr_flags(flagmask, flags, ARRAY_SIZE(flags));
488}
489
490/* Dump whole DMUS_PORTPARAMS struct */
492{
493 TRACE("DMUS_PORTPARAMS (%p):\n", params);
494 TRACE(" - dwSize = %d\n", params->dwSize);
495 TRACE(" - dwValidParams = %s\n", debugstr_DMUS_PORTPARAMS_FLAGS(params->dwValidParams));
496 if (params->dwValidParams & DMUS_PORTPARAMS_VOICES) TRACE(" - dwVoices = %u\n", params->dwVoices);
497 if (params->dwValidParams & DMUS_PORTPARAMS_CHANNELGROUPS) TRACE(" - dwChannelGroup = %u\n", params->dwChannelGroups);
498 if (params->dwValidParams & DMUS_PORTPARAMS_AUDIOCHANNELS) TRACE(" - dwAudioChannels = %u\n", params->dwAudioChannels);
499 if (params->dwValidParams & DMUS_PORTPARAMS_SAMPLERATE) TRACE(" - dwSampleRate = %u\n", params->dwSampleRate);
500 if (params->dwValidParams & DMUS_PORTPARAMS_EFFECTS) TRACE(" - dwEffectFlags = %x\n", params->dwEffectFlags);
501 if (params->dwValidParams & DMUS_PORTPARAMS_SHARE) TRACE(" - fShare = %u\n", params->fShare);
502}
static int num_names
Definition: apinames.c:56
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define ARRAY_SIZE(A)
Definition: main.h:20
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
const GUID IID_IClassFactory
HRESULT WINAPI DMUSIC_CreateDirectMusicCollectionImpl(LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter)
Definition: collection.c:530
#define FE(x)
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
const char * wine_dbg_sprintf(const char *format,...)
Definition: compat.c:296
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
static const WCHAR version[]
Definition: asmname.c:66
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
#define F_INSTRUMENT_DRUMS
Definition: dls1.h:51
HRESULT WINAPI DMUSIC_CreateDirectMusicImpl(LPCGUID riid, LPVOID *ret_iface, LPUNKNOWN unkouter)
Definition: dmusic.c:592
int even_or_odd(DWORD number)
Definition: dmusic_main.c:214
void Patch2MIDILOCALE(DWORD dwPatch, LPMIDILOCALE pLocale)
Definition: dmusic_main.c:205
const char * debugstr_fourcc(DWORD fourcc)
Definition: dmusic_main.c:219
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock)
Definition: dmusic_main.c:101
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppv)
Definition: dmusic_main.c:91
HRESULT WINAPI DllRegisterServer(void)
Definition: dmusic_main.c:176
static IClassFactoryImpl Collection_CF
Definition: dmusic_main.c:122
LONG DMUSIC_refCount
Definition: dmusic_main.c:42
static const char * debugstr_DMUS_OBJ_FLAGS(DWORD flagmask)
Definition: dmusic_main.c:440
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
Definition: dmusic_main.c:130
static const char * debugstr_dmversion(const DMUS_VERSION *version)
Definition: dmusic_main.c:227
static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
Definition: dmusic_main.c:84
static HINSTANCE instance
Definition: dmusic_main.c:41
DWORD MIDILOCALE2Patch(const MIDILOCALE *pLocale)
Definition: dmusic_main.c:195
void dump_DMUS_OBJECTDESC(LPDMUS_OBJECTDESC desc)
Definition: dmusic_main.c:459
static const char * debugstr_flags(DWORD flags, const flag_info *names, size_t num_names)
Definition: dmusic_main.c:420
static const IClassFactoryVtbl classfactory_vtbl
Definition: dmusic_main.c:113
HRESULT WINAPI DllUnregisterServer(void)
Definition: dmusic_main.c:184
void dump_DMUS_PORTPARAMS(LPDMUS_PORTPARAMS params)
Definition: dmusic_main.c:491
static const char * debugstr_DMUS_PORTPARAMS_FLAGS(DWORD flagmask)
Definition: dmusic_main.c:477
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
Definition: dmusic_main.c:57
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: dmusic_main.c:156
static IClassFactoryImpl DirectMusic_CF
Definition: dmusic_main.c:121
static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
Definition: dmusic_main.c:77
const char * debugstr_dmguid(const GUID *id)
Definition: dmusic_main.c:237
HRESULT WINAPI DllCanUnloadNow(void)
Definition: dmusic_main.c:145
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
Definition: dmusic_main.c:52
static void DMUSIC_UnlockModule(void)
static void DMUSIC_LockModule(void)
#define GE(x)
#define DMUS_PORTPARAMS_CHANNELGROUPS
Definition: dmusicc.h:205
#define DMUS_PORTPARAMS_SAMPLERATE
Definition: dmusicc.h:207
#define DMUS_PORTPARAMS_AUDIOCHANNELS
Definition: dmusicc.h:206
#define DMUS_PORTPARAMS_SHARE
Definition: dmusicc.h:209
#define DMUS_PORTPARAMS_VOICES
Definition: dmusicc.h:204
#define DMUS_PORTPARAMS_EFFECTS
Definition: dmusicc.h:208
#define DMUS_OBJ_DATE
Definition: dmusici.h:273
#define DMUS_OBJ_FULLPATH
Definition: dmusici.h:270
#define DMUS_OBJ_MEMORY
Definition: dmusici.h:275
#define DMUS_OBJ_NAME
Definition: dmusici.h:267
#define DMUS_OBJ_STREAM
Definition: dmusici.h:276
#define DMUS_OBJ_FILENAME
Definition: dmusici.h:269
#define DMUS_OBJ_CLASS
Definition: dmusici.h:266
#define DMUS_OBJ_URL
Definition: dmusici.h:271
#define DMUS_OBJ_VERSION
Definition: dmusici.h:272
#define DMUS_OBJ_CATEGORY
Definition: dmusici.h:268
#define DMUS_OBJ_OBJECT
Definition: dmusici.h:265
#define GUID_IgnoreBankSelectForGM
Definition: dmusici.h:181
#define DMUS_OBJ_LOADED
Definition: dmusici.h:274
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
GLuint GLuint * names
Definition: glext.h:11545
GLuint buffer
Definition: glext.h:5915
GLenum const GLfloat * params
Definition: glext.h:5645
GLbitfield flags
Definition: glext.h:7161
GLuint GLfloat * val
Definition: glext.h:7180
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
HRESULT(* fnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj)
Definition: hnetcfg.c:37
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_w
Definition: kernel32.h:32
static IN DWORD IN LPVOID lpvReserved
const GUID * guid
static PVOID ptr
Definition: dispmode.c:27
static const WCHAR desc[]
Definition: protectdata.c:36
static unsigned int number
Definition: dsound.c:1479
#define LOWORD(l)
Definition: pedump.c:82
long LONG
Definition: pedump.c:60
const GUID IID_IPersistStream
Definition: proxy.cpp:13
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define REFIID
Definition: guiddef.h:118
#define REFCLSID
Definition: guiddef.h:117
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:110
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:98
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT(WINAPI *fnCreateInstance)(REFIID riid
ULONG ulInstrument
Definition: dls1.h:97
ULONG ulBank
Definition: dls1.h:96
Definition: name.c:39
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#define HIWORD(l)
Definition: typedefs.h:247
#define WINAPI
Definition: msvc.h:6
#define S_FALSE
Definition: winerror.h:2357
#define E_NOINTERFACE
Definition: winerror.h:2364
#define E_POINTER
Definition: winerror.h:2365
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:2663
#define snprintf
Definition: wintirpc.h:48