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 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
37 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
41 static ULONG WINAPI
PerformanceCF_AddRef(LPCLASSFACTORY iface
) {
42 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
46 static ULONG WINAPI
PerformanceCF_Release(LPCLASSFACTORY iface
) {
47 IClassFactoryImpl
*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 IClassFactoryImpl
*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 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
60 FIXME("(%p, %d): stub\n", This
, dolock
);
64 static IClassFactoryVtbl PerformanceCF_Vtbl
= {
65 PerformanceCF_QueryInterface
,
67 PerformanceCF_Release
,
68 PerformanceCF_CreateInstance
,
69 PerformanceCF_LockServer
72 static IClassFactoryImpl Performance_CF
= {&PerformanceCF_Vtbl
, 1 };
74 /******************************************************************
75 * DirectMusicSegment ClassFactory
77 static HRESULT WINAPI
SegmentCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
78 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
79 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
83 static ULONG WINAPI
SegmentCF_AddRef(LPCLASSFACTORY iface
) {
84 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
88 static ULONG WINAPI
SegmentCF_Release(LPCLASSFACTORY iface
) {
89 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
90 /* static class, won't be freed */
94 static HRESULT WINAPI
SegmentCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
95 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
96 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
97 return DMUSIC_CreateDirectMusicSegmentImpl (riid
, ppobj
, pOuter
);
100 static HRESULT WINAPI
SegmentCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
101 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
102 FIXME("(%p, %d): stub\n", This
, dolock
);
106 static IClassFactoryVtbl SegmentCF_Vtbl
= {
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 IClassFactoryImpl
*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 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
127 return ++(This
->ref
);
130 static ULONG WINAPI
SegmentStateCF_Release(LPCLASSFACTORY iface
) {
131 IClassFactoryImpl
*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 IClassFactoryImpl
*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 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
144 FIXME("(%p, %d): stub\n", This
, dolock
);
148 static IClassFactoryVtbl SegmentStateCF_Vtbl
= {
149 SegmentStateCF_QueryInterface
,
150 SegmentStateCF_AddRef
,
151 SegmentStateCF_Release
,
152 SegmentStateCF_CreateInstance
,
153 SegmentStateCF_LockServer
156 static IClassFactoryImpl SegmentState_CF
= {&SegmentStateCF_Vtbl
, 1 };
158 /******************************************************************
159 * DirectMusicGraph ClassFactory
161 static HRESULT WINAPI
GraphCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
162 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
163 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
164 return E_NOINTERFACE
;
167 static ULONG WINAPI
GraphCF_AddRef(LPCLASSFACTORY iface
) {
168 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
169 return ++(This
->ref
);
172 static ULONG WINAPI
GraphCF_Release(LPCLASSFACTORY iface
) {
173 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
174 /* static class, won't be freed */
175 return --(This
->ref
);
178 static HRESULT WINAPI
GraphCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
179 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
180 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
181 return DMUSIC_CreateDirectMusicGraphImpl (riid
, ppobj
, pOuter
);
184 static HRESULT WINAPI
GraphCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
185 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
186 FIXME("(%p, %d): stub\n", This
, dolock
);
190 static IClassFactoryVtbl GraphCF_Vtbl
= {
191 GraphCF_QueryInterface
,
194 GraphCF_CreateInstance
,
198 static IClassFactoryImpl Graph_CF
= {&GraphCF_Vtbl
, 1 };
200 /******************************************************************
201 * DirectMusicTempoTrack ClassFactory
203 static HRESULT WINAPI
TempoTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
204 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
205 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
206 return E_NOINTERFACE
;
209 static ULONG WINAPI
TempoTrackCF_AddRef(LPCLASSFACTORY iface
) {
210 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
211 return ++(This
->ref
);
214 static ULONG WINAPI
TempoTrackCF_Release(LPCLASSFACTORY iface
) {
215 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
216 /* static class, won't be freed */
217 return --(This
->ref
);
220 static HRESULT WINAPI
TempoTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
221 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
222 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
223 return DMUSIC_CreateDirectMusicTempoTrack (riid
, ppobj
, pOuter
);
226 static HRESULT WINAPI
TempoTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
227 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
228 FIXME("(%p, %d): stub\n", This
, dolock
);
232 static IClassFactoryVtbl TempoTrackCF_Vtbl
= {
233 TempoTrackCF_QueryInterface
,
235 TempoTrackCF_Release
,
236 TempoTrackCF_CreateInstance
,
237 TempoTrackCF_LockServer
240 static IClassFactoryImpl TempoTrack_CF
= {&TempoTrackCF_Vtbl
, 1 };
242 /******************************************************************
243 * DirectMusicSeqTrack ClassFactory
245 static HRESULT WINAPI
SeqTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
246 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
247 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
248 return E_NOINTERFACE
;
251 static ULONG WINAPI
SeqTrackCF_AddRef(LPCLASSFACTORY iface
) {
252 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
253 return ++(This
->ref
);
256 static ULONG WINAPI
SeqTrackCF_Release(LPCLASSFACTORY iface
) {
257 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
258 /* static class, won't be freed */
259 return --(This
->ref
);
262 static HRESULT WINAPI
SeqTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
263 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
264 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
265 return DMUSIC_CreateDirectMusicSeqTrack (riid
, ppobj
, pOuter
);
268 static HRESULT WINAPI
SeqTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
269 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
270 FIXME("(%p, %d): stub\n", This
, dolock
);
274 static IClassFactoryVtbl SeqTrackCF_Vtbl
= {
275 SeqTrackCF_QueryInterface
,
278 SeqTrackCF_CreateInstance
,
279 SeqTrackCF_LockServer
282 static IClassFactoryImpl SeqTrack_CF
= {&SeqTrackCF_Vtbl
, 1 };
284 /******************************************************************
285 * DirectMusicSysExTrack ClassFactory
287 static HRESULT WINAPI
SysExTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
288 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
289 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
290 return E_NOINTERFACE
;
293 static ULONG WINAPI
SysExTrackCF_AddRef(LPCLASSFACTORY iface
) {
294 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
295 return ++(This
->ref
);
298 static ULONG WINAPI
SysExTrackCF_Release(LPCLASSFACTORY iface
) {
299 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
300 /* static class, won't be freed */
301 return --(This
->ref
);
304 static HRESULT WINAPI
SysExTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
305 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
306 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
307 return DMUSIC_CreateDirectMusicSysExTrack (riid
, ppobj
, pOuter
);
310 static HRESULT WINAPI
SysExTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
311 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
312 FIXME("(%p, %d): stub\n", This
, dolock
);
316 static IClassFactoryVtbl SysExTrackCF_Vtbl
= {
317 SysExTrackCF_QueryInterface
,
319 SysExTrackCF_Release
,
320 SysExTrackCF_CreateInstance
,
321 SysExTrackCF_LockServer
324 static IClassFactoryImpl SysExTrack_CF
= {&SysExTrackCF_Vtbl
, 1 };
326 /******************************************************************
327 * DirectMusicTimeSigTrack ClassFactory
329 static HRESULT WINAPI
TimeSigTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
330 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
331 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
332 return E_NOINTERFACE
;
335 static ULONG WINAPI
TimeSigTrackCF_AddRef(LPCLASSFACTORY iface
) {
336 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
337 return ++(This
->ref
);
340 static ULONG WINAPI
TimeSigTrackCF_Release(LPCLASSFACTORY iface
) {
341 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
342 /* static class, won't be freed */
343 return --(This
->ref
);
346 static HRESULT WINAPI
TimeSigTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
347 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
348 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
349 return DMUSIC_CreateDirectMusicTimeSigTrack (riid
, ppobj
, pOuter
);
352 static HRESULT WINAPI
TimeSigTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
353 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
354 FIXME("(%p, %d): stub\n", This
, dolock
);
358 static IClassFactoryVtbl TimeSigTrackCF_Vtbl
= {
359 TimeSigTrackCF_QueryInterface
,
360 TimeSigTrackCF_AddRef
,
361 TimeSigTrackCF_Release
,
362 TimeSigTrackCF_CreateInstance
,
363 TimeSigTrackCF_LockServer
366 static IClassFactoryImpl TimeSigTrack_CF
= {&TimeSigTrackCF_Vtbl
, 1 };
368 /******************************************************************
369 * DirectMusicParamControlTrack ClassFactory
371 static HRESULT WINAPI
ParamControlTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
372 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
373 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
374 return E_NOINTERFACE
;
377 static ULONG WINAPI
ParamControlTrackCF_AddRef(LPCLASSFACTORY iface
) {
378 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
379 return ++(This
->ref
);
382 static ULONG WINAPI
ParamControlTrackCF_Release(LPCLASSFACTORY iface
) {
383 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
384 /* static class, won't be freed */
385 return --(This
->ref
);
388 static HRESULT WINAPI
ParamControlTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
389 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
390 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
391 return DMUSIC_CreateDirectMusicParamControlTrack (riid
, ppobj
, pOuter
);
394 static HRESULT WINAPI
ParamControlTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
395 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
396 FIXME("(%p, %d): stub\n", This
, dolock
);
400 static IClassFactoryVtbl ParamControlTrackCF_Vtbl
= {
401 ParamControlTrackCF_QueryInterface
,
402 ParamControlTrackCF_AddRef
,
403 ParamControlTrackCF_Release
,
404 ParamControlTrackCF_CreateInstance
,
405 ParamControlTrackCF_LockServer
408 static IClassFactoryImpl ParamControlTrack_CF
= {&ParamControlTrackCF_Vtbl
, 1 };
410 /******************************************************************
411 * DirectMusicMarkerTrack ClassFactory
413 static HRESULT WINAPI
MarkerTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
414 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
415 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
416 return E_NOINTERFACE
;
419 static ULONG WINAPI
MarkerTrackCF_AddRef(LPCLASSFACTORY iface
) {
420 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
421 return ++(This
->ref
);
424 static ULONG WINAPI
MarkerTrackCF_Release(LPCLASSFACTORY iface
) {
425 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
426 /* static class, won't be freed */
427 return --(This
->ref
);
430 static HRESULT WINAPI
MarkerTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
431 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
432 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
433 return DMUSIC_CreateDirectMusicMarkerTrack (riid
, ppobj
, pOuter
);
436 static HRESULT WINAPI
MarkerTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
437 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
438 FIXME("(%p, %d): stub\n", This
, dolock
);
442 static IClassFactoryVtbl MarkerTrackCF_Vtbl
= {
443 MarkerTrackCF_QueryInterface
,
444 MarkerTrackCF_AddRef
,
445 MarkerTrackCF_Release
,
446 MarkerTrackCF_CreateInstance
,
447 MarkerTrackCF_LockServer
450 static IClassFactoryImpl MarkerTrack_CF
= {&MarkerTrackCF_Vtbl
, 1 };
452 /******************************************************************
453 * DirectMusicLyricsTrack ClassFactory
455 static HRESULT WINAPI
LyricsTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
456 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
457 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
458 return E_NOINTERFACE
;
461 static ULONG WINAPI
LyricsTrackCF_AddRef(LPCLASSFACTORY iface
) {
462 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
463 return ++(This
->ref
);
466 static ULONG WINAPI
LyricsTrackCF_Release(LPCLASSFACTORY iface
) {
467 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
468 /* static class, won't be freed */
469 return --(This
->ref
);
472 static HRESULT WINAPI
LyricsTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
473 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
474 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
475 return DMUSIC_CreateDirectMusicLyricsTrack (riid
, ppobj
, pOuter
);
478 static HRESULT WINAPI
LyricsTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
479 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
480 FIXME("(%p, %d): stub\n", This
, dolock
);
484 static IClassFactoryVtbl LyricsTrackCF_Vtbl
= {
485 LyricsTrackCF_QueryInterface
,
486 LyricsTrackCF_AddRef
,
487 LyricsTrackCF_Release
,
488 LyricsTrackCF_CreateInstance
,
489 LyricsTrackCF_LockServer
492 static IClassFactoryImpl LyricsTrack_CF
= {&LyricsTrackCF_Vtbl
, 1 };
495 /******************************************************************
496 * DirectMusicSegTriggerTrack ClassFactory
498 static HRESULT WINAPI
SegTriggerTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
499 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
500 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
501 return E_NOINTERFACE
;
504 static ULONG WINAPI
SegTriggerTrackCF_AddRef(LPCLASSFACTORY iface
) {
505 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
506 return ++(This
->ref
);
509 static ULONG WINAPI
SegTriggerTrackCF_Release(LPCLASSFACTORY iface
) {
510 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
511 /* static class, won't be freed */
512 return --(This
->ref
);
515 static HRESULT WINAPI
SegTriggerTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
516 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
517 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
518 return DMUSIC_CreateDirectMusicSegTriggerTrack (riid
, ppobj
, pOuter
);
521 static HRESULT WINAPI
SegTriggerTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
522 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
523 FIXME("(%p, %d): stub\n", This
, dolock
);
527 static IClassFactoryVtbl SegTriggerTrackCF_Vtbl
= {
528 SegTriggerTrackCF_QueryInterface
,
529 SegTriggerTrackCF_AddRef
,
530 SegTriggerTrackCF_Release
,
531 SegTriggerTrackCF_CreateInstance
,
532 SegTriggerTrackCF_LockServer
535 static IClassFactoryImpl SegTriggerTrack_CF
= {&SegTriggerTrackCF_Vtbl
, 1 };
537 /******************************************************************
538 * DirectMusicAudioPath ClassFactory
540 static HRESULT WINAPI
AudioPathCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
541 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
542 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
543 return E_NOINTERFACE
;
546 static ULONG WINAPI
AudioPathCF_AddRef(LPCLASSFACTORY iface
) {
547 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
548 return ++(This
->ref
);
551 static ULONG WINAPI
AudioPathCF_Release(LPCLASSFACTORY iface
) {
552 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
553 /* static class, won't be freed */
554 return --(This
->ref
);
557 static HRESULT WINAPI
AudioPathCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
558 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
559 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
560 return DMUSIC_CreateDirectMusicAudioPathImpl (riid
, ppobj
, pOuter
);
563 static HRESULT WINAPI
AudioPathCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
564 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
565 FIXME("(%p, %d): stub\n", This
, dolock
);
569 static IClassFactoryVtbl AudioPathCF_Vtbl
= {
570 AudioPathCF_QueryInterface
,
573 AudioPathCF_CreateInstance
,
574 AudioPathCF_LockServer
577 static IClassFactoryImpl AudioPath_CF
= {&AudioPathCF_Vtbl
, 1 };
579 /******************************************************************
580 * DirectMusicWaveTrack ClassFactory
582 static HRESULT WINAPI
WaveTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
583 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
584 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
585 return E_NOINTERFACE
;
588 static ULONG WINAPI
WaveTrackCF_AddRef(LPCLASSFACTORY iface
) {
589 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
590 return ++(This
->ref
);
593 static ULONG WINAPI
WaveTrackCF_Release(LPCLASSFACTORY iface
) {
594 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
595 /* static class, won't be freed */
596 return --(This
->ref
);
599 static HRESULT WINAPI
WaveTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
600 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
601 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
602 return DMUSIC_CreateDirectMusicWaveTrack (riid
, ppobj
, pOuter
);
605 static HRESULT WINAPI
WaveTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
606 IClassFactoryImpl
*This
= (IClassFactoryImpl
*)iface
;
607 FIXME("(%p, %d): stub\n", This
, dolock
);
611 static IClassFactoryVtbl WaveTrackCF_Vtbl
= {
612 WaveTrackCF_QueryInterface
,
615 WaveTrackCF_CreateInstance
,
616 WaveTrackCF_LockServer
619 static IClassFactoryImpl WaveTrack_CF
= {&WaveTrackCF_Vtbl
, 1 };
621 /******************************************************************
626 BOOL WINAPI
DllMain(HINSTANCE hinstDLL
, DWORD fdwReason
, LPVOID lpvReserved
) {
627 if (fdwReason
== DLL_PROCESS_ATTACH
) {
628 DisableThreadLibraryCalls(hinstDLL
);
629 /* FIXME: Initialisation */
631 else if (fdwReason
== DLL_PROCESS_DETACH
) {
639 /******************************************************************
640 * DllCanUnloadNow (DMIME.1)
644 HRESULT WINAPI
DMIME_DllCanUnloadNow(void) {
645 FIXME("(void): stub\n");
650 /******************************************************************
651 * DllGetClassObject (DMIME.2)
655 HRESULT WINAPI
DMIME_DllGetClassObject(REFCLSID rclsid
, REFIID riid
, LPVOID
*ppv
)
657 TRACE("(%s, %s, %p)\n", debugstr_dmguid(rclsid
), debugstr_dmguid(riid
), ppv
);
658 if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicPerformance
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
659 *ppv
= (LPVOID
) &Performance_CF
;
660 IClassFactory_AddRef((IClassFactory
*)*ppv
);
662 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicSegment
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
663 *ppv
= (LPVOID
) &Segment_CF
;
664 IClassFactory_AddRef((IClassFactory
*)*ppv
);
666 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicSegmentState
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
667 *ppv
= (LPVOID
) &SegmentState_CF
;
668 IClassFactory_AddRef((IClassFactory
*)*ppv
);
670 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicGraph
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
671 *ppv
= (LPVOID
) &Graph_CF
;
672 IClassFactory_AddRef((IClassFactory
*)*ppv
);
674 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicTempoTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
675 *ppv
= (LPVOID
) &TempoTrack_CF
;
676 IClassFactory_AddRef((IClassFactory
*)*ppv
);
678 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicSeqTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
679 *ppv
= (LPVOID
) &SeqTrack_CF
;
680 IClassFactory_AddRef((IClassFactory
*)*ppv
);
682 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicSysExTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
683 *ppv
= (LPVOID
) &SysExTrack_CF
;
684 IClassFactory_AddRef((IClassFactory
*)*ppv
);
686 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicTimeSigTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
687 *ppv
= (LPVOID
) &TimeSigTrack_CF
;
688 IClassFactory_AddRef((IClassFactory
*)*ppv
);
690 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicParamControlTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
691 *ppv
= (LPVOID
) &ParamControlTrack_CF
;
692 IClassFactory_AddRef((IClassFactory
*)*ppv
);
694 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicMarkerTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
695 *ppv
= (LPVOID
) &MarkerTrack_CF
;
696 IClassFactory_AddRef((IClassFactory
*)*ppv
);
698 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicLyricsTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
699 *ppv
= (LPVOID
) &LyricsTrack_CF
;
700 IClassFactory_AddRef((IClassFactory
*)*ppv
);
702 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicSegTriggerTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
703 *ppv
= (LPVOID
) &SegTriggerTrack_CF
;
704 IClassFactory_AddRef((IClassFactory
*)*ppv
);
706 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicAudioPath
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
707 *ppv
= (LPVOID
) &AudioPath_CF
;
708 IClassFactory_AddRef((IClassFactory
*)*ppv
);
710 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicWaveTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
711 *ppv
= (LPVOID
) &WaveTrack_CF
;
712 IClassFactory_AddRef((IClassFactory
*)*ppv
);
716 WARN("(%s, %s, %p): no interface found.\n", debugstr_dmguid(rclsid
), debugstr_dmguid(riid
), ppv
);
717 return CLASS_E_CLASSNOTAVAILABLE
;