1 /* DirectMusicInteractiveEngine Main
3 * Copyright (C) 2003-2004 Rok Mandeljc
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Library General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 #include "dmime_private.h"
22 WINE_DEFAULT_DEBUG_CHANNEL(dmime);
26 ICOM_VFIELD(IClassFactory);
30 /******************************************************************
31 * DirectMusicPerformance ClassFactory
33 static HRESULT WINAPI PerformanceCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
34 ICOM_THIS(IClassFactoryImpl,iface);
35 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
39 static ULONG WINAPI PerformanceCF_AddRef(LPCLASSFACTORY iface) {
40 ICOM_THIS(IClassFactoryImpl,iface);
44 static ULONG WINAPI PerformanceCF_Release(LPCLASSFACTORY iface) {
45 ICOM_THIS(IClassFactoryImpl,iface);
46 /* static class, won't be freed */
50 static HRESULT WINAPI PerformanceCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
51 ICOM_THIS(IClassFactoryImpl,iface);
52 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
53 return DMUSIC_CreateDirectMusicPerformanceImpl (riid, ppobj, pOuter);
56 static HRESULT WINAPI PerformanceCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
57 ICOM_THIS(IClassFactoryImpl,iface);
58 FIXME("(%p, %d): stub\n", This, dolock);
62 static ICOM_VTABLE(IClassFactory) PerformanceCF_Vtbl = {
63 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
64 PerformanceCF_QueryInterface,
66 PerformanceCF_Release,
67 PerformanceCF_CreateInstance,
68 PerformanceCF_LockServer
71 static IClassFactoryImpl Performance_CF = {&PerformanceCF_Vtbl, 1 };
73 /******************************************************************
74 * DirectMusicSegment ClassFactory
76 static HRESULT WINAPI SegmentCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
77 ICOM_THIS(IClassFactoryImpl,iface);
78 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
82 static ULONG WINAPI SegmentCF_AddRef(LPCLASSFACTORY iface) {
83 ICOM_THIS(IClassFactoryImpl,iface);
87 static ULONG WINAPI SegmentCF_Release(LPCLASSFACTORY iface) {
88 ICOM_THIS(IClassFactoryImpl,iface);
89 /* static class, won't be freed */
93 static HRESULT WINAPI SegmentCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
94 ICOM_THIS(IClassFactoryImpl,iface);
95 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
96 return DMUSIC_CreateDirectMusicSegmentImpl (riid, ppobj, pOuter);
99 static HRESULT WINAPI SegmentCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
100 ICOM_THIS(IClassFactoryImpl,iface);
101 FIXME("(%p, %d): stub\n", This, dolock);
105 static ICOM_VTABLE(IClassFactory) SegmentCF_Vtbl = {
106 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
107 SegmentCF_QueryInterface,
110 SegmentCF_CreateInstance,
114 static IClassFactoryImpl Segment_CF = {&SegmentCF_Vtbl, 1 };
116 /******************************************************************
117 * DirectMusicSegmentState ClassFactory
119 static HRESULT WINAPI SegmentStateCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
120 ICOM_THIS(IClassFactoryImpl,iface);
121 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
122 return E_NOINTERFACE;
125 static ULONG WINAPI SegmentStateCF_AddRef(LPCLASSFACTORY iface) {
126 ICOM_THIS(IClassFactoryImpl,iface);
127 return ++(This->ref);
130 static ULONG WINAPI SegmentStateCF_Release(LPCLASSFACTORY iface) {
131 ICOM_THIS(IClassFactoryImpl,iface);
132 /* static class, won't be freed */
133 return --(This->ref);
136 static HRESULT WINAPI SegmentStateCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
137 ICOM_THIS(IClassFactoryImpl,iface);
138 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
139 return DMUSIC_CreateDirectMusicSegmentStateImpl (riid, ppobj, pOuter);
142 static HRESULT WINAPI SegmentStateCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
143 ICOM_THIS(IClassFactoryImpl,iface);
144 FIXME("(%p, %d): stub\n", This, dolock);
148 static ICOM_VTABLE(IClassFactory) SegmentStateCF_Vtbl = {
149 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
150 SegmentStateCF_QueryInterface,
151 SegmentStateCF_AddRef,
152 SegmentStateCF_Release,
153 SegmentStateCF_CreateInstance,
154 SegmentStateCF_LockServer
157 static IClassFactoryImpl SegmentState_CF = {&SegmentStateCF_Vtbl, 1 };
159 /******************************************************************
160 * DirectMusicGraph ClassFactory
162 static HRESULT WINAPI GraphCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
163 ICOM_THIS(IClassFactoryImpl,iface);
164 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
165 return E_NOINTERFACE;
168 static ULONG WINAPI GraphCF_AddRef(LPCLASSFACTORY iface) {
169 ICOM_THIS(IClassFactoryImpl,iface);
170 return ++(This->ref);
173 static ULONG WINAPI GraphCF_Release(LPCLASSFACTORY iface) {
174 ICOM_THIS(IClassFactoryImpl,iface);
175 /* static class, won't be freed */
176 return --(This->ref);
179 static HRESULT WINAPI GraphCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
180 ICOM_THIS(IClassFactoryImpl,iface);
181 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
182 return DMUSIC_CreateDirectMusicGraphImpl (riid, ppobj, pOuter);
185 static HRESULT WINAPI GraphCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
186 ICOM_THIS(IClassFactoryImpl,iface);
187 FIXME("(%p, %d): stub\n", This, dolock);
191 static ICOM_VTABLE(IClassFactory) GraphCF_Vtbl = {
192 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
193 GraphCF_QueryInterface,
196 GraphCF_CreateInstance,
200 static IClassFactoryImpl Graph_CF = {&GraphCF_Vtbl, 1 };
202 /******************************************************************
203 * DirectMusicTempoTrack ClassFactory
205 static HRESULT WINAPI TempoTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
206 ICOM_THIS(IClassFactoryImpl,iface);
207 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
208 return E_NOINTERFACE;
211 static ULONG WINAPI TempoTrackCF_AddRef(LPCLASSFACTORY iface) {
212 ICOM_THIS(IClassFactoryImpl,iface);
213 return ++(This->ref);
216 static ULONG WINAPI TempoTrackCF_Release(LPCLASSFACTORY iface) {
217 ICOM_THIS(IClassFactoryImpl,iface);
218 /* static class, won't be freed */
219 return --(This->ref);
222 static HRESULT WINAPI TempoTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
223 ICOM_THIS(IClassFactoryImpl,iface);
224 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
225 return DMUSIC_CreateDirectMusicTempoTrack (riid, ppobj, pOuter);
228 static HRESULT WINAPI TempoTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
229 ICOM_THIS(IClassFactoryImpl,iface);
230 FIXME("(%p, %d): stub\n", This, dolock);
234 static ICOM_VTABLE(IClassFactory) TempoTrackCF_Vtbl = {
235 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
236 TempoTrackCF_QueryInterface,
238 TempoTrackCF_Release,
239 TempoTrackCF_CreateInstance,
240 TempoTrackCF_LockServer
243 static IClassFactoryImpl TempoTrack_CF = {&TempoTrackCF_Vtbl, 1 };
245 /******************************************************************
246 * DirectMusicSeqTrack ClassFactory
248 static HRESULT WINAPI SeqTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
249 ICOM_THIS(IClassFactoryImpl,iface);
250 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
251 return E_NOINTERFACE;
254 static ULONG WINAPI SeqTrackCF_AddRef(LPCLASSFACTORY iface) {
255 ICOM_THIS(IClassFactoryImpl,iface);
256 return ++(This->ref);
259 static ULONG WINAPI SeqTrackCF_Release(LPCLASSFACTORY iface) {
260 ICOM_THIS(IClassFactoryImpl,iface);
261 /* static class, won't be freed */
262 return --(This->ref);
265 static HRESULT WINAPI SeqTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
266 ICOM_THIS(IClassFactoryImpl,iface);
267 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
268 return DMUSIC_CreateDirectMusicSeqTrack (riid, ppobj, pOuter);
271 static HRESULT WINAPI SeqTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
272 ICOM_THIS(IClassFactoryImpl,iface);
273 FIXME("(%p, %d): stub\n", This, dolock);
277 static ICOM_VTABLE(IClassFactory) SeqTrackCF_Vtbl = {
278 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
279 SeqTrackCF_QueryInterface,
282 SeqTrackCF_CreateInstance,
283 SeqTrackCF_LockServer
286 static IClassFactoryImpl SeqTrack_CF = {&SeqTrackCF_Vtbl, 1 };
288 /******************************************************************
289 * DirectMusicSysExTrack ClassFactory
291 static HRESULT WINAPI SysExTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
292 ICOM_THIS(IClassFactoryImpl,iface);
293 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
294 return E_NOINTERFACE;
297 static ULONG WINAPI SysExTrackCF_AddRef(LPCLASSFACTORY iface) {
298 ICOM_THIS(IClassFactoryImpl,iface);
299 return ++(This->ref);
302 static ULONG WINAPI SysExTrackCF_Release(LPCLASSFACTORY iface) {
303 ICOM_THIS(IClassFactoryImpl,iface);
304 /* static class, won't be freed */
305 return --(This->ref);
308 static HRESULT WINAPI SysExTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
309 ICOM_THIS(IClassFactoryImpl,iface);
310 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
311 return DMUSIC_CreateDirectMusicSysExTrack (riid, ppobj, pOuter);
314 static HRESULT WINAPI SysExTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
315 ICOM_THIS(IClassFactoryImpl,iface);
316 FIXME("(%p, %d): stub\n", This, dolock);
320 static ICOM_VTABLE(IClassFactory) SysExTrackCF_Vtbl = {
321 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
322 SysExTrackCF_QueryInterface,
324 SysExTrackCF_Release,
325 SysExTrackCF_CreateInstance,
326 SysExTrackCF_LockServer
329 static IClassFactoryImpl SysExTrack_CF = {&SysExTrackCF_Vtbl, 1 };
331 /******************************************************************
332 * DirectMusicTimeSigTrack ClassFactory
334 static HRESULT WINAPI TimeSigTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
335 ICOM_THIS(IClassFactoryImpl,iface);
336 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
337 return E_NOINTERFACE;
340 static ULONG WINAPI TimeSigTrackCF_AddRef(LPCLASSFACTORY iface) {
341 ICOM_THIS(IClassFactoryImpl,iface);
342 return ++(This->ref);
345 static ULONG WINAPI TimeSigTrackCF_Release(LPCLASSFACTORY iface) {
346 ICOM_THIS(IClassFactoryImpl,iface);
347 /* static class, won't be freed */
348 return --(This->ref);
351 static HRESULT WINAPI TimeSigTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
352 ICOM_THIS(IClassFactoryImpl,iface);
353 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
354 return DMUSIC_CreateDirectMusicTimeSigTrack (riid, ppobj, pOuter);
357 static HRESULT WINAPI TimeSigTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
358 ICOM_THIS(IClassFactoryImpl,iface);
359 FIXME("(%p, %d): stub\n", This, dolock);
363 static ICOM_VTABLE(IClassFactory) TimeSigTrackCF_Vtbl = {
364 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
365 TimeSigTrackCF_QueryInterface,
366 TimeSigTrackCF_AddRef,
367 TimeSigTrackCF_Release,
368 TimeSigTrackCF_CreateInstance,
369 TimeSigTrackCF_LockServer
372 static IClassFactoryImpl TimeSigTrack_CF = {&TimeSigTrackCF_Vtbl, 1 };
374 /******************************************************************
375 * DirectMusicParamControlTrack ClassFactory
377 static HRESULT WINAPI ParamControlTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
378 ICOM_THIS(IClassFactoryImpl,iface);
379 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
380 return E_NOINTERFACE;
383 static ULONG WINAPI ParamControlTrackCF_AddRef(LPCLASSFACTORY iface) {
384 ICOM_THIS(IClassFactoryImpl,iface);
385 return ++(This->ref);
388 static ULONG WINAPI ParamControlTrackCF_Release(LPCLASSFACTORY iface) {
389 ICOM_THIS(IClassFactoryImpl,iface);
390 /* static class, won't be freed */
391 return --(This->ref);
394 static HRESULT WINAPI ParamControlTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
395 ICOM_THIS(IClassFactoryImpl,iface);
396 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
397 return DMUSIC_CreateDirectMusicParamControlTrack (riid, ppobj, pOuter);
400 static HRESULT WINAPI ParamControlTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
401 ICOM_THIS(IClassFactoryImpl,iface);
402 FIXME("(%p, %d): stub\n", This, dolock);
406 static ICOM_VTABLE(IClassFactory) ParamControlTrackCF_Vtbl = {
407 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
408 ParamControlTrackCF_QueryInterface,
409 ParamControlTrackCF_AddRef,
410 ParamControlTrackCF_Release,
411 ParamControlTrackCF_CreateInstance,
412 ParamControlTrackCF_LockServer
415 static IClassFactoryImpl ParamControlTrack_CF = {&ParamControlTrackCF_Vtbl, 1 };
417 /******************************************************************
418 * DirectMusicMarkerTrack ClassFactory
420 static HRESULT WINAPI MarkerTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
421 ICOM_THIS(IClassFactoryImpl,iface);
422 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
423 return E_NOINTERFACE;
426 static ULONG WINAPI MarkerTrackCF_AddRef(LPCLASSFACTORY iface) {
427 ICOM_THIS(IClassFactoryImpl,iface);
428 return ++(This->ref);
431 static ULONG WINAPI MarkerTrackCF_Release(LPCLASSFACTORY iface) {
432 ICOM_THIS(IClassFactoryImpl,iface);
433 /* static class, won't be freed */
434 return --(This->ref);
437 static HRESULT WINAPI MarkerTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
438 ICOM_THIS(IClassFactoryImpl,iface);
439 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
440 return DMUSIC_CreateDirectMusicMarkerTrack (riid, ppobj, pOuter);
443 static HRESULT WINAPI MarkerTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
444 ICOM_THIS(IClassFactoryImpl,iface);
445 FIXME("(%p, %d): stub\n", This, dolock);
449 static ICOM_VTABLE(IClassFactory) MarkerTrackCF_Vtbl = {
450 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
451 MarkerTrackCF_QueryInterface,
452 MarkerTrackCF_AddRef,
453 MarkerTrackCF_Release,
454 MarkerTrackCF_CreateInstance,
455 MarkerTrackCF_LockServer
458 static IClassFactoryImpl MarkerTrack_CF = {&MarkerTrackCF_Vtbl, 1 };
460 /******************************************************************
461 * DirectMusicLyricsTrack ClassFactory
463 static HRESULT WINAPI LyricsTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
464 ICOM_THIS(IClassFactoryImpl,iface);
465 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
466 return E_NOINTERFACE;
469 static ULONG WINAPI LyricsTrackCF_AddRef(LPCLASSFACTORY iface) {
470 ICOM_THIS(IClassFactoryImpl,iface);
471 return ++(This->ref);
474 static ULONG WINAPI LyricsTrackCF_Release(LPCLASSFACTORY iface) {
475 ICOM_THIS(IClassFactoryImpl,iface);
476 /* static class, won't be freed */
477 return --(This->ref);
480 static HRESULT WINAPI LyricsTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
481 ICOM_THIS(IClassFactoryImpl,iface);
482 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
483 return DMUSIC_CreateDirectMusicLyricsTrack (riid, ppobj, pOuter);
486 static HRESULT WINAPI LyricsTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
487 ICOM_THIS(IClassFactoryImpl,iface);
488 FIXME("(%p, %d): stub\n", This, dolock);
492 static ICOM_VTABLE(IClassFactory) LyricsTrackCF_Vtbl = {
493 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
494 LyricsTrackCF_QueryInterface,
495 LyricsTrackCF_AddRef,
496 LyricsTrackCF_Release,
497 LyricsTrackCF_CreateInstance,
498 LyricsTrackCF_LockServer
501 static IClassFactoryImpl LyricsTrack_CF = {&LyricsTrackCF_Vtbl, 1 };
504 /******************************************************************
505 * DirectMusicSegTriggerTrack ClassFactory
507 static HRESULT WINAPI SegTriggerTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
508 ICOM_THIS(IClassFactoryImpl,iface);
509 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
510 return E_NOINTERFACE;
513 static ULONG WINAPI SegTriggerTrackCF_AddRef(LPCLASSFACTORY iface) {
514 ICOM_THIS(IClassFactoryImpl,iface);
515 return ++(This->ref);
518 static ULONG WINAPI SegTriggerTrackCF_Release(LPCLASSFACTORY iface) {
519 ICOM_THIS(IClassFactoryImpl,iface);
520 /* static class, won't be freed */
521 return --(This->ref);
524 static HRESULT WINAPI SegTriggerTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
525 ICOM_THIS(IClassFactoryImpl,iface);
526 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
527 return DMUSIC_CreateDirectMusicSegTriggerTrack (riid, ppobj, pOuter);
530 static HRESULT WINAPI SegTriggerTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
531 ICOM_THIS(IClassFactoryImpl,iface);
532 FIXME("(%p, %d): stub\n", This, dolock);
536 static ICOM_VTABLE(IClassFactory) SegTriggerTrackCF_Vtbl = {
537 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
538 SegTriggerTrackCF_QueryInterface,
539 SegTriggerTrackCF_AddRef,
540 SegTriggerTrackCF_Release,
541 SegTriggerTrackCF_CreateInstance,
542 SegTriggerTrackCF_LockServer
545 static IClassFactoryImpl SegTriggerTrack_CF = {&SegTriggerTrackCF_Vtbl, 1 };
547 /******************************************************************
548 * DirectMusicAudioPath ClassFactory
550 static HRESULT WINAPI AudioPathCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
551 ICOM_THIS(IClassFactoryImpl,iface);
552 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
553 return E_NOINTERFACE;
556 static ULONG WINAPI AudioPathCF_AddRef(LPCLASSFACTORY iface) {
557 ICOM_THIS(IClassFactoryImpl,iface);
558 return ++(This->ref);
561 static ULONG WINAPI AudioPathCF_Release(LPCLASSFACTORY iface) {
562 ICOM_THIS(IClassFactoryImpl,iface);
563 /* static class, won't be freed */
564 return --(This->ref);
567 static HRESULT WINAPI AudioPathCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
568 ICOM_THIS(IClassFactoryImpl,iface);
569 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
570 return DMUSIC_CreateDirectMusicAudioPathImpl (riid, ppobj, pOuter);
573 static HRESULT WINAPI AudioPathCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
574 ICOM_THIS(IClassFactoryImpl,iface);
575 FIXME("(%p, %d): stub\n", This, dolock);
579 static ICOM_VTABLE(IClassFactory) AudioPathCF_Vtbl = {
580 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
581 AudioPathCF_QueryInterface,
584 AudioPathCF_CreateInstance,
585 AudioPathCF_LockServer
588 static IClassFactoryImpl AudioPath_CF = {&AudioPathCF_Vtbl, 1 };
590 /******************************************************************
591 * DirectMusicWaveTrack ClassFactory
593 static HRESULT WINAPI WaveTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
594 ICOM_THIS(IClassFactoryImpl,iface);
595 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
596 return E_NOINTERFACE;
599 static ULONG WINAPI WaveTrackCF_AddRef(LPCLASSFACTORY iface) {
600 ICOM_THIS(IClassFactoryImpl,iface);
601 return ++(This->ref);
604 static ULONG WINAPI WaveTrackCF_Release(LPCLASSFACTORY iface) {
605 ICOM_THIS(IClassFactoryImpl,iface);
606 /* static class, won't be freed */
607 return --(This->ref);
610 static HRESULT WINAPI WaveTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
611 ICOM_THIS(IClassFactoryImpl,iface);
612 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
613 return DMUSIC_CreateDirectMusicWaveTrack (riid, ppobj, pOuter);
616 static HRESULT WINAPI WaveTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
617 ICOM_THIS(IClassFactoryImpl,iface);
618 FIXME("(%p, %d): stub\n", This, dolock);
622 static ICOM_VTABLE(IClassFactory) WaveTrackCF_Vtbl = {
623 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
624 WaveTrackCF_QueryInterface,
627 WaveTrackCF_CreateInstance,
628 WaveTrackCF_LockServer
631 static IClassFactoryImpl WaveTrack_CF = {&WaveTrackCF_Vtbl, 1 };
633 /******************************************************************
638 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
639 if (fdwReason == DLL_PROCESS_ATTACH) {
640 DisableThreadLibraryCalls(hinstDLL);
641 /* FIXME: Initialisation */
643 else if (fdwReason == DLL_PROCESS_DETACH) {
651 /******************************************************************
652 * DllCanUnloadNow (DMIME.1)
656 HRESULT WINAPI DMIME_DllCanUnloadNow(void) {
657 FIXME("(void): stub\n");
662 /******************************************************************
663 * DllGetClassObject (DMIME.2)
667 HRESULT WINAPI DMIME_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
669 TRACE("(%s, %s, %p)\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
670 if (IsEqualCLSID (rclsid, &CLSID_DirectMusicPerformance) && IsEqualIID (riid, &IID_IClassFactory)) {
671 *ppv = (LPVOID) &Performance_CF;
672 IClassFactory_AddRef((IClassFactory*)*ppv);
674 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSegment) && IsEqualIID (riid, &IID_IClassFactory)) {
675 *ppv = (LPVOID) &Segment_CF;
676 IClassFactory_AddRef((IClassFactory*)*ppv);
678 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSegmentState) && IsEqualIID (riid, &IID_IClassFactory)) {
679 *ppv = (LPVOID) &SegmentState_CF;
680 IClassFactory_AddRef((IClassFactory*)*ppv);
682 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicGraph) && IsEqualIID (riid, &IID_IClassFactory)) {
683 *ppv = (LPVOID) &Graph_CF;
684 IClassFactory_AddRef((IClassFactory*)*ppv);
686 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicTempoTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
687 *ppv = (LPVOID) &TempoTrack_CF;
688 IClassFactory_AddRef((IClassFactory*)*ppv);
690 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSeqTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
691 *ppv = (LPVOID) &SeqTrack_CF;
692 IClassFactory_AddRef((IClassFactory*)*ppv);
694 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSysExTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
695 *ppv = (LPVOID) &SysExTrack_CF;
696 IClassFactory_AddRef((IClassFactory*)*ppv);
698 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicTimeSigTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
699 *ppv = (LPVOID) &TimeSigTrack_CF;
700 IClassFactory_AddRef((IClassFactory*)*ppv);
702 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicParamControlTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
703 *ppv = (LPVOID) &ParamControlTrack_CF;
704 IClassFactory_AddRef((IClassFactory*)*ppv);
706 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicMarkerTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
707 *ppv = (LPVOID) &MarkerTrack_CF;
708 IClassFactory_AddRef((IClassFactory*)*ppv);
710 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicLyricsTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
711 *ppv = (LPVOID) &LyricsTrack_CF;
712 IClassFactory_AddRef((IClassFactory*)*ppv);
714 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSegTriggerTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
715 *ppv = (LPVOID) &SegTriggerTrack_CF;
716 IClassFactory_AddRef((IClassFactory*)*ppv);
718 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicAudioPath) && IsEqualIID (riid, &IID_IClassFactory)) {
719 *ppv = (LPVOID) &AudioPath_CF;
720 IClassFactory_AddRef((IClassFactory*)*ppv);
722 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicWaveTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
723 *ppv = (LPVOID) &WaveTrack_CF;
724 IClassFactory_AddRef((IClassFactory*)*ppv);
728 WARN("(%s, %s, %p): no interface found.\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
729 return CLASS_E_CLASSNOTAVAILABLE;
733 /******************************************************************
738 /* check whether the given DWORD is even (return 0) or odd (return 1) */
739 int even_or_odd (DWORD number) {
740 return (number & 0x1); /* basically, check if bit 0 is set ;) */
743 /* FOURCC to string conversion for debug messages */
744 const char *debugstr_fourcc (DWORD fourcc) {
745 if (!fourcc) return "'null'";
746 return wine_dbg_sprintf ("\'%c%c%c%c\'",
747 (char)(fourcc), (char)(fourcc >> 8),
748 (char)(fourcc >> 16), (char)(fourcc >> 24));
751 /* DMUS_VERSION struct to string conversion for debug messages */
752 const char *debugstr_dmversion (LPDMUS_VERSION version) {
753 if (!version) return "'null'";
754 return wine_dbg_sprintf ("\'%i,%i,%i,%i\'",
755 (int)((version->dwVersionMS && 0xFFFF0000) >> 8), (int)(version->dwVersionMS && 0x0000FFFF),
756 (int)((version->dwVersionLS && 0xFFFF0000) >> 8), (int)(version->dwVersionLS && 0x0000FFFF));
759 /* returns name of given GUID */
760 const char *debugstr_dmguid (const GUID *id) {
761 static const guid_info guids[] = {
763 GE(CLSID_AudioVBScript),
764 GE(CLSID_DirectMusic),
765 GE(CLSID_DirectMusicAudioPath),
766 GE(CLSID_DirectMusicAudioPathConfig),
767 GE(CLSID_DirectMusicAuditionTrack),
768 GE(CLSID_DirectMusicBand),
769 GE(CLSID_DirectMusicBandTrack),
770 GE(CLSID_DirectMusicChordMapTrack),
771 GE(CLSID_DirectMusicChordMap),
772 GE(CLSID_DirectMusicChordTrack),
773 GE(CLSID_DirectMusicCollection),
774 GE(CLSID_DirectMusicCommandTrack),
775 GE(CLSID_DirectMusicComposer),
776 GE(CLSID_DirectMusicContainer),
777 GE(CLSID_DirectMusicGraph),
778 GE(CLSID_DirectMusicLoader),
779 GE(CLSID_DirectMusicLyricsTrack),
780 GE(CLSID_DirectMusicMarkerTrack),
781 GE(CLSID_DirectMusicMelodyFormulationTrack),
782 GE(CLSID_DirectMusicMotifTrack),
783 GE(CLSID_DirectMusicMuteTrack),
784 GE(CLSID_DirectMusicParamControlTrack),
785 GE(CLSID_DirectMusicPatternTrack),
786 GE(CLSID_DirectMusicPerformance),
787 GE(CLSID_DirectMusicScript),
788 GE(CLSID_DirectMusicScriptAutoImpSegment),
789 GE(CLSID_DirectMusicScriptAutoImpPerformance),
790 GE(CLSID_DirectMusicScriptAutoImpSegmentState),
791 GE(CLSID_DirectMusicScriptAutoImpAudioPathConfig),
792 GE(CLSID_DirectMusicScriptAutoImpAudioPath),
793 GE(CLSID_DirectMusicScriptAutoImpSong),
794 GE(CLSID_DirectMusicScriptSourceCodeLoader),
795 GE(CLSID_DirectMusicScriptTrack),
796 GE(CLSID_DirectMusicSection),
797 GE(CLSID_DirectMusicSegment),
798 GE(CLSID_DirectMusicSegmentState),
799 GE(CLSID_DirectMusicSegmentTriggerTrack),
800 GE(CLSID_DirectMusicSegTriggerTrack),
801 GE(CLSID_DirectMusicSeqTrack),
802 GE(CLSID_DirectMusicSignPostTrack),
803 GE(CLSID_DirectMusicSong),
804 GE(CLSID_DirectMusicStyle),
805 GE(CLSID_DirectMusicStyleTrack),
806 GE(CLSID_DirectMusicSynth),
807 GE(CLSID_DirectMusicSynthSink),
808 GE(CLSID_DirectMusicSysExTrack),
809 GE(CLSID_DirectMusicTemplate),
810 GE(CLSID_DirectMusicTempoTrack),
811 GE(CLSID_DirectMusicTimeSigTrack),
812 GE(CLSID_DirectMusicWaveTrack),
813 GE(CLSID_DirectSoundWave),
815 GE(IID_IDirectMusic),
816 GE(IID_IDirectMusic2),
817 GE(IID_IDirectMusic8),
818 GE(IID_IDirectMusicAudioPath),
819 GE(IID_IDirectMusicBand),
820 GE(IID_IDirectMusicBuffer),
821 GE(IID_IDirectMusicChordMap),
822 GE(IID_IDirectMusicCollection),
823 GE(IID_IDirectMusicComposer),
824 GE(IID_IDirectMusicContainer),
825 GE(IID_IDirectMusicDownload),
826 GE(IID_IDirectMusicDownloadedInstrument),
827 GE(IID_IDirectMusicGetLoader),
828 GE(IID_IDirectMusicGraph),
829 GE(IID_IDirectMusicInstrument),
830 GE(IID_IDirectMusicLoader),
831 GE(IID_IDirectMusicLoader8),
832 GE(IID_IDirectMusicObject),
833 GE(IID_IDirectMusicPatternTrack),
834 GE(IID_IDirectMusicPerformance),
835 GE(IID_IDirectMusicPerformance2),
836 GE(IID_IDirectMusicPerformance8),
837 GE(IID_IDirectMusicPort),
838 GE(IID_IDirectMusicPortDownload),
839 GE(IID_IDirectMusicScript),
840 GE(IID_IDirectMusicSegment),
841 GE(IID_IDirectMusicSegment2),
842 GE(IID_IDirectMusicSegment8),
843 GE(IID_IDirectMusicSegmentState),
844 GE(IID_IDirectMusicSegmentState8),
845 GE(IID_IDirectMusicStyle),
846 GE(IID_IDirectMusicStyle8),
847 GE(IID_IDirectMusicSynth),
848 GE(IID_IDirectMusicSynth8),
849 GE(IID_IDirectMusicSynthSink),
850 GE(IID_IDirectMusicThru),
851 GE(IID_IDirectMusicTool),
852 GE(IID_IDirectMusicTool8),
853 GE(IID_IDirectMusicTrack),
854 GE(IID_IDirectMusicTrack8),
856 GE(IID_IPersistStream),
858 GE(IID_IClassFactory),
860 GE(GUID_DirectMusicAllTypes),
861 GE(GUID_NOTIFICATION_CHORD),
862 GE(GUID_NOTIFICATION_COMMAND),
863 GE(GUID_NOTIFICATION_MEASUREANDBEAT),
864 GE(GUID_NOTIFICATION_PERFORMANCE),
865 GE(GUID_NOTIFICATION_RECOMPOSE),
866 GE(GUID_NOTIFICATION_SEGMENT),
869 GE(GUID_CommandParam),
870 GE(GUID_CommandParam2),
871 GE(GUID_CommandParamNext),
872 GE(GUID_IDirectMusicBand),
873 GE(GUID_IDirectMusicChordMap),
874 GE(GUID_IDirectMusicStyle),
876 GE(GUID_Play_Marker),
877 GE(GUID_RhythmParam),
879 GE(GUID_TimeSignature),
880 GE(GUID_Valid_Start_Time),
881 GE(GUID_Clear_All_Bands),
882 GE(GUID_ConnectToDLSCollection),
883 GE(GUID_Disable_Auto_Download),
884 GE(GUID_DisableTempo),
885 GE(GUID_DisableTimeSig),
887 GE(GUID_DownloadToAudioPath),
888 GE(GUID_Enable_Auto_Download),
889 GE(GUID_EnableTempo),
890 GE(GUID_EnableTimeSig),
891 GE(GUID_IgnoreBankSelectForGM),
892 GE(GUID_SeedVariations),
893 GE(GUID_StandardMIDIFile),
895 GE(GUID_UnloadFromAudioPath),
897 GE(GUID_PerfMasterTempo),
898 GE(GUID_PerfMasterVolume),
899 GE(GUID_PerfMasterGrooveLevel),
900 GE(GUID_PerfAutoDownload),
901 GE(GUID_DefaultGMCollection),
902 GE(GUID_Synth_Default),
903 GE(GUID_Buffer_Reverb),
904 GE(GUID_Buffer_EnvReverb),
905 GE(GUID_Buffer_Stereo),
906 GE(GUID_Buffer_3D_Dry),
907 GE(GUID_Buffer_Mono),
908 GE(GUID_DMUS_PROP_GM_Hardware),
909 GE(GUID_DMUS_PROP_GS_Capable),
910 GE(GUID_DMUS_PROP_GS_Hardware),
911 GE(GUID_DMUS_PROP_DLS1),
912 GE(GUID_DMUS_PROP_DLS2),
913 GE(GUID_DMUS_PROP_Effects),
914 GE(GUID_DMUS_PROP_INSTRUMENT2),
915 GE(GUID_DMUS_PROP_LegacyCaps),
916 GE(GUID_DMUS_PROP_MemorySize),
917 GE(GUID_DMUS_PROP_SampleMemorySize),
918 GE(GUID_DMUS_PROP_SamplePlaybackRate),
919 GE(GUID_DMUS_PROP_SetSynthSink),
920 GE(GUID_DMUS_PROP_SinkUsesDSound),
921 GE(GUID_DMUS_PROP_SynthSink_DSOUND),
922 GE(GUID_DMUS_PROP_SynthSink_WAVE),
923 GE(GUID_DMUS_PROP_Volume),
924 GE(GUID_DMUS_PROP_WavesReverb),
925 GE(GUID_DMUS_PROP_WriteLatency),
926 GE(GUID_DMUS_PROP_WritePeriod),
927 GE(GUID_DMUS_PROP_XG_Capable),
928 GE(GUID_DMUS_PROP_XG_Hardware)
933 if (!id) return "(null)";
935 for (i = 0; i < sizeof(guids)/sizeof(guids[0]); i++) {
936 if (IsEqualGUID(id, &guids[i].guid))
937 return guids[i].name;
939 /* if we didn't find it, act like standard debugstr_guid */
940 return debugstr_guid(id);
943 /* returns name of given error code */
944 const char *debugstr_dmreturn (DWORD code) {
945 static const flag_info codes[] = {
948 FE(DMUS_S_PARTIALLOAD),
949 FE(DMUS_S_PARTIALDOWNLOAD),
953 FE(DMUS_S_STRING_TRUNCATED),
954 FE(DMUS_S_LAST_TOOL),
955 FE(DMUS_S_OVER_CHORD),
956 FE(DMUS_S_UP_OCTAVE),
957 FE(DMUS_S_DOWN_OCTAVE),
958 FE(DMUS_S_NOBUFFERCONTROL),
959 FE(DMUS_S_GARBAGE_COLLECTED),
960 FE(DMUS_E_DRIVER_FAILED),
961 FE(DMUS_E_PORTS_OPEN),
962 FE(DMUS_E_DEVICE_IN_USE),
963 FE(DMUS_E_INSUFFICIENTBUFFER),
964 FE(DMUS_E_BUFFERNOTSET),
965 FE(DMUS_E_BUFFERNOTAVAILABLE),
966 FE(DMUS_E_NOTADLSCOL),
967 FE(DMUS_E_INVALIDOFFSET),
968 FE(DMUS_E_ALREADY_LOADED),
969 FE(DMUS_E_INVALIDPOS),
970 FE(DMUS_E_INVALIDPATCH),
971 FE(DMUS_E_CANNOTSEEK),
972 FE(DMUS_E_CANNOTWRITE),
973 FE(DMUS_E_CHUNKNOTFOUND),
974 FE(DMUS_E_INVALID_DOWNLOADID),
975 FE(DMUS_E_NOT_DOWNLOADED_TO_PORT),
976 FE(DMUS_E_ALREADY_DOWNLOADED),
977 FE(DMUS_E_UNKNOWN_PROPERTY),
978 FE(DMUS_E_SET_UNSUPPORTED),
979 FE(DMUS_E_GET_UNSUPPORTED),
981 FE(DMUS_E_BADARTICULATION),
982 FE(DMUS_E_BADINSTRUMENT),
983 FE(DMUS_E_BADWAVELINK),
984 FE(DMUS_E_NOARTICULATION),
987 FE(DMUS_E_BADOFFSETTABLE),
988 FE(DMUS_E_UNKNOWNDOWNLOAD),
989 FE(DMUS_E_NOSYNTHSINK),
990 FE(DMUS_E_ALREADYOPEN),
991 FE(DMUS_E_ALREADYCLOSED),
992 FE(DMUS_E_SYNTHNOTCONFIGURED),
993 FE(DMUS_E_SYNTHACTIVE),
994 FE(DMUS_E_CANNOTREAD),
995 FE(DMUS_E_DMUSIC_RELEASED),
996 FE(DMUS_E_BUFFER_EMPTY),
997 FE(DMUS_E_BUFFER_FULL),
998 FE(DMUS_E_PORT_NOT_CAPTURE),
999 FE(DMUS_E_PORT_NOT_RENDER),
1000 FE(DMUS_E_DSOUND_NOT_SET),
1001 FE(DMUS_E_ALREADY_ACTIVATED),
1002 FE(DMUS_E_INVALIDBUFFER),
1003 FE(DMUS_E_WAVEFORMATNOTSUPPORTED),
1004 FE(DMUS_E_SYNTHINACTIVE),
1005 FE(DMUS_E_DSOUND_ALREADY_SET),
1006 FE(DMUS_E_INVALID_EVENT),
1007 FE(DMUS_E_UNSUPPORTED_STREAM),
1008 FE(DMUS_E_ALREADY_INITED),
1009 FE(DMUS_E_INVALID_BAND),
1010 FE(DMUS_E_TRACK_HDR_NOT_FIRST_CK),
1011 FE(DMUS_E_TOOL_HDR_NOT_FIRST_CK),
1012 FE(DMUS_E_INVALID_TRACK_HDR),
1013 FE(DMUS_E_INVALID_TOOL_HDR),
1014 FE(DMUS_E_ALL_TOOLS_FAILED),
1015 FE(DMUS_E_ALL_TRACKS_FAILED),
1016 FE(DMUS_E_NOT_FOUND),
1017 FE(DMUS_E_NOT_INIT),
1018 FE(DMUS_E_TYPE_DISABLED),
1019 FE(DMUS_E_TYPE_UNSUPPORTED),
1020 FE(DMUS_E_TIME_PAST),
1021 FE(DMUS_E_TRACK_NOT_FOUND),
1022 FE(DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT),
1023 FE(DMUS_E_NO_MASTER_CLOCK),
1024 FE(DMUS_E_LOADER_NOCLASSID),
1025 FE(DMUS_E_LOADER_BADPATH),
1026 FE(DMUS_E_LOADER_FAILEDOPEN),
1027 FE(DMUS_E_LOADER_FORMATNOTSUPPORTED),
1028 FE(DMUS_E_LOADER_FAILEDCREATE),
1029 FE(DMUS_E_LOADER_OBJECTNOTFOUND),
1030 FE(DMUS_E_LOADER_NOFILENAME),
1031 FE(DMUS_E_INVALIDFILE),
1032 FE(DMUS_E_ALREADY_EXISTS),
1033 FE(DMUS_E_OUT_OF_RANGE),
1034 FE(DMUS_E_SEGMENT_INIT_FAILED),
1035 FE(DMUS_E_ALREADY_SENT),
1036 FE(DMUS_E_CANNOT_FREE),
1037 FE(DMUS_E_CANNOT_OPEN_PORT),
1038 FE(DMUS_E_CANNOT_CONVERT),
1039 FE(DMUS_E_DESCEND_CHUNK_FAIL),
1040 FE(DMUS_E_NOT_LOADED),
1041 FE(DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE),
1042 FE(DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE),
1043 FE(DMUS_E_SCRIPT_ERROR_IN_SCRIPT),
1044 FE(DMUS_E_SCRIPT_CANTLOAD_OLEAUT32),
1045 FE(DMUS_E_SCRIPT_LOADSCRIPT_ERROR),
1046 FE(DMUS_E_SCRIPT_INVALID_FILE),
1047 FE(DMUS_E_INVALID_SCRIPTTRACK),
1048 FE(DMUS_E_SCRIPT_VARIABLE_NOT_FOUND),
1049 FE(DMUS_E_SCRIPT_ROUTINE_NOT_FOUND),
1050 FE(DMUS_E_SCRIPT_CONTENT_READONLY),
1051 FE(DMUS_E_SCRIPT_NOT_A_REFERENCE),
1052 FE(DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED),
1053 FE(DMUS_E_INVALID_SEGMENTTRIGGERTRACK),
1054 FE(DMUS_E_INVALID_LYRICSTRACK),
1055 FE(DMUS_E_INVALID_PARAMCONTROLTRACK),
1056 FE(DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR),
1057 FE(DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR),
1058 FE(DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE),
1059 FE(DMUS_E_AUDIOPATHS_NOT_VALID),
1060 FE(DMUS_E_AUDIOPATHS_IN_USE),
1061 FE(DMUS_E_NO_AUDIOPATH_CONFIG),
1062 FE(DMUS_E_AUDIOPATH_INACTIVE),
1063 FE(DMUS_E_AUDIOPATH_NOBUFFER),
1064 FE(DMUS_E_AUDIOPATH_NOPORT),
1065 FE(DMUS_E_NO_AUDIOPATH),
1066 FE(DMUS_E_INVALIDCHUNK),
1067 FE(DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER),
1068 FE(DMUS_E_INVALID_CONTAINER_OBJECT)
1071 for (i = 0; i < sizeof(codes)/sizeof(codes[0]); i++) {
1072 if (code == codes[i].val)
1073 return codes[i].name;
1075 /* if we didn't find it, return value */
1076 return wine_dbg_sprintf("0x%08lx", code);
1079 /* generic flag-dumping function */
1080 const char* debugstr_flags (DWORD flags, const flag_info* names, size_t num_names){
1081 char buffer[128] = "", *ptr = &buffer[0];
1082 unsigned int i, size = sizeof(buffer);
1084 for (i=0; i < num_names; i++)
1086 if ((flags & names[i].val) || /* standard flag*/
1087 ((!flags) && (!names[i].val))) { /* zero value only */
1088 int cnt = snprintf(ptr, size, "%s ", names[i].name);
1089 if (cnt < 0 || cnt >= size) break;
1095 return wine_dbg_sprintf("%s", buffer);
1098 /* dump DMUS_OBJ flags */
1099 const char *debugstr_DMUS_OBJ_FLAGS (DWORD flagmask) {
1100 static const flag_info flags[] = {
1101 FE(DMUS_OBJ_OBJECT),
1104 FE(DMUS_OBJ_CATEGORY),
1105 FE(DMUS_OBJ_FILENAME),
1106 FE(DMUS_OBJ_FULLPATH),
1108 FE(DMUS_OBJ_VERSION),
1110 FE(DMUS_OBJ_LOADED),
1111 FE(DMUS_OBJ_MEMORY),
1114 return debugstr_flags (flagmask, flags, sizeof(flags)/sizeof(flags[0]));
1117 /* dump whole DMUS_OBJECTDESC struct */
1118 const char *debugstr_DMUS_OBJECTDESC (LPDMUS_OBJECTDESC pDesc) {
1120 char buffer[1024] = "", *ptr = &buffer[0];
1122 ptr += sprintf(ptr, "DMUS_OBJECTDESC (%p):\n", pDesc);
1123 ptr += sprintf(ptr, " - dwSize = %ld\n", pDesc->dwSize);
1124 ptr += sprintf(ptr, " - dwValidData = %s\n", debugstr_DMUS_OBJ_FLAGS (pDesc->dwValidData));
1125 if (pDesc->dwValidData & DMUS_OBJ_CLASS) ptr += sprintf(ptr, " - guidClass = %s\n", debugstr_dmguid(&pDesc->guidClass));
1126 if (pDesc->dwValidData & DMUS_OBJ_OBJECT) ptr += sprintf(ptr, " - guidObject = %s\n", debugstr_guid(&pDesc->guidObject));
1127 if (pDesc->dwValidData & DMUS_OBJ_DATE) ptr += sprintf(ptr, " - ftDate = FIXME\n");
1128 if (pDesc->dwValidData & DMUS_OBJ_VERSION) ptr += sprintf(ptr, " - vVersion = %s\n", debugstr_dmversion(&pDesc->vVersion));
1129 if (pDesc->dwValidData & DMUS_OBJ_NAME) ptr += sprintf(ptr, " - wszName = %s\n", debugstr_w(pDesc->wszName));
1130 if (pDesc->dwValidData & DMUS_OBJ_CATEGORY) ptr += sprintf(ptr, " - wszCategory = %s\n", debugstr_w(pDesc->wszCategory));
1131 if (pDesc->dwValidData & DMUS_OBJ_FILENAME) ptr += sprintf(ptr, " - wszFileName = %s\n", debugstr_w(pDesc->wszFileName));
1132 if (pDesc->dwValidData & DMUS_OBJ_MEMORY) ptr += sprintf(ptr, " - llMemLength = %lli\n - pbMemData = %p\n", pDesc->llMemLength, pDesc->pbMemData);
1133 if (pDesc->dwValidData & DMUS_OBJ_STREAM) ptr += sprintf(ptr, " - pStream = %p", pDesc->pStream);
1135 return wine_dbg_sprintf("%s", buffer);
1137 return wine_dbg_sprintf("(NULL)");