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
);
27 ICOM_VFIELD(IClassFactory
);
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
);
42 static ULONG WINAPI
SectionCF_AddRef(LPCLASSFACTORY iface
)
44 ICOM_THIS(IClassFactoryImpl
,iface
);
48 static ULONG WINAPI
SectionCF_Release(LPCLASSFACTORY iface
)
50 ICOM_THIS(IClassFactoryImpl
,iface
);
51 /* static class, won't be freed */
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
);
67 static HRESULT WINAPI
SectionCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
)
69 ICOM_THIS(IClassFactoryImpl
,iface
);
70 FIXME("(%p)->(%d),stub!\n", This
, dolock
);
74 static ICOM_VTABLE(IClassFactory
) SectionCF_Vtbl
= {
75 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
76 SectionCF_QueryInterface
,
79 SectionCF_CreateInstance
,
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
);
96 static ULONG WINAPI
StyleCF_AddRef(LPCLASSFACTORY iface
)
98 ICOM_THIS(IClassFactoryImpl
,iface
);
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
);
132 static ICOM_VTABLE(IClassFactory
) StyleCF_Vtbl
= {
133 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
134 StyleCF_QueryInterface
,
137 StyleCF_CreateInstance
,
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
);
188 static ICOM_VTABLE(IClassFactory
) ChordTrackCF_Vtbl
= {
189 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
190 ChordTrackCF_QueryInterface
,
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
);
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
);
300 static ICOM_VTABLE(IClassFactory
) StyleTrackCF_Vtbl
= {
301 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
302 StyleTrackCF_QueryInterface
,
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
);
356 static ICOM_VTABLE(IClassFactory
) MotifTrackCF_Vtbl
= {
357 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
358 MotifTrackCF_QueryInterface
,
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
);
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
);
468 static ICOM_VTABLE(IClassFactory
) MuteTrackCF_Vtbl
= {
469 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
470 MuteTrackCF_QueryInterface
,
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
);
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 /******************************************************************
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
)
556 /******************************************************************
557 * DllCanUnloadNow (DMSTYLE.1)
561 HRESULT WINAPI
DMSTYLE_DllCanUnloadNow(void)
563 FIXME("(void): stub\n");
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
);
582 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicStyle
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
583 *ppv
= (LPVOID
) &Style_CF
;
584 IClassFactory_AddRef((IClassFactory
*)*ppv
);
586 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicChordTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
587 *ppv
= (LPVOID
) &ChordTrack_CF
;
588 IClassFactory_AddRef((IClassFactory
*)*ppv
);
590 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicCommandTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
591 *ppv
= (LPVOID
) &CommandTrack_CF
;
592 IClassFactory_AddRef((IClassFactory
*)*ppv
);
594 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicStyleTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
595 *ppv
= (LPVOID
) &StyleTrack_CF
;
596 IClassFactory_AddRef((IClassFactory
*)*ppv
);
598 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicMotifTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
599 *ppv
= (LPVOID
) &MotifTrack_CF
;
600 IClassFactory_AddRef((IClassFactory
*)*ppv
);
602 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicAuditionTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
603 *ppv
= (LPVOID
) &AuditionTrack_CF
;
604 IClassFactory_AddRef((IClassFactory
*)*ppv
);
606 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicMuteTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
607 *ppv
= (LPVOID
) &MuteTrack_CF
;
608 IClassFactory_AddRef((IClassFactory
*)*ppv
);
610 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicMelodyFormulationTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
611 *ppv
= (LPVOID
) &MelodyFormulationTrack_CF
;
612 IClassFactory_AddRef((IClassFactory
*)*ppv
);
616 WARN("(%p,%p,%p): no interface found.\n", debugstr_guid(rclsid
), debugstr_guid(riid
), ppv
);
617 return CLASS_E_CLASSNOTAVAILABLE
;