1 /* DirectMusicScript 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 "dmscript_private.h"
22 WINE_DEFAULT_DEBUG_CHANNEL(dmscript
);
26 IClassFactoryVtbl
*lpVtbl
;
30 /******************************************************************
31 * DirectMusicScriptAutoImplSegment ClassFactory
33 static HRESULT WINAPI
ScriptAutoImplSegmentCF_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
ScriptAutoImplSegmentCF_AddRef(LPCLASSFACTORY iface
) {
40 ICOM_THIS(IClassFactoryImpl
,iface
);
44 static ULONG WINAPI
ScriptAutoImplSegmentCF_Release(LPCLASSFACTORY iface
) {
45 ICOM_THIS(IClassFactoryImpl
,iface
);
46 /* static class, won't be freed */
50 static HRESULT WINAPI
ScriptAutoImplSegmentCF_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 /* nothing here yet */
54 WARN("(%p, %s, %p): not found\n", This
, debugstr_dmguid(riid
), ppobj
);
58 static HRESULT WINAPI
ScriptAutoImplSegmentCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
59 ICOM_THIS(IClassFactoryImpl
,iface
);
60 FIXME("(%p, %d): stub\n", This
, dolock
);
64 static IClassFactoryVtbl ScriptAutoImplSegmentCF_Vtbl
= {
65 ScriptAutoImplSegmentCF_QueryInterface
,
66 ScriptAutoImplSegmentCF_AddRef
,
67 ScriptAutoImplSegmentCF_Release
,
68 ScriptAutoImplSegmentCF_CreateInstance
,
69 ScriptAutoImplSegmentCF_LockServer
72 static IClassFactoryImpl ScriptAutoImplSegment_CF
= {&ScriptAutoImplSegmentCF_Vtbl
, 1 };
74 /******************************************************************
75 * DirectMusicScriptTrack ClassFactory
77 static HRESULT WINAPI
ScriptTrackCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
78 ICOM_THIS(IClassFactoryImpl
,iface
);
79 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
83 static ULONG WINAPI
ScriptTrackCF_AddRef(LPCLASSFACTORY iface
) {
84 ICOM_THIS(IClassFactoryImpl
,iface
);
88 static ULONG WINAPI
ScriptTrackCF_Release(LPCLASSFACTORY iface
) {
89 ICOM_THIS(IClassFactoryImpl
,iface
);
90 /* static class, won't be freed */
94 static HRESULT WINAPI
ScriptTrackCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
95 ICOM_THIS(IClassFactoryImpl
,iface
);
96 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
97 return DMUSIC_CreateDirectMusicScriptTrack (riid
, ppobj
, pOuter
);
100 static HRESULT WINAPI
ScriptTrackCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
101 ICOM_THIS(IClassFactoryImpl
,iface
);
102 FIXME("(%p, %d): stub\n", This
, dolock
);
106 static IClassFactoryVtbl ScriptTrackCF_Vtbl
= {
107 ScriptTrackCF_QueryInterface
,
108 ScriptTrackCF_AddRef
,
109 ScriptTrackCF_Release
,
110 ScriptTrackCF_CreateInstance
,
111 ScriptTrackCF_LockServer
114 static IClassFactoryImpl ScriptTrack_CF
= {&ScriptTrackCF_Vtbl
, 1 };
116 /******************************************************************
117 * DirectMusicAudioVBScript ClassFactory
119 static HRESULT WINAPI
AudioVBScriptCF_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
AudioVBScriptCF_AddRef(LPCLASSFACTORY iface
) {
126 ICOM_THIS(IClassFactoryImpl
,iface
);
127 return ++(This
->ref
);
130 static ULONG WINAPI
AudioVBScriptCF_Release(LPCLASSFACTORY iface
) {
131 ICOM_THIS(IClassFactoryImpl
,iface
);
132 /* static class, won't be freed */
133 return --(This
->ref
);
136 static HRESULT WINAPI
AudioVBScriptCF_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 /* nothing here yet */
140 WARN("(%p, %s, %p): not found\n", This
, debugstr_dmguid(riid
), ppobj
);
141 return E_NOINTERFACE
;
144 static HRESULT WINAPI
AudioVBScriptCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
145 ICOM_THIS(IClassFactoryImpl
,iface
);
146 FIXME("(%p, %d): stub\n", This
, dolock
);
150 static IClassFactoryVtbl AudioVBScriptCF_Vtbl
= {
151 AudioVBScriptCF_QueryInterface
,
152 AudioVBScriptCF_AddRef
,
153 AudioVBScriptCF_Release
,
154 AudioVBScriptCF_CreateInstance
,
155 AudioVBScriptCF_LockServer
158 static IClassFactoryImpl AudioVBScript_CF
= {&AudioVBScriptCF_Vtbl
, 1 };
160 /******************************************************************
161 * DirectMusicScript ClassFactory
163 static HRESULT WINAPI
ScriptCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
164 ICOM_THIS(IClassFactoryImpl
,iface
);
165 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
166 return E_NOINTERFACE
;
169 static ULONG WINAPI
ScriptCF_AddRef(LPCLASSFACTORY iface
) {
170 ICOM_THIS(IClassFactoryImpl
,iface
);
171 return ++(This
->ref
);
174 static ULONG WINAPI
ScriptCF_Release(LPCLASSFACTORY iface
) {
175 ICOM_THIS(IClassFactoryImpl
,iface
);
176 /* static class, won't be freed */
177 return --(This
->ref
);
180 static HRESULT WINAPI
ScriptCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
181 ICOM_THIS(IClassFactoryImpl
,iface
);
182 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
183 return DMUSIC_CreateDirectMusicScriptImpl (riid
, ppobj
, pOuter
);
186 static HRESULT WINAPI
ScriptCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
187 ICOM_THIS(IClassFactoryImpl
,iface
);
188 FIXME("(%p, %d): stub\n", This
, dolock
);
192 static IClassFactoryVtbl ScriptCF_Vtbl
= {
193 ScriptCF_QueryInterface
,
196 ScriptCF_CreateInstance
,
200 static IClassFactoryImpl Script_CF
= {&ScriptCF_Vtbl
, 1 };
202 /******************************************************************
203 * DirectMusicScriptAutoImplPerformance ClassFactory
205 static HRESULT WINAPI
ScriptAutoImplPerformanceCF_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
ScriptAutoImplPerformanceCF_AddRef(LPCLASSFACTORY iface
) {
212 ICOM_THIS(IClassFactoryImpl
,iface
);
213 return ++(This
->ref
);
216 static ULONG WINAPI
ScriptAutoImplPerformanceCF_Release(LPCLASSFACTORY iface
) {
217 ICOM_THIS(IClassFactoryImpl
,iface
);
218 /* static class, won't be freed */
219 return --(This
->ref
);
222 static HRESULT WINAPI
ScriptAutoImplPerformanceCF_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 /* nothing here yet */
226 WARN("(%p, %s, %p): not found\n", This
, debugstr_dmguid(riid
), ppobj
);
227 return E_NOINTERFACE
;
230 static HRESULT WINAPI
ScriptAutoImplPerformanceCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
231 ICOM_THIS(IClassFactoryImpl
,iface
);
232 FIXME("(%p, %d): stub\n", This
, dolock
);
236 static IClassFactoryVtbl ScriptAutoImplPerformanceCF_Vtbl
= {
237 ScriptAutoImplPerformanceCF_QueryInterface
,
238 ScriptAutoImplPerformanceCF_AddRef
,
239 ScriptAutoImplPerformanceCF_Release
,
240 ScriptAutoImplPerformanceCF_CreateInstance
,
241 ScriptAutoImplPerformanceCF_LockServer
244 static IClassFactoryImpl ScriptAutoImplPerformance_CF
= {&ScriptAutoImplPerformanceCF_Vtbl
, 1 };
246 /******************************************************************
247 * DirectMusicScriptSourceCodeLoader ClassFactory
249 static HRESULT WINAPI
ScriptSourceCodeLoaderCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
250 ICOM_THIS(IClassFactoryImpl
,iface
);
251 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
252 return E_NOINTERFACE
;
255 static ULONG WINAPI
ScriptSourceCodeLoaderCF_AddRef(LPCLASSFACTORY iface
) {
256 ICOM_THIS(IClassFactoryImpl
,iface
);
257 return ++(This
->ref
);
260 static ULONG WINAPI
ScriptSourceCodeLoaderCF_Release(LPCLASSFACTORY iface
) {
261 ICOM_THIS(IClassFactoryImpl
,iface
);
262 /* static class, won't be freed */
263 return --(This
->ref
);
266 static HRESULT WINAPI
ScriptSourceCodeLoaderCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
267 ICOM_THIS(IClassFactoryImpl
,iface
);
268 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
269 /* nothing here yet */
270 WARN("(%p, %s, %p): not found\n", This
, debugstr_dmguid(riid
), ppobj
);
271 return E_NOINTERFACE
;
274 static HRESULT WINAPI
ScriptSourceCodeLoaderCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
275 ICOM_THIS(IClassFactoryImpl
,iface
);
276 FIXME("(%p, %d): stub\n", This
, dolock
);
280 static IClassFactoryVtbl ScriptSourceCodeLoaderCF_Vtbl
= {
281 ScriptSourceCodeLoaderCF_QueryInterface
,
282 ScriptSourceCodeLoaderCF_AddRef
,
283 ScriptSourceCodeLoaderCF_Release
,
284 ScriptSourceCodeLoaderCF_CreateInstance
,
285 ScriptSourceCodeLoaderCF_LockServer
288 static IClassFactoryImpl ScriptSourceCodeLoader_CF
= {&ScriptSourceCodeLoaderCF_Vtbl
, 1 };
290 /******************************************************************
291 * DirectMusicScriptAutoImplSegmentState ClassFactory
293 static HRESULT WINAPI
ScriptAutoImplSegmentStateCF_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
ScriptAutoImplSegmentStateCF_AddRef(LPCLASSFACTORY iface
) {
300 ICOM_THIS(IClassFactoryImpl
,iface
);
301 return ++(This
->ref
);
304 static ULONG WINAPI
ScriptAutoImplSegmentStateCF_Release(LPCLASSFACTORY iface
) {
305 ICOM_THIS(IClassFactoryImpl
,iface
);
306 /* static class, won't be freed */
307 return --(This
->ref
);
310 static HRESULT WINAPI
ScriptAutoImplSegmentStateCF_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 /* nothing here yet */
314 WARN("(%p, %s, %p): not found\n", This
, debugstr_dmguid(riid
), ppobj
);
315 return E_NOINTERFACE
;
318 static HRESULT WINAPI
ScriptAutoImplSegmentStateCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
319 ICOM_THIS(IClassFactoryImpl
,iface
);
320 FIXME("(%p, %d): stub\n", This
, dolock
);
324 static IClassFactoryVtbl ScriptAutoImplSegmentStateCF_Vtbl
= {
325 ScriptAutoImplSegmentStateCF_QueryInterface
,
326 ScriptAutoImplSegmentStateCF_AddRef
,
327 ScriptAutoImplSegmentStateCF_Release
,
328 ScriptAutoImplSegmentStateCF_CreateInstance
,
329 ScriptAutoImplSegmentStateCF_LockServer
332 static IClassFactoryImpl ScriptAutoImplSegmentState_CF
= {&ScriptAutoImplSegmentStateCF_Vtbl
, 1 };
334 /******************************************************************
335 * DirectMusicScriptAutoImplAudioPathConfig ClassFactory
337 static HRESULT WINAPI
ScriptAutoImplAudioPathConfigCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
338 ICOM_THIS(IClassFactoryImpl
,iface
);
339 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
340 return E_NOINTERFACE
;
343 static ULONG WINAPI
ScriptAutoImplAudioPathConfigCF_AddRef(LPCLASSFACTORY iface
) {
344 ICOM_THIS(IClassFactoryImpl
,iface
);
345 return ++(This
->ref
);
348 static ULONG WINAPI
ScriptAutoImplAudioPathConfigCF_Release(LPCLASSFACTORY iface
) {
349 ICOM_THIS(IClassFactoryImpl
,iface
);
350 /* static class, won't be freed */
351 return --(This
->ref
);
354 static HRESULT WINAPI
ScriptAutoImplAudioPathConfigCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
355 ICOM_THIS(IClassFactoryImpl
,iface
);
356 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
357 /* nothing here yet */
358 WARN("(%p, %s, %p): not found\n", This
, debugstr_dmguid(riid
), ppobj
);
359 return E_NOINTERFACE
;
362 static HRESULT WINAPI
ScriptAutoImplAudioPathConfigCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
363 ICOM_THIS(IClassFactoryImpl
,iface
);
364 FIXME("(%p, %d): stub\n", This
, dolock
);
368 static IClassFactoryVtbl ScriptAutoImplAudioPathConfigCF_Vtbl
= {
369 ScriptAutoImplAudioPathConfigCF_QueryInterface
,
370 ScriptAutoImplAudioPathConfigCF_AddRef
,
371 ScriptAutoImplAudioPathConfigCF_Release
,
372 ScriptAutoImplAudioPathConfigCF_CreateInstance
,
373 ScriptAutoImplAudioPathConfigCF_LockServer
376 static IClassFactoryImpl ScriptAutoImplAudioPathConfig_CF
= {&ScriptAutoImplAudioPathConfigCF_Vtbl
, 1 };
378 /******************************************************************
379 * DirectMusicScriptAutoImplAudioPath ClassFactory
381 static HRESULT WINAPI
ScriptAutoImplAudioPathCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
382 ICOM_THIS(IClassFactoryImpl
,iface
);
383 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
384 return E_NOINTERFACE
;
387 static ULONG WINAPI
ScriptAutoImplAudioPathCF_AddRef(LPCLASSFACTORY iface
) {
388 ICOM_THIS(IClassFactoryImpl
,iface
);
389 return ++(This
->ref
);
392 static ULONG WINAPI
ScriptAutoImplAudioPathCF_Release(LPCLASSFACTORY iface
) {
393 ICOM_THIS(IClassFactoryImpl
,iface
);
394 /* static class, won't be freed */
395 return --(This
->ref
);
398 static HRESULT WINAPI
ScriptAutoImplAudioPathCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
399 ICOM_THIS(IClassFactoryImpl
,iface
);
400 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
401 /* nothing here yet */
402 WARN("(%p, %s, %p): not found\n", This
, debugstr_dmguid(riid
), ppobj
);
403 return E_NOINTERFACE
;
406 static HRESULT WINAPI
ScriptAutoImplAudioPathCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
407 ICOM_THIS(IClassFactoryImpl
,iface
);
408 FIXME("(%p, %d): stub\n", This
, dolock
);
412 static IClassFactoryVtbl ScriptAutoImplAudioPathCF_Vtbl
= {
413 ScriptAutoImplAudioPathCF_QueryInterface
,
414 ScriptAutoImplAudioPathCF_AddRef
,
415 ScriptAutoImplAudioPathCF_Release
,
416 ScriptAutoImplAudioPathCF_CreateInstance
,
417 ScriptAutoImplAudioPathCF_LockServer
420 static IClassFactoryImpl ScriptAutoImplAudioPath_CF
= {&ScriptAutoImplAudioPathCF_Vtbl
, 1 };
422 /******************************************************************
423 * DirectMusicScriptAutoImplSong ClassFactory
425 static HRESULT WINAPI
ScriptAutoImplSongCF_QueryInterface(LPCLASSFACTORY iface
,REFIID riid
,LPVOID
*ppobj
) {
426 ICOM_THIS(IClassFactoryImpl
,iface
);
427 FIXME("(%p, %s, %p): stub\n", This
, debugstr_dmguid(riid
), ppobj
);
428 return E_NOINTERFACE
;
431 static ULONG WINAPI
ScriptAutoImplSongCF_AddRef(LPCLASSFACTORY iface
) {
432 ICOM_THIS(IClassFactoryImpl
,iface
);
433 return ++(This
->ref
);
436 static ULONG WINAPI
ScriptAutoImplSongCF_Release(LPCLASSFACTORY iface
) {
437 ICOM_THIS(IClassFactoryImpl
,iface
);
438 /* static class, won't be freed */
439 return --(This
->ref
);
442 static HRESULT WINAPI
ScriptAutoImplSongCF_CreateInstance(LPCLASSFACTORY iface
, LPUNKNOWN pOuter
, REFIID riid
, LPVOID
*ppobj
) {
443 ICOM_THIS(IClassFactoryImpl
,iface
);
444 TRACE ("(%p, %p, %s, %p)\n", This
, pOuter
, debugstr_dmguid(riid
), ppobj
);
445 /* nothing here yet */
446 WARN("(%p, %s, %p): not found\n", This
, debugstr_dmguid(riid
), ppobj
);
447 return E_NOINTERFACE
;
450 static HRESULT WINAPI
ScriptAutoImplSongCF_LockServer(LPCLASSFACTORY iface
,BOOL dolock
) {
451 ICOM_THIS(IClassFactoryImpl
,iface
);
452 FIXME("(%p, %d): stub\n", This
, dolock
);
456 static IClassFactoryVtbl ScriptAutoImplSongCF_Vtbl
= {
457 ScriptAutoImplSongCF_QueryInterface
,
458 ScriptAutoImplSongCF_AddRef
,
459 ScriptAutoImplSongCF_Release
,
460 ScriptAutoImplSongCF_CreateInstance
,
461 ScriptAutoImplSongCF_LockServer
464 static IClassFactoryImpl ScriptAutoImplSong_CF
= {&ScriptAutoImplSongCF_Vtbl
, 1 };
466 /******************************************************************
471 BOOL WINAPI
DllMain(HINSTANCE hinstDLL
, DWORD fdwReason
, LPVOID lpvReserved
) {
472 if (fdwReason
== DLL_PROCESS_ATTACH
) {
473 DisableThreadLibraryCalls(hinstDLL
);
474 /* FIXME: Initialisation */
475 } else if (fdwReason
== DLL_PROCESS_DETACH
) {
483 /******************************************************************
484 * DllCanUnloadNow (DMSCRIPT.1)
488 HRESULT WINAPI
DMSCRIPT_DllCanUnloadNow(void) {
489 FIXME("(void): stub\n");
494 /******************************************************************
495 * DllGetClassObject (DMSCRIPT.2)
499 HRESULT WINAPI
DMSCRIPT_DllGetClassObject(REFCLSID rclsid
, REFIID riid
, LPVOID
*ppv
) {
500 TRACE("(%s, %s, %p)\n", debugstr_dmguid(rclsid
), debugstr_dmguid(riid
), ppv
);
501 if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicScriptAutoImpSegment
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
502 *ppv
= (LPVOID
) &ScriptAutoImplSegment_CF
;
503 IClassFactory_AddRef((IClassFactory
*)*ppv
);
505 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicScriptTrack
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
506 *ppv
= (LPVOID
) &ScriptTrack_CF
;
507 IClassFactory_AddRef((IClassFactory
*)*ppv
);
509 } else if (IsEqualCLSID (rclsid
, &CLSID_AudioVBScript
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
510 *ppv
= (LPVOID
) &AudioVBScript_CF
;
511 IClassFactory_AddRef((IClassFactory
*)*ppv
);
513 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicScript
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
514 *ppv
= (LPVOID
) &Script_CF
;
515 IClassFactory_AddRef((IClassFactory
*)*ppv
);
517 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicScriptAutoImpPerformance
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
518 *ppv
= (LPVOID
) &ScriptAutoImplPerformance_CF
;
519 IClassFactory_AddRef((IClassFactory
*)*ppv
);
521 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicScriptSourceCodeLoader
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
522 *ppv
= (LPVOID
) &ScriptSourceCodeLoader_CF
;
523 IClassFactory_AddRef((IClassFactory
*)*ppv
);
525 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicScriptAutoImpSegmentState
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
526 *ppv
= (LPVOID
) &ScriptAutoImplSegmentState_CF
;
527 IClassFactory_AddRef((IClassFactory
*)*ppv
);
529 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicScriptAutoImpAudioPathConfig
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
530 *ppv
= (LPVOID
) &ScriptAutoImplAudioPathConfig_CF
;
531 IClassFactory_AddRef((IClassFactory
*)*ppv
);
533 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicScriptAutoImpAudioPath
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
534 *ppv
= (LPVOID
) &ScriptAutoImplAudioPath_CF
;
535 IClassFactory_AddRef((IClassFactory
*)*ppv
);
537 } else if (IsEqualCLSID (rclsid
, &CLSID_DirectMusicScriptAutoImpSong
) && IsEqualIID (riid
, &IID_IClassFactory
)) {
538 *ppv
= (LPVOID
) &ScriptAutoImplSong_CF
;
539 IClassFactory_AddRef((IClassFactory
*)*ppv
);
543 WARN("(%s, %s, %p): no interface found.\n", debugstr_dmguid(rclsid
), debugstr_dmguid(riid
), ppv
);
544 return CLASS_E_CLASSNOTAVAILABLE
;
548 /******************************************************************
553 /* check whether the given DWORD is even (return 0) or odd (return 1) */
554 int even_or_odd (DWORD number
) {
555 return (number
& 0x1); /* basically, check if bit 0 is set ;) */
558 /* FOURCC to string conversion for debug messages */
559 const char *debugstr_fourcc (DWORD fourcc
) {
560 if (!fourcc
) return "'null'";
561 return wine_dbg_sprintf ("\'%c%c%c%c\'",
562 (char)(fourcc
), (char)(fourcc
>> 8),
563 (char)(fourcc
>> 16), (char)(fourcc
>> 24));
566 /* DMUS_VERSION struct to string conversion for debug messages */
567 const char *debugstr_dmversion (LPDMUS_VERSION version
) {
568 if (!version
) return "'null'";
569 return wine_dbg_sprintf ("\'%i,%i,%i,%i\'",
570 (int)((version
->dwVersionMS
&& 0xFFFF0000) >> 8), (int)(version
->dwVersionMS
&& 0x0000FFFF),
571 (int)((version
->dwVersionLS
&& 0xFFFF0000) >> 8), (int)(version
->dwVersionLS
&& 0x0000FFFF));
574 /* returns name of given GUID */
575 const char *debugstr_dmguid (const GUID
*id
) {
576 static const guid_info guids
[] = {
578 GE(CLSID_AudioVBScript
),
579 GE(CLSID_DirectMusic
),
580 GE(CLSID_DirectMusicAudioPath
),
581 GE(CLSID_DirectMusicAudioPathConfig
),
582 GE(CLSID_DirectMusicAuditionTrack
),
583 GE(CLSID_DirectMusicBand
),
584 GE(CLSID_DirectMusicBandTrack
),
585 GE(CLSID_DirectMusicChordMapTrack
),
586 GE(CLSID_DirectMusicChordMap
),
587 GE(CLSID_DirectMusicChordTrack
),
588 GE(CLSID_DirectMusicCollection
),
589 GE(CLSID_DirectMusicCommandTrack
),
590 GE(CLSID_DirectMusicComposer
),
591 GE(CLSID_DirectMusicContainer
),
592 GE(CLSID_DirectMusicGraph
),
593 GE(CLSID_DirectMusicLoader
),
594 GE(CLSID_DirectMusicLyricsTrack
),
595 GE(CLSID_DirectMusicMarkerTrack
),
596 GE(CLSID_DirectMusicMelodyFormulationTrack
),
597 GE(CLSID_DirectMusicMotifTrack
),
598 GE(CLSID_DirectMusicMuteTrack
),
599 GE(CLSID_DirectMusicParamControlTrack
),
600 GE(CLSID_DirectMusicPatternTrack
),
601 GE(CLSID_DirectMusicPerformance
),
602 GE(CLSID_DirectMusicScript
),
603 GE(CLSID_DirectMusicScriptAutoImpSegment
),
604 GE(CLSID_DirectMusicScriptAutoImpPerformance
),
605 GE(CLSID_DirectMusicScriptAutoImpSegmentState
),
606 GE(CLSID_DirectMusicScriptAutoImpAudioPathConfig
),
607 GE(CLSID_DirectMusicScriptAutoImpAudioPath
),
608 GE(CLSID_DirectMusicScriptAutoImpSong
),
609 GE(CLSID_DirectMusicScriptSourceCodeLoader
),
610 GE(CLSID_DirectMusicScriptTrack
),
611 GE(CLSID_DirectMusicSection
),
612 GE(CLSID_DirectMusicSegment
),
613 GE(CLSID_DirectMusicSegmentState
),
614 GE(CLSID_DirectMusicSegmentTriggerTrack
),
615 GE(CLSID_DirectMusicSegTriggerTrack
),
616 GE(CLSID_DirectMusicSeqTrack
),
617 GE(CLSID_DirectMusicSignPostTrack
),
618 GE(CLSID_DirectMusicSong
),
619 GE(CLSID_DirectMusicStyle
),
620 GE(CLSID_DirectMusicStyleTrack
),
621 GE(CLSID_DirectMusicSynth
),
622 GE(CLSID_DirectMusicSynthSink
),
623 GE(CLSID_DirectMusicSysExTrack
),
624 GE(CLSID_DirectMusicTemplate
),
625 GE(CLSID_DirectMusicTempoTrack
),
626 GE(CLSID_DirectMusicTimeSigTrack
),
627 GE(CLSID_DirectMusicWaveTrack
),
628 GE(CLSID_DirectSoundWave
),
630 GE(IID_IDirectMusic
),
631 GE(IID_IDirectMusic2
),
632 GE(IID_IDirectMusic8
),
633 GE(IID_IDirectMusicAudioPath
),
634 GE(IID_IDirectMusicBand
),
635 GE(IID_IDirectMusicBuffer
),
636 GE(IID_IDirectMusicChordMap
),
637 GE(IID_IDirectMusicCollection
),
638 GE(IID_IDirectMusicComposer
),
639 GE(IID_IDirectMusicContainer
),
640 GE(IID_IDirectMusicDownload
),
641 GE(IID_IDirectMusicDownloadedInstrument
),
642 GE(IID_IDirectMusicGetLoader
),
643 GE(IID_IDirectMusicGraph
),
644 GE(IID_IDirectMusicInstrument
),
645 GE(IID_IDirectMusicLoader
),
646 GE(IID_IDirectMusicLoader8
),
647 GE(IID_IDirectMusicObject
),
648 GE(IID_IDirectMusicPatternTrack
),
649 GE(IID_IDirectMusicPerformance
),
650 GE(IID_IDirectMusicPerformance2
),
651 GE(IID_IDirectMusicPerformance8
),
652 GE(IID_IDirectMusicPort
),
653 GE(IID_IDirectMusicPortDownload
),
654 GE(IID_IDirectMusicScript
),
655 GE(IID_IDirectMusicSegment
),
656 GE(IID_IDirectMusicSegment2
),
657 GE(IID_IDirectMusicSegment8
),
658 GE(IID_IDirectMusicSegmentState
),
659 GE(IID_IDirectMusicSegmentState8
),
660 GE(IID_IDirectMusicStyle
),
661 GE(IID_IDirectMusicStyle8
),
662 GE(IID_IDirectMusicSynth
),
663 GE(IID_IDirectMusicSynth8
),
664 GE(IID_IDirectMusicSynthSink
),
665 GE(IID_IDirectMusicThru
),
666 GE(IID_IDirectMusicTool
),
667 GE(IID_IDirectMusicTool8
),
668 GE(IID_IDirectMusicTrack
),
669 GE(IID_IDirectMusicTrack8
),
671 GE(IID_IPersistStream
),
673 GE(IID_IClassFactory
),
675 GE(GUID_DirectMusicAllTypes
),
676 GE(GUID_NOTIFICATION_CHORD
),
677 GE(GUID_NOTIFICATION_COMMAND
),
678 GE(GUID_NOTIFICATION_MEASUREANDBEAT
),
679 GE(GUID_NOTIFICATION_PERFORMANCE
),
680 GE(GUID_NOTIFICATION_RECOMPOSE
),
681 GE(GUID_NOTIFICATION_SEGMENT
),
684 GE(GUID_CommandParam
),
685 GE(GUID_CommandParam2
),
686 GE(GUID_CommandParamNext
),
687 GE(GUID_IDirectMusicBand
),
688 GE(GUID_IDirectMusicChordMap
),
689 GE(GUID_IDirectMusicStyle
),
691 GE(GUID_Play_Marker
),
692 GE(GUID_RhythmParam
),
694 GE(GUID_TimeSignature
),
695 GE(GUID_Valid_Start_Time
),
696 GE(GUID_Clear_All_Bands
),
697 GE(GUID_ConnectToDLSCollection
),
698 GE(GUID_Disable_Auto_Download
),
699 GE(GUID_DisableTempo
),
700 GE(GUID_DisableTimeSig
),
702 GE(GUID_DownloadToAudioPath
),
703 GE(GUID_Enable_Auto_Download
),
704 GE(GUID_EnableTempo
),
705 GE(GUID_EnableTimeSig
),
706 GE(GUID_IgnoreBankSelectForGM
),
707 GE(GUID_SeedVariations
),
708 GE(GUID_StandardMIDIFile
),
710 GE(GUID_UnloadFromAudioPath
),
712 GE(GUID_PerfMasterTempo
),
713 GE(GUID_PerfMasterVolume
),
714 GE(GUID_PerfMasterGrooveLevel
),
715 GE(GUID_PerfAutoDownload
),
716 GE(GUID_DefaultGMCollection
),
717 GE(GUID_Synth_Default
),
718 GE(GUID_Buffer_Reverb
),
719 GE(GUID_Buffer_EnvReverb
),
720 GE(GUID_Buffer_Stereo
),
721 GE(GUID_Buffer_3D_Dry
),
722 GE(GUID_Buffer_Mono
),
723 GE(GUID_DMUS_PROP_GM_Hardware
),
724 GE(GUID_DMUS_PROP_GS_Capable
),
725 GE(GUID_DMUS_PROP_GS_Hardware
),
726 GE(GUID_DMUS_PROP_DLS1
),
727 GE(GUID_DMUS_PROP_DLS2
),
728 GE(GUID_DMUS_PROP_Effects
),
729 GE(GUID_DMUS_PROP_INSTRUMENT2
),
730 GE(GUID_DMUS_PROP_LegacyCaps
),
731 GE(GUID_DMUS_PROP_MemorySize
),
732 GE(GUID_DMUS_PROP_SampleMemorySize
),
733 GE(GUID_DMUS_PROP_SamplePlaybackRate
),
734 GE(GUID_DMUS_PROP_SetSynthSink
),
735 GE(GUID_DMUS_PROP_SinkUsesDSound
),
736 GE(GUID_DMUS_PROP_SynthSink_DSOUND
),
737 GE(GUID_DMUS_PROP_SynthSink_WAVE
),
738 GE(GUID_DMUS_PROP_Volume
),
739 GE(GUID_DMUS_PROP_WavesReverb
),
740 GE(GUID_DMUS_PROP_WriteLatency
),
741 GE(GUID_DMUS_PROP_WritePeriod
),
742 GE(GUID_DMUS_PROP_XG_Capable
),
743 GE(GUID_DMUS_PROP_XG_Hardware
)
748 if (!id
) return "(null)";
750 for (i
= 0; i
< sizeof(guids
)/sizeof(guids
[0]); i
++) {
751 if (IsEqualGUID(id
, &guids
[i
].guid
))
752 return guids
[i
].name
;
754 /* if we didn't find it, act like standard debugstr_guid */
755 return debugstr_guid(id
);
758 /* returns name of given error code */
759 const char *debugstr_dmreturn (DWORD code
) {
760 static const flag_info codes
[] = {
763 FE(DMUS_S_PARTIALLOAD
),
764 FE(DMUS_S_PARTIALDOWNLOAD
),
768 FE(DMUS_S_STRING_TRUNCATED
),
769 FE(DMUS_S_LAST_TOOL
),
770 FE(DMUS_S_OVER_CHORD
),
771 FE(DMUS_S_UP_OCTAVE
),
772 FE(DMUS_S_DOWN_OCTAVE
),
773 FE(DMUS_S_NOBUFFERCONTROL
),
774 FE(DMUS_S_GARBAGE_COLLECTED
),
775 FE(DMUS_E_DRIVER_FAILED
),
776 FE(DMUS_E_PORTS_OPEN
),
777 FE(DMUS_E_DEVICE_IN_USE
),
778 FE(DMUS_E_INSUFFICIENTBUFFER
),
779 FE(DMUS_E_BUFFERNOTSET
),
780 FE(DMUS_E_BUFFERNOTAVAILABLE
),
781 FE(DMUS_E_NOTADLSCOL
),
782 FE(DMUS_E_INVALIDOFFSET
),
783 FE(DMUS_E_ALREADY_LOADED
),
784 FE(DMUS_E_INVALIDPOS
),
785 FE(DMUS_E_INVALIDPATCH
),
786 FE(DMUS_E_CANNOTSEEK
),
787 FE(DMUS_E_CANNOTWRITE
),
788 FE(DMUS_E_CHUNKNOTFOUND
),
789 FE(DMUS_E_INVALID_DOWNLOADID
),
790 FE(DMUS_E_NOT_DOWNLOADED_TO_PORT
),
791 FE(DMUS_E_ALREADY_DOWNLOADED
),
792 FE(DMUS_E_UNKNOWN_PROPERTY
),
793 FE(DMUS_E_SET_UNSUPPORTED
),
794 FE(DMUS_E_GET_UNSUPPORTED
),
796 FE(DMUS_E_BADARTICULATION
),
797 FE(DMUS_E_BADINSTRUMENT
),
798 FE(DMUS_E_BADWAVELINK
),
799 FE(DMUS_E_NOARTICULATION
),
802 FE(DMUS_E_BADOFFSETTABLE
),
803 FE(DMUS_E_UNKNOWNDOWNLOAD
),
804 FE(DMUS_E_NOSYNTHSINK
),
805 FE(DMUS_E_ALREADYOPEN
),
806 FE(DMUS_E_ALREADYCLOSED
),
807 FE(DMUS_E_SYNTHNOTCONFIGURED
),
808 FE(DMUS_E_SYNTHACTIVE
),
809 FE(DMUS_E_CANNOTREAD
),
810 FE(DMUS_E_DMUSIC_RELEASED
),
811 FE(DMUS_E_BUFFER_EMPTY
),
812 FE(DMUS_E_BUFFER_FULL
),
813 FE(DMUS_E_PORT_NOT_CAPTURE
),
814 FE(DMUS_E_PORT_NOT_RENDER
),
815 FE(DMUS_E_DSOUND_NOT_SET
),
816 FE(DMUS_E_ALREADY_ACTIVATED
),
817 FE(DMUS_E_INVALIDBUFFER
),
818 FE(DMUS_E_WAVEFORMATNOTSUPPORTED
),
819 FE(DMUS_E_SYNTHINACTIVE
),
820 FE(DMUS_E_DSOUND_ALREADY_SET
),
821 FE(DMUS_E_INVALID_EVENT
),
822 FE(DMUS_E_UNSUPPORTED_STREAM
),
823 FE(DMUS_E_ALREADY_INITED
),
824 FE(DMUS_E_INVALID_BAND
),
825 FE(DMUS_E_TRACK_HDR_NOT_FIRST_CK
),
826 FE(DMUS_E_TOOL_HDR_NOT_FIRST_CK
),
827 FE(DMUS_E_INVALID_TRACK_HDR
),
828 FE(DMUS_E_INVALID_TOOL_HDR
),
829 FE(DMUS_E_ALL_TOOLS_FAILED
),
830 FE(DMUS_E_ALL_TRACKS_FAILED
),
831 FE(DMUS_E_NOT_FOUND
),
833 FE(DMUS_E_TYPE_DISABLED
),
834 FE(DMUS_E_TYPE_UNSUPPORTED
),
835 FE(DMUS_E_TIME_PAST
),
836 FE(DMUS_E_TRACK_NOT_FOUND
),
837 FE(DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT
),
838 FE(DMUS_E_NO_MASTER_CLOCK
),
839 FE(DMUS_E_LOADER_NOCLASSID
),
840 FE(DMUS_E_LOADER_BADPATH
),
841 FE(DMUS_E_LOADER_FAILEDOPEN
),
842 FE(DMUS_E_LOADER_FORMATNOTSUPPORTED
),
843 FE(DMUS_E_LOADER_FAILEDCREATE
),
844 FE(DMUS_E_LOADER_OBJECTNOTFOUND
),
845 FE(DMUS_E_LOADER_NOFILENAME
),
846 FE(DMUS_E_INVALIDFILE
),
847 FE(DMUS_E_ALREADY_EXISTS
),
848 FE(DMUS_E_OUT_OF_RANGE
),
849 FE(DMUS_E_SEGMENT_INIT_FAILED
),
850 FE(DMUS_E_ALREADY_SENT
),
851 FE(DMUS_E_CANNOT_FREE
),
852 FE(DMUS_E_CANNOT_OPEN_PORT
),
853 FE(DMUS_E_CANNOT_CONVERT
),
854 FE(DMUS_E_DESCEND_CHUNK_FAIL
),
855 FE(DMUS_E_NOT_LOADED
),
856 FE(DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE
),
857 FE(DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE
),
858 FE(DMUS_E_SCRIPT_ERROR_IN_SCRIPT
),
859 FE(DMUS_E_SCRIPT_CANTLOAD_OLEAUT32
),
860 FE(DMUS_E_SCRIPT_LOADSCRIPT_ERROR
),
861 FE(DMUS_E_SCRIPT_INVALID_FILE
),
862 FE(DMUS_E_INVALID_SCRIPTTRACK
),
863 FE(DMUS_E_SCRIPT_VARIABLE_NOT_FOUND
),
864 FE(DMUS_E_SCRIPT_ROUTINE_NOT_FOUND
),
865 FE(DMUS_E_SCRIPT_CONTENT_READONLY
),
866 FE(DMUS_E_SCRIPT_NOT_A_REFERENCE
),
867 FE(DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED
),
868 FE(DMUS_E_INVALID_SEGMENTTRIGGERTRACK
),
869 FE(DMUS_E_INVALID_LYRICSTRACK
),
870 FE(DMUS_E_INVALID_PARAMCONTROLTRACK
),
871 FE(DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR
),
872 FE(DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR
),
873 FE(DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE
),
874 FE(DMUS_E_AUDIOPATHS_NOT_VALID
),
875 FE(DMUS_E_AUDIOPATHS_IN_USE
),
876 FE(DMUS_E_NO_AUDIOPATH_CONFIG
),
877 FE(DMUS_E_AUDIOPATH_INACTIVE
),
878 FE(DMUS_E_AUDIOPATH_NOBUFFER
),
879 FE(DMUS_E_AUDIOPATH_NOPORT
),
880 FE(DMUS_E_NO_AUDIOPATH
),
881 FE(DMUS_E_INVALIDCHUNK
),
882 FE(DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER
),
883 FE(DMUS_E_INVALID_CONTAINER_OBJECT
)
886 for (i
= 0; i
< sizeof(codes
)/sizeof(codes
[0]); i
++) {
887 if (code
== codes
[i
].val
)
888 return codes
[i
].name
;
890 /* if we didn't find it, return value */
891 return wine_dbg_sprintf("0x%08lx", code
);
894 /* generic flag-dumping function */
895 const char* debugstr_flags (DWORD flags
, const flag_info
* names
, size_t num_names
){
896 char buffer
[128] = "", *ptr
= &buffer
[0];
897 unsigned int i
, size
= sizeof(buffer
);
899 for (i
=0; i
< num_names
; i
++)
901 if ((flags
& names
[i
].val
) || /* standard flag*/
902 ((!flags
) && (!names
[i
].val
))) { /* zero value only */
903 int cnt
= snprintf(ptr
, size
, "%s ", names
[i
].name
);
904 if (cnt
< 0 || cnt
>= size
) break;
910 return wine_dbg_sprintf("%s", buffer
);
913 /* dump DMUS_OBJ flags */
914 const char *debugstr_DMUS_OBJ_FLAGS (DWORD flagmask
) {
915 static const flag_info flags
[] = {
919 FE(DMUS_OBJ_CATEGORY
),
920 FE(DMUS_OBJ_FILENAME
),
921 FE(DMUS_OBJ_FULLPATH
),
923 FE(DMUS_OBJ_VERSION
),
929 return debugstr_flags (flagmask
, flags
, sizeof(flags
)/sizeof(flags
[0]));
932 /* dump whole DMUS_OBJECTDESC struct */
933 const char *debugstr_DMUS_OBJECTDESC (LPDMUS_OBJECTDESC pDesc
) {
935 char buffer
[1024] = "", *ptr
= &buffer
[0];
937 ptr
+= sprintf(ptr
, "DMUS_OBJECTDESC (%p):\n", pDesc
);
938 ptr
+= sprintf(ptr
, " - dwSize = %ld\n", pDesc
->dwSize
);
939 ptr
+= sprintf(ptr
, " - dwValidData = %s\n", debugstr_DMUS_OBJ_FLAGS (pDesc
->dwValidData
));
940 if (pDesc
->dwValidData
& DMUS_OBJ_CLASS
) ptr
+= sprintf(ptr
, " - guidClass = %s\n", debugstr_dmguid(&pDesc
->guidClass
));
941 if (pDesc
->dwValidData
& DMUS_OBJ_OBJECT
) ptr
+= sprintf(ptr
, " - guidObject = %s\n", debugstr_guid(&pDesc
->guidObject
));
942 if (pDesc
->dwValidData
& DMUS_OBJ_DATE
) ptr
+= sprintf(ptr
, " - ftDate = FIXME\n");
943 if (pDesc
->dwValidData
& DMUS_OBJ_VERSION
) ptr
+= sprintf(ptr
, " - vVersion = %s\n", debugstr_dmversion(&pDesc
->vVersion
));
944 if (pDesc
->dwValidData
& DMUS_OBJ_NAME
) ptr
+= sprintf(ptr
, " - wszName = %s\n", debugstr_w(pDesc
->wszName
));
945 if (pDesc
->dwValidData
& DMUS_OBJ_CATEGORY
) ptr
+= sprintf(ptr
, " - wszCategory = %s\n", debugstr_w(pDesc
->wszCategory
));
946 if (pDesc
->dwValidData
& DMUS_OBJ_FILENAME
) ptr
+= sprintf(ptr
, " - wszFileName = %s\n", debugstr_w(pDesc
->wszFileName
));
947 if (pDesc
->dwValidData
& DMUS_OBJ_MEMORY
) ptr
+= sprintf(ptr
, " - llMemLength = %lli\n - pbMemData = %p\n", pDesc
->llMemLength
, pDesc
->pbMemData
);
948 if (pDesc
->dwValidData
& DMUS_OBJ_STREAM
) ptr
+= sprintf(ptr
, " - pStream = %p", pDesc
->pStream
);
950 return wine_dbg_sprintf("%s", buffer
);
952 return wine_dbg_sprintf("(NULL)");