1 /* DirectMusicInteractiveEngine Main
3 * Copyright (C) 2003-2004 Rok Mandeljc
4 * Copyright (C) 2003-2004 Raphael Junqueira
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Library General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 #include "dmime_private.h"
23 WINE_DEFAULT_DEBUG_CHANNEL(dmime);
24 WINE_DECLARE_DEBUG_CHANNEL(dmfile);
28 IClassFactoryVtbl *lpVtbl;
32 /******************************************************************
33 * DirectMusicPerformance ClassFactory
35 static HRESULT WINAPI PerformanceCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
36 ICOM_THIS(IClassFactoryImpl,iface);
37 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
41 static ULONG WINAPI PerformanceCF_AddRef(LPCLASSFACTORY iface) {
42 ICOM_THIS(IClassFactoryImpl,iface);
46 static ULONG WINAPI PerformanceCF_Release(LPCLASSFACTORY iface) {
47 ICOM_THIS(IClassFactoryImpl,iface);
48 /* static class, won't be freed */
52 static HRESULT WINAPI PerformanceCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
53 ICOM_THIS(IClassFactoryImpl,iface);
54 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
55 return DMUSIC_CreateDirectMusicPerformanceImpl (riid, ppobj, pOuter);
58 static HRESULT WINAPI PerformanceCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
59 ICOM_THIS(IClassFactoryImpl,iface);
60 FIXME("(%p, %d): stub\n", This, dolock);
64 static ICOM_VTABLE(IClassFactory) PerformanceCF_Vtbl = {
65 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
66 PerformanceCF_QueryInterface,
68 PerformanceCF_Release,
69 PerformanceCF_CreateInstance,
70 PerformanceCF_LockServer
73 static IClassFactoryImpl Performance_CF = {&PerformanceCF_Vtbl, 1 };
75 /******************************************************************
76 * DirectMusicSegment ClassFactory
78 static HRESULT WINAPI SegmentCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
79 ICOM_THIS(IClassFactoryImpl,iface);
80 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
84 static ULONG WINAPI SegmentCF_AddRef(LPCLASSFACTORY iface) {
85 ICOM_THIS(IClassFactoryImpl,iface);
89 static ULONG WINAPI SegmentCF_Release(LPCLASSFACTORY iface) {
90 ICOM_THIS(IClassFactoryImpl,iface);
91 /* static class, won't be freed */
95 static HRESULT WINAPI SegmentCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
96 ICOM_THIS(IClassFactoryImpl,iface);
97 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
98 return DMUSIC_CreateDirectMusicSegmentImpl (riid, ppobj, pOuter);
101 static HRESULT WINAPI SegmentCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
102 ICOM_THIS(IClassFactoryImpl,iface);
103 FIXME("(%p, %d): stub\n", This, dolock);
107 static ICOM_VTABLE(IClassFactory) SegmentCF_Vtbl = {
108 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
109 SegmentCF_QueryInterface,
112 SegmentCF_CreateInstance,
116 static IClassFactoryImpl Segment_CF = {&SegmentCF_Vtbl, 1 };
118 /******************************************************************
119 * DirectMusicSegmentState ClassFactory
121 static HRESULT WINAPI SegmentStateCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
122 ICOM_THIS(IClassFactoryImpl,iface);
123 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
124 return E_NOINTERFACE;
127 static ULONG WINAPI SegmentStateCF_AddRef(LPCLASSFACTORY iface) {
128 ICOM_THIS(IClassFactoryImpl,iface);
129 return ++(This->ref);
132 static ULONG WINAPI SegmentStateCF_Release(LPCLASSFACTORY iface) {
133 ICOM_THIS(IClassFactoryImpl,iface);
134 /* static class, won't be freed */
135 return --(This->ref);
138 static HRESULT WINAPI SegmentStateCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
139 ICOM_THIS(IClassFactoryImpl,iface);
140 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
141 return DMUSIC_CreateDirectMusicSegmentStateImpl (riid, ppobj, pOuter);
144 static HRESULT WINAPI SegmentStateCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
145 ICOM_THIS(IClassFactoryImpl,iface);
146 FIXME("(%p, %d): stub\n", This, dolock);
150 static ICOM_VTABLE(IClassFactory) SegmentStateCF_Vtbl = {
151 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
152 SegmentStateCF_QueryInterface,
153 SegmentStateCF_AddRef,
154 SegmentStateCF_Release,
155 SegmentStateCF_CreateInstance,
156 SegmentStateCF_LockServer
159 static IClassFactoryImpl SegmentState_CF = {&SegmentStateCF_Vtbl, 1 };
161 /******************************************************************
162 * DirectMusicGraph ClassFactory
164 static HRESULT WINAPI GraphCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
165 ICOM_THIS(IClassFactoryImpl,iface);
166 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
167 return E_NOINTERFACE;
170 static ULONG WINAPI GraphCF_AddRef(LPCLASSFACTORY iface) {
171 ICOM_THIS(IClassFactoryImpl,iface);
172 return ++(This->ref);
175 static ULONG WINAPI GraphCF_Release(LPCLASSFACTORY iface) {
176 ICOM_THIS(IClassFactoryImpl,iface);
177 /* static class, won't be freed */
178 return --(This->ref);
181 static HRESULT WINAPI GraphCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
182 ICOM_THIS(IClassFactoryImpl,iface);
183 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
184 return DMUSIC_CreateDirectMusicGraphImpl (riid, ppobj, pOuter);
187 static HRESULT WINAPI GraphCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
188 ICOM_THIS(IClassFactoryImpl,iface);
189 FIXME("(%p, %d): stub\n", This, dolock);
193 static ICOM_VTABLE(IClassFactory) GraphCF_Vtbl = {
194 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
195 GraphCF_QueryInterface,
198 GraphCF_CreateInstance,
202 static IClassFactoryImpl Graph_CF = {&GraphCF_Vtbl, 1 };
204 /******************************************************************
205 * DirectMusicTempoTrack ClassFactory
207 static HRESULT WINAPI TempoTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
208 ICOM_THIS(IClassFactoryImpl,iface);
209 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
210 return E_NOINTERFACE;
213 static ULONG WINAPI TempoTrackCF_AddRef(LPCLASSFACTORY iface) {
214 ICOM_THIS(IClassFactoryImpl,iface);
215 return ++(This->ref);
218 static ULONG WINAPI TempoTrackCF_Release(LPCLASSFACTORY iface) {
219 ICOM_THIS(IClassFactoryImpl,iface);
220 /* static class, won't be freed */
221 return --(This->ref);
224 static HRESULT WINAPI TempoTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
225 ICOM_THIS(IClassFactoryImpl,iface);
226 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
227 return DMUSIC_CreateDirectMusicTempoTrack (riid, ppobj, pOuter);
230 static HRESULT WINAPI TempoTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
231 ICOM_THIS(IClassFactoryImpl,iface);
232 FIXME("(%p, %d): stub\n", This, dolock);
236 static ICOM_VTABLE(IClassFactory) TempoTrackCF_Vtbl = {
237 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
238 TempoTrackCF_QueryInterface,
240 TempoTrackCF_Release,
241 TempoTrackCF_CreateInstance,
242 TempoTrackCF_LockServer
245 static IClassFactoryImpl TempoTrack_CF = {&TempoTrackCF_Vtbl, 1 };
247 /******************************************************************
248 * DirectMusicSeqTrack ClassFactory
250 static HRESULT WINAPI SeqTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
251 ICOM_THIS(IClassFactoryImpl,iface);
252 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
253 return E_NOINTERFACE;
256 static ULONG WINAPI SeqTrackCF_AddRef(LPCLASSFACTORY iface) {
257 ICOM_THIS(IClassFactoryImpl,iface);
258 return ++(This->ref);
261 static ULONG WINAPI SeqTrackCF_Release(LPCLASSFACTORY iface) {
262 ICOM_THIS(IClassFactoryImpl,iface);
263 /* static class, won't be freed */
264 return --(This->ref);
267 static HRESULT WINAPI SeqTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
268 ICOM_THIS(IClassFactoryImpl,iface);
269 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
270 return DMUSIC_CreateDirectMusicSeqTrack (riid, ppobj, pOuter);
273 static HRESULT WINAPI SeqTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
274 ICOM_THIS(IClassFactoryImpl,iface);
275 FIXME("(%p, %d): stub\n", This, dolock);
279 static ICOM_VTABLE(IClassFactory) SeqTrackCF_Vtbl = {
280 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
281 SeqTrackCF_QueryInterface,
284 SeqTrackCF_CreateInstance,
285 SeqTrackCF_LockServer
288 static IClassFactoryImpl SeqTrack_CF = {&SeqTrackCF_Vtbl, 1 };
290 /******************************************************************
291 * DirectMusicSysExTrack ClassFactory
293 static HRESULT WINAPI SysExTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
294 ICOM_THIS(IClassFactoryImpl,iface);
295 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
296 return E_NOINTERFACE;
299 static ULONG WINAPI SysExTrackCF_AddRef(LPCLASSFACTORY iface) {
300 ICOM_THIS(IClassFactoryImpl,iface);
301 return ++(This->ref);
304 static ULONG WINAPI SysExTrackCF_Release(LPCLASSFACTORY iface) {
305 ICOM_THIS(IClassFactoryImpl,iface);
306 /* static class, won't be freed */
307 return --(This->ref);
310 static HRESULT WINAPI SysExTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
311 ICOM_THIS(IClassFactoryImpl,iface);
312 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
313 return DMUSIC_CreateDirectMusicSysExTrack (riid, ppobj, pOuter);
316 static HRESULT WINAPI SysExTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
317 ICOM_THIS(IClassFactoryImpl,iface);
318 FIXME("(%p, %d): stub\n", This, dolock);
322 static ICOM_VTABLE(IClassFactory) SysExTrackCF_Vtbl = {
323 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
324 SysExTrackCF_QueryInterface,
326 SysExTrackCF_Release,
327 SysExTrackCF_CreateInstance,
328 SysExTrackCF_LockServer
331 static IClassFactoryImpl SysExTrack_CF = {&SysExTrackCF_Vtbl, 1 };
333 /******************************************************************
334 * DirectMusicTimeSigTrack ClassFactory
336 static HRESULT WINAPI TimeSigTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
337 ICOM_THIS(IClassFactoryImpl,iface);
338 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
339 return E_NOINTERFACE;
342 static ULONG WINAPI TimeSigTrackCF_AddRef(LPCLASSFACTORY iface) {
343 ICOM_THIS(IClassFactoryImpl,iface);
344 return ++(This->ref);
347 static ULONG WINAPI TimeSigTrackCF_Release(LPCLASSFACTORY iface) {
348 ICOM_THIS(IClassFactoryImpl,iface);
349 /* static class, won't be freed */
350 return --(This->ref);
353 static HRESULT WINAPI TimeSigTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
354 ICOM_THIS(IClassFactoryImpl,iface);
355 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
356 return DMUSIC_CreateDirectMusicTimeSigTrack (riid, ppobj, pOuter);
359 static HRESULT WINAPI TimeSigTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
360 ICOM_THIS(IClassFactoryImpl,iface);
361 FIXME("(%p, %d): stub\n", This, dolock);
365 static ICOM_VTABLE(IClassFactory) TimeSigTrackCF_Vtbl = {
366 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
367 TimeSigTrackCF_QueryInterface,
368 TimeSigTrackCF_AddRef,
369 TimeSigTrackCF_Release,
370 TimeSigTrackCF_CreateInstance,
371 TimeSigTrackCF_LockServer
374 static IClassFactoryImpl TimeSigTrack_CF = {&TimeSigTrackCF_Vtbl, 1 };
376 /******************************************************************
377 * DirectMusicParamControlTrack ClassFactory
379 static HRESULT WINAPI ParamControlTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
380 ICOM_THIS(IClassFactoryImpl,iface);
381 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
382 return E_NOINTERFACE;
385 static ULONG WINAPI ParamControlTrackCF_AddRef(LPCLASSFACTORY iface) {
386 ICOM_THIS(IClassFactoryImpl,iface);
387 return ++(This->ref);
390 static ULONG WINAPI ParamControlTrackCF_Release(LPCLASSFACTORY iface) {
391 ICOM_THIS(IClassFactoryImpl,iface);
392 /* static class, won't be freed */
393 return --(This->ref);
396 static HRESULT WINAPI ParamControlTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
397 ICOM_THIS(IClassFactoryImpl,iface);
398 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
399 return DMUSIC_CreateDirectMusicParamControlTrack (riid, ppobj, pOuter);
402 static HRESULT WINAPI ParamControlTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
403 ICOM_THIS(IClassFactoryImpl,iface);
404 FIXME("(%p, %d): stub\n", This, dolock);
408 static ICOM_VTABLE(IClassFactory) ParamControlTrackCF_Vtbl = {
409 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
410 ParamControlTrackCF_QueryInterface,
411 ParamControlTrackCF_AddRef,
412 ParamControlTrackCF_Release,
413 ParamControlTrackCF_CreateInstance,
414 ParamControlTrackCF_LockServer
417 static IClassFactoryImpl ParamControlTrack_CF = {&ParamControlTrackCF_Vtbl, 1 };
419 /******************************************************************
420 * DirectMusicMarkerTrack ClassFactory
422 static HRESULT WINAPI MarkerTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
423 ICOM_THIS(IClassFactoryImpl,iface);
424 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
425 return E_NOINTERFACE;
428 static ULONG WINAPI MarkerTrackCF_AddRef(LPCLASSFACTORY iface) {
429 ICOM_THIS(IClassFactoryImpl,iface);
430 return ++(This->ref);
433 static ULONG WINAPI MarkerTrackCF_Release(LPCLASSFACTORY iface) {
434 ICOM_THIS(IClassFactoryImpl,iface);
435 /* static class, won't be freed */
436 return --(This->ref);
439 static HRESULT WINAPI MarkerTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
440 ICOM_THIS(IClassFactoryImpl,iface);
441 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
442 return DMUSIC_CreateDirectMusicMarkerTrack (riid, ppobj, pOuter);
445 static HRESULT WINAPI MarkerTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
446 ICOM_THIS(IClassFactoryImpl,iface);
447 FIXME("(%p, %d): stub\n", This, dolock);
451 static ICOM_VTABLE(IClassFactory) MarkerTrackCF_Vtbl = {
452 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
453 MarkerTrackCF_QueryInterface,
454 MarkerTrackCF_AddRef,
455 MarkerTrackCF_Release,
456 MarkerTrackCF_CreateInstance,
457 MarkerTrackCF_LockServer
460 static IClassFactoryImpl MarkerTrack_CF = {&MarkerTrackCF_Vtbl, 1 };
462 /******************************************************************
463 * DirectMusicLyricsTrack ClassFactory
465 static HRESULT WINAPI LyricsTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
466 ICOM_THIS(IClassFactoryImpl,iface);
467 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
468 return E_NOINTERFACE;
471 static ULONG WINAPI LyricsTrackCF_AddRef(LPCLASSFACTORY iface) {
472 ICOM_THIS(IClassFactoryImpl,iface);
473 return ++(This->ref);
476 static ULONG WINAPI LyricsTrackCF_Release(LPCLASSFACTORY iface) {
477 ICOM_THIS(IClassFactoryImpl,iface);
478 /* static class, won't be freed */
479 return --(This->ref);
482 static HRESULT WINAPI LyricsTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
483 ICOM_THIS(IClassFactoryImpl,iface);
484 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
485 return DMUSIC_CreateDirectMusicLyricsTrack (riid, ppobj, pOuter);
488 static HRESULT WINAPI LyricsTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
489 ICOM_THIS(IClassFactoryImpl,iface);
490 FIXME("(%p, %d): stub\n", This, dolock);
494 static ICOM_VTABLE(IClassFactory) LyricsTrackCF_Vtbl = {
495 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
496 LyricsTrackCF_QueryInterface,
497 LyricsTrackCF_AddRef,
498 LyricsTrackCF_Release,
499 LyricsTrackCF_CreateInstance,
500 LyricsTrackCF_LockServer
503 static IClassFactoryImpl LyricsTrack_CF = {&LyricsTrackCF_Vtbl, 1 };
506 /******************************************************************
507 * DirectMusicSegTriggerTrack ClassFactory
509 static HRESULT WINAPI SegTriggerTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
510 ICOM_THIS(IClassFactoryImpl,iface);
511 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
512 return E_NOINTERFACE;
515 static ULONG WINAPI SegTriggerTrackCF_AddRef(LPCLASSFACTORY iface) {
516 ICOM_THIS(IClassFactoryImpl,iface);
517 return ++(This->ref);
520 static ULONG WINAPI SegTriggerTrackCF_Release(LPCLASSFACTORY iface) {
521 ICOM_THIS(IClassFactoryImpl,iface);
522 /* static class, won't be freed */
523 return --(This->ref);
526 static HRESULT WINAPI SegTriggerTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
527 ICOM_THIS(IClassFactoryImpl,iface);
528 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
529 return DMUSIC_CreateDirectMusicSegTriggerTrack (riid, ppobj, pOuter);
532 static HRESULT WINAPI SegTriggerTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
533 ICOM_THIS(IClassFactoryImpl,iface);
534 FIXME("(%p, %d): stub\n", This, dolock);
538 static ICOM_VTABLE(IClassFactory) SegTriggerTrackCF_Vtbl = {
539 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
540 SegTriggerTrackCF_QueryInterface,
541 SegTriggerTrackCF_AddRef,
542 SegTriggerTrackCF_Release,
543 SegTriggerTrackCF_CreateInstance,
544 SegTriggerTrackCF_LockServer
547 static IClassFactoryImpl SegTriggerTrack_CF = {&SegTriggerTrackCF_Vtbl, 1 };
549 /******************************************************************
550 * DirectMusicAudioPath ClassFactory
552 static HRESULT WINAPI AudioPathCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
553 ICOM_THIS(IClassFactoryImpl,iface);
554 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
555 return E_NOINTERFACE;
558 static ULONG WINAPI AudioPathCF_AddRef(LPCLASSFACTORY iface) {
559 ICOM_THIS(IClassFactoryImpl,iface);
560 return ++(This->ref);
563 static ULONG WINAPI AudioPathCF_Release(LPCLASSFACTORY iface) {
564 ICOM_THIS(IClassFactoryImpl,iface);
565 /* static class, won't be freed */
566 return --(This->ref);
569 static HRESULT WINAPI AudioPathCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
570 ICOM_THIS(IClassFactoryImpl,iface);
571 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
572 return DMUSIC_CreateDirectMusicAudioPathImpl (riid, ppobj, pOuter);
575 static HRESULT WINAPI AudioPathCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
576 ICOM_THIS(IClassFactoryImpl,iface);
577 FIXME("(%p, %d): stub\n", This, dolock);
581 static ICOM_VTABLE(IClassFactory) AudioPathCF_Vtbl = {
582 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
583 AudioPathCF_QueryInterface,
586 AudioPathCF_CreateInstance,
587 AudioPathCF_LockServer
590 static IClassFactoryImpl AudioPath_CF = {&AudioPathCF_Vtbl, 1 };
592 /******************************************************************
593 * DirectMusicWaveTrack ClassFactory
595 static HRESULT WINAPI WaveTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
596 ICOM_THIS(IClassFactoryImpl,iface);
597 FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
598 return E_NOINTERFACE;
601 static ULONG WINAPI WaveTrackCF_AddRef(LPCLASSFACTORY iface) {
602 ICOM_THIS(IClassFactoryImpl,iface);
603 return ++(This->ref);
606 static ULONG WINAPI WaveTrackCF_Release(LPCLASSFACTORY iface) {
607 ICOM_THIS(IClassFactoryImpl,iface);
608 /* static class, won't be freed */
609 return --(This->ref);
612 static HRESULT WINAPI WaveTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
613 ICOM_THIS(IClassFactoryImpl,iface);
614 TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
615 return DMUSIC_CreateDirectMusicWaveTrack (riid, ppobj, pOuter);
618 static HRESULT WINAPI WaveTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
619 ICOM_THIS(IClassFactoryImpl,iface);
620 FIXME("(%p, %d): stub\n", This, dolock);
624 static ICOM_VTABLE(IClassFactory) WaveTrackCF_Vtbl = {
625 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
626 WaveTrackCF_QueryInterface,
629 WaveTrackCF_CreateInstance,
630 WaveTrackCF_LockServer
633 static IClassFactoryImpl WaveTrack_CF = {&WaveTrackCF_Vtbl, 1 };
635 /******************************************************************
640 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
641 if (fdwReason == DLL_PROCESS_ATTACH) {
642 DisableThreadLibraryCalls(hinstDLL);
643 /* FIXME: Initialisation */
645 else if (fdwReason == DLL_PROCESS_DETACH) {
653 /******************************************************************
654 * DllCanUnloadNow (DMIME.1)
658 HRESULT WINAPI DMIME_DllCanUnloadNow(void) {
659 FIXME("(void): stub\n");
664 /******************************************************************
665 * DllGetClassObject (DMIME.2)
669 HRESULT WINAPI DMIME_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
671 TRACE("(%s, %s, %p)\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
672 if (IsEqualCLSID (rclsid, &CLSID_DirectMusicPerformance) && IsEqualIID (riid, &IID_IClassFactory)) {
673 *ppv = (LPVOID) &Performance_CF;
674 IClassFactory_AddRef((IClassFactory*)*ppv);
676 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSegment) && IsEqualIID (riid, &IID_IClassFactory)) {
677 *ppv = (LPVOID) &Segment_CF;
678 IClassFactory_AddRef((IClassFactory*)*ppv);
680 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSegmentState) && IsEqualIID (riid, &IID_IClassFactory)) {
681 *ppv = (LPVOID) &SegmentState_CF;
682 IClassFactory_AddRef((IClassFactory*)*ppv);
684 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicGraph) && IsEqualIID (riid, &IID_IClassFactory)) {
685 *ppv = (LPVOID) &Graph_CF;
686 IClassFactory_AddRef((IClassFactory*)*ppv);
688 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicTempoTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
689 *ppv = (LPVOID) &TempoTrack_CF;
690 IClassFactory_AddRef((IClassFactory*)*ppv);
692 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSeqTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
693 *ppv = (LPVOID) &SeqTrack_CF;
694 IClassFactory_AddRef((IClassFactory*)*ppv);
696 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSysExTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
697 *ppv = (LPVOID) &SysExTrack_CF;
698 IClassFactory_AddRef((IClassFactory*)*ppv);
700 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicTimeSigTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
701 *ppv = (LPVOID) &TimeSigTrack_CF;
702 IClassFactory_AddRef((IClassFactory*)*ppv);
704 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicParamControlTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
705 *ppv = (LPVOID) &ParamControlTrack_CF;
706 IClassFactory_AddRef((IClassFactory*)*ppv);
708 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicMarkerTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
709 *ppv = (LPVOID) &MarkerTrack_CF;
710 IClassFactory_AddRef((IClassFactory*)*ppv);
712 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicLyricsTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
713 *ppv = (LPVOID) &LyricsTrack_CF;
714 IClassFactory_AddRef((IClassFactory*)*ppv);
716 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSegTriggerTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
717 *ppv = (LPVOID) &SegTriggerTrack_CF;
718 IClassFactory_AddRef((IClassFactory*)*ppv);
720 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicAudioPath) && IsEqualIID (riid, &IID_IClassFactory)) {
721 *ppv = (LPVOID) &AudioPath_CF;
722 IClassFactory_AddRef((IClassFactory*)*ppv);
724 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicWaveTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
725 *ppv = (LPVOID) &WaveTrack_CF;
726 IClassFactory_AddRef((IClassFactory*)*ppv);
730 WARN("(%s, %s, %p): no interface found.\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
731 return CLASS_E_CLASSNOTAVAILABLE;