Updated.
[wine/multimedia.git] / dlls / dmstyle / dmstyle_main.c
blobd85c7d5f8cb19fa2f3051d7e2584cd8381d11596
1 /* DirectMusicStyle Main
3 * Copyright (C) 2003 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 "dmstyle_private.h"
22 WINE_DEFAULT_DEBUG_CHANNEL(dmstyle);
24 typedef struct
26 /* IUnknown fields */
27 ICOM_VFIELD(IClassFactory);
28 DWORD ref;
29 } IClassFactoryImpl;
31 /******************************************************************
32 * DirectMusicSection ClassFactory
34 static HRESULT WINAPI SectionCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
36 ICOM_THIS(IClassFactoryImpl,iface);
38 FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
39 return E_NOINTERFACE;
42 static ULONG WINAPI SectionCF_AddRef(LPCLASSFACTORY iface)
44 ICOM_THIS(IClassFactoryImpl,iface);
45 return ++(This->ref);
48 static ULONG WINAPI SectionCF_Release(LPCLASSFACTORY iface)
50 ICOM_THIS(IClassFactoryImpl,iface);
51 /* static class, won't be freed */
52 return --(This->ref);
55 static HRESULT WINAPI SectionCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
57 ICOM_THIS(IClassFactoryImpl,iface);
59 TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
61 /* nothing here yet */
63 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
64 return E_NOINTERFACE;
67 static HRESULT WINAPI SectionCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
69 ICOM_THIS(IClassFactoryImpl,iface);
70 FIXME("(%p)->(%d),stub!\n", This, dolock);
71 return S_OK;
74 static ICOM_VTABLE(IClassFactory) SectionCF_Vtbl = {
75 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
76 SectionCF_QueryInterface,
77 SectionCF_AddRef,
78 SectionCF_Release,
79 SectionCF_CreateInstance,
80 SectionCF_LockServer
83 static IClassFactoryImpl Section_CF = {&SectionCF_Vtbl, 1 };
85 /******************************************************************
86 * DirectMusicStyle ClassFactory
88 static HRESULT WINAPI StyleCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
90 ICOM_THIS(IClassFactoryImpl,iface);
92 FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
93 return E_NOINTERFACE;
96 static ULONG WINAPI StyleCF_AddRef(LPCLASSFACTORY iface)
98 ICOM_THIS(IClassFactoryImpl,iface);
99 return ++(This->ref);
102 static ULONG WINAPI StyleCF_Release(LPCLASSFACTORY iface)
104 ICOM_THIS(IClassFactoryImpl,iface);
105 /* static class, won't be freed */
106 return --(This->ref);
109 static HRESULT WINAPI StyleCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
111 ICOM_THIS(IClassFactoryImpl,iface);
113 TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
114 if (IsEqualIID (riid, &IID_IDirectMusicStyle) ||
115 IsEqualIID (riid, &IID_IDirectMusicStyle8)) {
116 return DMUSIC_CreateDirectMusicStyle (riid, (LPDIRECTMUSICSTYLE8*)ppobj, pOuter);
117 } else if (IsEqualIID (riid, &IID_IDirectMusicObject)) {
118 return DMUSIC_CreateDirectMusicStyleObject (riid, (LPDIRECTMUSICOBJECT*) ppobj, pOuter);
121 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
122 return E_NOINTERFACE;
125 static HRESULT WINAPI StyleCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
127 ICOM_THIS(IClassFactoryImpl,iface);
128 FIXME("(%p)->(%d),stub!\n", This, dolock);
129 return S_OK;
132 static ICOM_VTABLE(IClassFactory) StyleCF_Vtbl = {
133 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
134 StyleCF_QueryInterface,
135 StyleCF_AddRef,
136 StyleCF_Release,
137 StyleCF_CreateInstance,
138 StyleCF_LockServer
141 static IClassFactoryImpl Style_CF = {&StyleCF_Vtbl, 1 };
143 /******************************************************************
144 * DirectMusicChordTrack ClassFactory
146 static HRESULT WINAPI ChordTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
148 ICOM_THIS(IClassFactoryImpl,iface);
150 FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
151 return E_NOINTERFACE;
154 static ULONG WINAPI ChordTrackCF_AddRef(LPCLASSFACTORY iface)
156 ICOM_THIS(IClassFactoryImpl,iface);
157 return ++(This->ref);
160 static ULONG WINAPI ChordTrackCF_Release(LPCLASSFACTORY iface)
162 ICOM_THIS(IClassFactoryImpl,iface);
163 /* static class, won't be freed */
164 return --(This->ref);
167 static HRESULT WINAPI ChordTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
169 ICOM_THIS(IClassFactoryImpl,iface);
171 TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
172 if (IsEqualIID (riid, &IID_IDirectMusicTrack)
173 || IsEqualIID (riid, &IID_IDirectMusicTrack8)) {
174 return DMUSIC_CreateDirectMusicChordTrack (riid, (LPDIRECTMUSICTRACK8*) ppobj, pOuter);
177 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
178 return E_NOINTERFACE;
181 static HRESULT WINAPI ChordTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
183 ICOM_THIS(IClassFactoryImpl,iface);
184 FIXME("(%p)->(%d),stub!\n", This, dolock);
185 return S_OK;
188 static ICOM_VTABLE(IClassFactory) ChordTrackCF_Vtbl = {
189 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
190 ChordTrackCF_QueryInterface,
191 ChordTrackCF_AddRef,
192 ChordTrackCF_Release,
193 ChordTrackCF_CreateInstance,
194 ChordTrackCF_LockServer
197 static IClassFactoryImpl ChordTrack_CF = {&ChordTrackCF_Vtbl, 1 };
199 /******************************************************************
200 * DirectMusicCommandTrack ClassFactory
202 static HRESULT WINAPI CommandTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
204 ICOM_THIS(IClassFactoryImpl,iface);
206 FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
207 return E_NOINTERFACE;
210 static ULONG WINAPI CommandTrackCF_AddRef(LPCLASSFACTORY iface)
212 ICOM_THIS(IClassFactoryImpl,iface);
213 return ++(This->ref);
216 static ULONG WINAPI CommandTrackCF_Release(LPCLASSFACTORY iface)
218 ICOM_THIS(IClassFactoryImpl,iface);
219 /* static class, won't be freed */
220 return --(This->ref);
223 static HRESULT WINAPI CommandTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
225 ICOM_THIS(IClassFactoryImpl,iface);
227 TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
228 if (IsEqualIID (riid, &IID_IDirectMusicTrack)
229 || IsEqualIID (riid, &IID_IDirectMusicTrack8)) {
230 return DMUSIC_CreateDirectMusicCommandTrack (riid, (LPDIRECTMUSICTRACK8*) ppobj, pOuter);
233 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
234 return E_NOINTERFACE;
237 static HRESULT WINAPI CommandTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
239 ICOM_THIS(IClassFactoryImpl,iface);
240 FIXME("(%p)->(%d),stub!\n", This, dolock);
241 return S_OK;
244 static ICOM_VTABLE(IClassFactory) CommandTrackCF_Vtbl = {
245 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
246 CommandTrackCF_QueryInterface,
247 CommandTrackCF_AddRef,
248 CommandTrackCF_Release,
249 CommandTrackCF_CreateInstance,
250 CommandTrackCF_LockServer
253 static IClassFactoryImpl CommandTrack_CF = {&CommandTrackCF_Vtbl, 1 };
255 /******************************************************************
256 * DirectMusicStyleTrack ClassFactory
258 static HRESULT WINAPI StyleTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
260 ICOM_THIS(IClassFactoryImpl,iface);
262 FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
263 return E_NOINTERFACE;
266 static ULONG WINAPI StyleTrackCF_AddRef(LPCLASSFACTORY iface)
268 ICOM_THIS(IClassFactoryImpl,iface);
269 return ++(This->ref);
272 static ULONG WINAPI StyleTrackCF_Release(LPCLASSFACTORY iface)
274 ICOM_THIS(IClassFactoryImpl,iface);
275 /* static class, won't be freed */
276 return --(This->ref);
279 static HRESULT WINAPI StyleTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
281 ICOM_THIS(IClassFactoryImpl,iface);
283 TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
284 if (IsEqualIID (riid, &IID_IDirectMusicTrack)
285 || IsEqualIID (riid, &IID_IDirectMusicTrack8)) {
286 return DMUSIC_CreateDirectMusicStyleTrack (riid, (LPDIRECTMUSICTRACK8*) ppobj, pOuter);
289 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
290 return E_NOINTERFACE;
293 static HRESULT WINAPI StyleTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
295 ICOM_THIS(IClassFactoryImpl,iface);
296 FIXME("(%p)->(%d),stub!\n", This, dolock);
297 return S_OK;
300 static ICOM_VTABLE(IClassFactory) StyleTrackCF_Vtbl = {
301 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
302 StyleTrackCF_QueryInterface,
303 StyleTrackCF_AddRef,
304 StyleTrackCF_Release,
305 StyleTrackCF_CreateInstance,
306 StyleTrackCF_LockServer
309 static IClassFactoryImpl StyleTrack_CF = {&StyleTrackCF_Vtbl, 1 };
311 /******************************************************************
312 * DirectMusicMotifTrack ClassFactory
314 static HRESULT WINAPI MotifTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
316 ICOM_THIS(IClassFactoryImpl,iface);
318 FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
319 return E_NOINTERFACE;
322 static ULONG WINAPI MotifTrackCF_AddRef(LPCLASSFACTORY iface)
324 ICOM_THIS(IClassFactoryImpl,iface);
325 return ++(This->ref);
328 static ULONG WINAPI MotifTrackCF_Release(LPCLASSFACTORY iface)
330 ICOM_THIS(IClassFactoryImpl,iface);
331 /* static class, won't be freed */
332 return --(This->ref);
335 static HRESULT WINAPI MotifTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
337 ICOM_THIS(IClassFactoryImpl,iface);
339 TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
340 if (IsEqualIID (riid, &IID_IDirectMusicTrack)
341 || IsEqualIID (riid, &IID_IDirectMusicTrack8)) {
342 return DMUSIC_CreateDirectMusicMotifTrack (riid, (LPDIRECTMUSICTRACK8*) ppobj, pOuter);
345 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
346 return E_NOINTERFACE;
349 static HRESULT WINAPI MotifTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
351 ICOM_THIS(IClassFactoryImpl,iface);
352 FIXME("(%p)->(%d),stub!\n", This, dolock);
353 return S_OK;
356 static ICOM_VTABLE(IClassFactory) MotifTrackCF_Vtbl = {
357 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
358 MotifTrackCF_QueryInterface,
359 MotifTrackCF_AddRef,
360 MotifTrackCF_Release,
361 MotifTrackCF_CreateInstance,
362 MotifTrackCF_LockServer
365 static IClassFactoryImpl MotifTrack_CF = {&MotifTrackCF_Vtbl, 1 };
367 /******************************************************************
368 * DirectMusicAuditionTrack ClassFactory
370 static HRESULT WINAPI AuditionTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
372 ICOM_THIS(IClassFactoryImpl,iface);
374 FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
375 return E_NOINTERFACE;
378 static ULONG WINAPI AuditionTrackCF_AddRef(LPCLASSFACTORY iface)
380 ICOM_THIS(IClassFactoryImpl,iface);
381 return ++(This->ref);
384 static ULONG WINAPI AuditionTrackCF_Release(LPCLASSFACTORY iface)
386 ICOM_THIS(IClassFactoryImpl,iface);
387 /* static class, won't be freed */
388 return --(This->ref);
391 static HRESULT WINAPI AuditionTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
393 ICOM_THIS(IClassFactoryImpl,iface);
395 TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
396 if (IsEqualIID (riid, &IID_IDirectMusicTrack)
397 || IsEqualIID (riid, &IID_IDirectMusicTrack8)) {
398 return DMUSIC_CreateDirectMusicAuditionTrack (riid, (LPDIRECTMUSICTRACK8*) ppobj, pOuter);
401 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
402 return E_NOINTERFACE;
405 static HRESULT WINAPI AuditionTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
407 ICOM_THIS(IClassFactoryImpl,iface);
408 FIXME("(%p)->(%d),stub!\n", This, dolock);
409 return S_OK;
412 static ICOM_VTABLE(IClassFactory) AuditionTrackCF_Vtbl = {
413 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
414 AuditionTrackCF_QueryInterface,
415 AuditionTrackCF_AddRef,
416 AuditionTrackCF_Release,
417 AuditionTrackCF_CreateInstance,
418 AuditionTrackCF_LockServer
421 static IClassFactoryImpl AuditionTrack_CF = {&AuditionTrackCF_Vtbl, 1 };
423 /******************************************************************
424 * DirectMusicMuteTrack ClassFactory
426 static HRESULT WINAPI MuteTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
428 ICOM_THIS(IClassFactoryImpl,iface);
430 FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
431 return E_NOINTERFACE;
434 static ULONG WINAPI MuteTrackCF_AddRef(LPCLASSFACTORY iface)
436 ICOM_THIS(IClassFactoryImpl,iface);
437 return ++(This->ref);
440 static ULONG WINAPI MuteTrackCF_Release(LPCLASSFACTORY iface)
442 ICOM_THIS(IClassFactoryImpl,iface);
443 /* static class, won't be freed */
444 return --(This->ref);
447 static HRESULT WINAPI MuteTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
449 ICOM_THIS(IClassFactoryImpl,iface);
451 TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
452 if (IsEqualIID (riid, &IID_IDirectMusicTrack)
453 || IsEqualIID (riid, &IID_IDirectMusicTrack8)) {
454 return DMUSIC_CreateDirectMusicMuteTrack (riid, (LPDIRECTMUSICTRACK8*) ppobj, pOuter);
457 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
458 return E_NOINTERFACE;
461 static HRESULT WINAPI MuteTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
463 ICOM_THIS(IClassFactoryImpl,iface);
464 FIXME("(%p)->(%d),stub!\n", This, dolock);
465 return S_OK;
468 static ICOM_VTABLE(IClassFactory) MuteTrackCF_Vtbl = {
469 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
470 MuteTrackCF_QueryInterface,
471 MuteTrackCF_AddRef,
472 MuteTrackCF_Release,
473 MuteTrackCF_CreateInstance,
474 MuteTrackCF_LockServer
477 static IClassFactoryImpl MuteTrack_CF = {&MuteTrackCF_Vtbl, 1 };
479 /******************************************************************
480 * DirectMusicMelodyFormulationTrack ClassFactory
482 static HRESULT WINAPI MelodyFormulationTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
484 ICOM_THIS(IClassFactoryImpl,iface);
486 FIXME("(%p)->(%s,%p),stub!\n",This,debugstr_guid(riid),ppobj);
487 return E_NOINTERFACE;
490 static ULONG WINAPI MelodyFormulationTrackCF_AddRef(LPCLASSFACTORY iface)
492 ICOM_THIS(IClassFactoryImpl,iface);
493 return ++(This->ref);
496 static ULONG WINAPI MelodyFormulationTrackCF_Release(LPCLASSFACTORY iface)
498 ICOM_THIS(IClassFactoryImpl,iface);
499 /* static class, won't be freed */
500 return --(This->ref);
503 static HRESULT WINAPI MelodyFormulationTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj)
505 ICOM_THIS(IClassFactoryImpl,iface);
507 TRACE ("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
508 if (IsEqualIID (riid, &IID_IDirectMusicTrack)
509 || IsEqualIID (riid, &IID_IDirectMusicTrack8)) {
510 return DMUSIC_CreateDirectMusicMelodyFormulationTrack (riid, (LPDIRECTMUSICTRACK8*) ppobj, pOuter);
513 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
514 return E_NOINTERFACE;
517 static HRESULT WINAPI MelodyFormulationTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
519 ICOM_THIS(IClassFactoryImpl,iface);
520 FIXME("(%p)->(%d),stub!\n", This, dolock);
521 return S_OK;
524 static ICOM_VTABLE(IClassFactory) MelodyFormulationTrackCF_Vtbl = {
525 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
526 MelodyFormulationTrackCF_QueryInterface,
527 MelodyFormulationTrackCF_AddRef,
528 MelodyFormulationTrackCF_Release,
529 MelodyFormulationTrackCF_CreateInstance,
530 MelodyFormulationTrackCF_LockServer
533 static IClassFactoryImpl MelodyFormulationTrack_CF = {&MelodyFormulationTrackCF_Vtbl, 1 };
535 /******************************************************************
536 * DllMain
540 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
542 if (fdwReason == DLL_PROCESS_ATTACH)
544 DisableThreadLibraryCalls(hinstDLL);
545 /* FIXME: Initialisation */
547 else if (fdwReason == DLL_PROCESS_DETACH)
549 /* FIXME: Cleanup */
552 return TRUE;
556 /******************************************************************
557 * DllCanUnloadNow (DMSTYLE.1)
561 HRESULT WINAPI DMSTYLE_DllCanUnloadNow(void)
563 FIXME("(void): stub\n");
565 return S_FALSE;
569 /******************************************************************
570 * DllGetClassObject (DMSTYLE.2)
574 HRESULT WINAPI DMSTYLE_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
576 TRACE("(%p,%p,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
578 if (IsEqualCLSID (rclsid, &CLSID_DirectMusicSection) && IsEqualIID (riid, &IID_IClassFactory)) {
579 *ppv = (LPVOID) &Section_CF;
580 IClassFactory_AddRef((IClassFactory*)*ppv);
581 return S_OK;
582 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicStyle) && IsEqualIID (riid, &IID_IClassFactory)) {
583 *ppv = (LPVOID) &Style_CF;
584 IClassFactory_AddRef((IClassFactory*)*ppv);
585 return S_OK;
586 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicChordTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
587 *ppv = (LPVOID) &ChordTrack_CF;
588 IClassFactory_AddRef((IClassFactory*)*ppv);
589 return S_OK;
590 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicCommandTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
591 *ppv = (LPVOID) &CommandTrack_CF;
592 IClassFactory_AddRef((IClassFactory*)*ppv);
593 return S_OK;
594 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicStyleTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
595 *ppv = (LPVOID) &StyleTrack_CF;
596 IClassFactory_AddRef((IClassFactory*)*ppv);
597 return S_OK;
598 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicMotifTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
599 *ppv = (LPVOID) &MotifTrack_CF;
600 IClassFactory_AddRef((IClassFactory*)*ppv);
601 return S_OK;
602 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicAuditionTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
603 *ppv = (LPVOID) &AuditionTrack_CF;
604 IClassFactory_AddRef((IClassFactory*)*ppv);
605 return S_OK;
606 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicMuteTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
607 *ppv = (LPVOID) &MuteTrack_CF;
608 IClassFactory_AddRef((IClassFactory*)*ppv);
609 return S_OK;
610 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicMelodyFormulationTrack) && IsEqualIID (riid, &IID_IClassFactory)) {
611 *ppv = (LPVOID) &MelodyFormulationTrack_CF;
612 IClassFactory_AddRef((IClassFactory*)*ppv);
613 return S_OK;
616 WARN("(%p,%p,%p): no interface found.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
617 return CLASS_E_CLASSNOTAVAILABLE;