ReactOS 0.4.17-dev-804-g023d8af
dmusic_main.c File Reference
#include <stdio.h>
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winnt.h"
#include "wingdi.h"
#include "winuser.h"
#include "winreg.h"
#include "objbase.h"
#include "rpcproxy.h"
#include "initguid.h"
#include "dmusici.h"
#include "dmusic_private.h"
Include dependency graph for dmusic_main.c:

Go to the source code of this file.

Classes

struct  IClassFactoryImpl
 

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (dmusic)
 
static IClassFactoryImplimpl_from_IClassFactory (IClassFactory *iface)
 
static HRESULT WINAPI ClassFactory_QueryInterface (IClassFactory *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI ClassFactory_AddRef (IClassFactory *iface)
 
static ULONG WINAPI ClassFactory_Release (IClassFactory *iface)
 
static HRESULT WINAPI ClassFactory_CreateInstance (IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppv)
 
static HRESULT WINAPI ClassFactory_LockServer (IClassFactory *iface, BOOL dolock)
 
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 
HRESULT WINAPI DllCanUnloadNow (void)
 
HRESULT WINAPI DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 
HRESULT WINAPI DllRegisterServer (void)
 
HRESULT WINAPI DllUnregisterServer (void)
 
DWORD MIDILOCALE2Patch (const MIDILOCALE *pLocale)
 
void Patch2MIDILOCALE (DWORD dwPatch, LPMIDILOCALE pLocale)
 
int even_or_odd (DWORD number)
 
static const chardebugstr_dmversion (const DMUS_VERSION *version)
 
const chardebugstr_dmguid (const GUID *id)
 
static const chardebugstr_flags (DWORD flags, const flag_info *names, size_t num_names)
 
static const chardebugstr_DMUS_OBJ_FLAGS (DWORD flagmask)
 
void dump_DMUS_OBJECTDESC (LPDMUS_OBJECTDESC desc)
 
static const chardebugstr_DMUS_PORTPARAMS_FLAGS (DWORD flagmask)
 
void dump_DMUS_PORTPARAMS (LPDMUS_PORTPARAMS params)
 

Variables

static HINSTANCE instance
 
LONG DMUSIC_refCount = 0
 
static const IClassFactoryVtbl classfactory_vtbl
 
static IClassFactoryImpl DirectMusic_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicImpl}
 
static IClassFactoryImpl Collection_CF
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 24 of file dmusic_main.c.

Function Documentation

◆ ClassFactory_AddRef()

static ULONG WINAPI ClassFactory_AddRef ( IClassFactory iface)
static

Definition at line 77 of file dmusic_main.c.

78{
80
81 return 2; /* non-heap based object */
82}
static void DMUSIC_LockModule(void)

◆ ClassFactory_CreateInstance()

static HRESULT WINAPI ClassFactory_CreateInstance ( IClassFactory iface,
IUnknown pUnkOuter,
REFIID  riid,
void **  ppv 
)
static

Definition at line 91 of file dmusic_main.c.

93{
95
96 TRACE ("(%p, %s, %p)\n", pUnkOuter, debugstr_dmguid(riid), ppv);
97
98 return This->fnCreateInstance(riid, ppv, pUnkOuter);
99}
const char * debugstr_dmguid(const GUID *id)
Definition: dmusic_main.c:229
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
Definition: dmusic_main.c:52
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define TRACE(s)
Definition: solgame.cpp:4

◆ ClassFactory_LockServer()

static HRESULT WINAPI ClassFactory_LockServer ( IClassFactory iface,
BOOL  dolock 
)
static

Definition at line 101 of file dmusic_main.c.

102{
103 TRACE("(%d)\n", dolock);
104
105 if (dolock)
107 else
109
110 return S_OK;
111}
static void DMUSIC_UnlockModule(void)
#define S_OK
Definition: intsafe.h:52

◆ ClassFactory_QueryInterface()

static HRESULT WINAPI ClassFactory_QueryInterface ( IClassFactory iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 57 of file dmusic_main.c.

58{
59 if (ppv == NULL)
60 return E_POINTER;
61
63 TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv);
65 TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv);
66 else {
67 FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
68 *ppv = NULL;
69 return E_NOINTERFACE;
70 }
71
72 *ppv = iface;
73 IUnknown_AddRef((IUnknown*)*ppv);
74 return S_OK;
75}
#define FIXME(fmt,...)
Definition: precomp.h:53
const GUID IID_IUnknown
const GUID IID_IClassFactory
#define NULL
Definition: types.h:112
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:3479
#define E_POINTER
Definition: winerror.h:3480

◆ ClassFactory_Release()

static ULONG WINAPI ClassFactory_Release ( IClassFactory iface)
static

Definition at line 84 of file dmusic_main.c.

85{
87
88 return 1; /* non-heap based object */
89}

◆ debugstr_dmguid()

const char * debugstr_dmguid ( const GUID id)

Definition at line 229 of file dmusic_main.c.

229 {
230 static const guid_info guids[] = {
231 /* CLSIDs */
232 GE(CLSID_AudioVBScript),
233 GE(CLSID_DirectMusic),
234 GE(CLSID_DirectMusicAudioPathConfig),
235 GE(CLSID_DirectMusicAuditionTrack),
236 GE(CLSID_DirectMusicBand),
237 GE(CLSID_DirectMusicBandTrack),
238 GE(CLSID_DirectMusicChordMapTrack),
239 GE(CLSID_DirectMusicChordMap),
240 GE(CLSID_DirectMusicChordTrack),
241 GE(CLSID_DirectMusicCollection),
242 GE(CLSID_DirectMusicCommandTrack),
243 GE(CLSID_DirectMusicComposer),
244 GE(CLSID_DirectMusicContainer),
245 GE(CLSID_DirectMusicGraph),
246 GE(CLSID_DirectMusicLoader),
247 GE(CLSID_DirectMusicLyricsTrack),
248 GE(CLSID_DirectMusicMarkerTrack),
249 GE(CLSID_DirectMusicMelodyFormulationTrack),
250 GE(CLSID_DirectMusicMotifTrack),
251 GE(CLSID_DirectMusicMuteTrack),
252 GE(CLSID_DirectMusicParamControlTrack),
253 GE(CLSID_DirectMusicPatternTrack),
254 GE(CLSID_DirectMusicPerformance),
255 GE(CLSID_DirectMusicScript),
256 GE(CLSID_DirectMusicScriptAutoImpSegment),
257 GE(CLSID_DirectMusicScriptAutoImpPerformance),
258 GE(CLSID_DirectMusicScriptAutoImpSegmentState),
259 GE(CLSID_DirectMusicScriptAutoImpAudioPathConfig),
260 GE(CLSID_DirectMusicScriptAutoImpAudioPath),
261 GE(CLSID_DirectMusicScriptAutoImpSong),
262 GE(CLSID_DirectMusicScriptSourceCodeLoader),
263 GE(CLSID_DirectMusicScriptTrack),
264 GE(CLSID_DirectMusicSection),
265 GE(CLSID_DirectMusicSegment),
266 GE(CLSID_DirectMusicSegmentState),
267 GE(CLSID_DirectMusicSegmentTriggerTrack),
268 GE(CLSID_DirectMusicSegTriggerTrack),
269 GE(CLSID_DirectMusicSeqTrack),
270 GE(CLSID_DirectMusicSignPostTrack),
271 GE(CLSID_DirectMusicSong),
272 GE(CLSID_DirectMusicStyle),
273 GE(CLSID_DirectMusicStyleTrack),
274 GE(CLSID_DirectMusicSynth),
275 GE(CLSID_DirectMusicSynthSink),
276 GE(CLSID_DirectMusicSysExTrack),
277 GE(CLSID_DirectMusicTemplate),
278 GE(CLSID_DirectMusicTempoTrack),
279 GE(CLSID_DirectMusicTimeSigTrack),
280 GE(CLSID_DirectMusicWaveTrack),
281 GE(CLSID_DirectSoundWave),
282 /* IIDs */
283 GE(IID_IDirectMusic),
284 GE(IID_IDirectMusic2),
285 GE(IID_IDirectMusic8),
286 GE(IID_IDirectMusicAudioPath),
287 GE(IID_IDirectMusicBand),
288 GE(IID_IDirectMusicBuffer),
289 GE(IID_IDirectMusicChordMap),
290 GE(IID_IDirectMusicCollection),
291 GE(IID_IDirectMusicComposer),
292 GE(IID_IDirectMusicContainer),
293 GE(IID_IDirectMusicDownload),
294 GE(IID_IDirectMusicDownloadedInstrument),
295 GE(IID_IDirectMusicGetLoader),
296 GE(IID_IDirectMusicGraph),
297 GE(IID_IDirectMusicInstrument),
298 GE(IID_IDirectMusicLoader),
299 GE(IID_IDirectMusicLoader8),
300 GE(IID_IDirectMusicObject),
301 GE(IID_IDirectMusicPatternTrack),
302 GE(IID_IDirectMusicPerformance),
303 GE(IID_IDirectMusicPerformance2),
304 GE(IID_IDirectMusicPerformance8),
305 GE(IID_IDirectMusicPort),
306 GE(IID_IDirectMusicPortDownload),
307 GE(IID_IDirectMusicScript),
308 GE(IID_IDirectMusicSegment),
309 GE(IID_IDirectMusicSegment2),
310 GE(IID_IDirectMusicSegment8),
311 GE(IID_IDirectMusicSegmentState),
312 GE(IID_IDirectMusicSegmentState8),
313 GE(IID_IDirectMusicStyle),
314 GE(IID_IDirectMusicStyle8),
315 GE(IID_IDirectMusicSynth),
316 GE(IID_IDirectMusicSynth8),
317 GE(IID_IDirectMusicSynthSink),
318 GE(IID_IDirectMusicThru),
319 GE(IID_IDirectMusicTool),
320 GE(IID_IDirectMusicTool8),
321 GE(IID_IDirectMusicTrack),
322 GE(IID_IDirectMusicTrack8),
325 GE(IID_IStream),
327 /* GUIDs */
328 GE(GUID_DirectMusicAllTypes),
329 GE(GUID_NOTIFICATION_CHORD),
330 GE(GUID_NOTIFICATION_COMMAND),
331 GE(GUID_NOTIFICATION_MEASUREANDBEAT),
332 GE(GUID_NOTIFICATION_PERFORMANCE),
333 GE(GUID_NOTIFICATION_RECOMPOSE),
334 GE(GUID_NOTIFICATION_SEGMENT),
335 GE(GUID_BandParam),
336 GE(GUID_ChordParam),
337 GE(GUID_CommandParam),
338 GE(GUID_CommandParam2),
339 GE(GUID_CommandParamNext),
340 GE(GUID_IDirectMusicBand),
341 GE(GUID_IDirectMusicChordMap),
342 GE(GUID_IDirectMusicStyle),
343 GE(GUID_MuteParam),
344 GE(GUID_Play_Marker),
345 GE(GUID_RhythmParam),
346 GE(GUID_TempoParam),
347 GE(GUID_TimeSignature),
348 GE(GUID_Valid_Start_Time),
349 GE(GUID_Clear_All_Bands),
350 GE(GUID_ConnectToDLSCollection),
351 GE(GUID_Disable_Auto_Download),
352 GE(GUID_DisableTempo),
353 GE(GUID_DisableTimeSig),
354 GE(GUID_Download),
355 GE(GUID_DownloadToAudioPath),
356 GE(GUID_Enable_Auto_Download),
357 GE(GUID_EnableTempo),
358 GE(GUID_EnableTimeSig),
360 GE(GUID_SeedVariations),
361 GE(GUID_StandardMIDIFile),
362 GE(GUID_Unload),
363 GE(GUID_UnloadFromAudioPath),
364 GE(GUID_Variations),
365 GE(GUID_PerfMasterTempo),
366 GE(GUID_PerfMasterVolume),
367 GE(GUID_PerfMasterGrooveLevel),
368 GE(GUID_PerfAutoDownload),
369 GE(GUID_DefaultGMCollection),
370 GE(GUID_Synth_Default),
371 GE(GUID_Buffer_Reverb),
372 GE(GUID_Buffer_EnvReverb),
373 GE(GUID_Buffer_Stereo),
374 GE(GUID_Buffer_3D_Dry),
375 GE(GUID_Buffer_Mono),
376 GE(GUID_DMUS_PROP_GM_Hardware),
377 GE(GUID_DMUS_PROP_GS_Capable),
378 GE(GUID_DMUS_PROP_GS_Hardware),
379 GE(GUID_DMUS_PROP_DLS1),
380 GE(GUID_DMUS_PROP_DLS2),
381 GE(GUID_DMUS_PROP_Effects),
382 GE(GUID_DMUS_PROP_INSTRUMENT2),
383 GE(GUID_DMUS_PROP_LegacyCaps),
384 GE(GUID_DMUS_PROP_MemorySize),
385 GE(GUID_DMUS_PROP_SampleMemorySize),
386 GE(GUID_DMUS_PROP_SamplePlaybackRate),
387 GE(GUID_DMUS_PROP_SetSynthSink),
388 GE(GUID_DMUS_PROP_SinkUsesDSound),
389 GE(GUID_DMUS_PROP_SynthSink_DSOUND),
390 GE(GUID_DMUS_PROP_SynthSink_WAVE),
391 GE(GUID_DMUS_PROP_Volume),
392 GE(GUID_DMUS_PROP_WavesReverb),
393 GE(GUID_DMUS_PROP_WriteLatency),
394 GE(GUID_DMUS_PROP_WritePeriod),
395 GE(GUID_DMUS_PROP_XG_Capable),
396 GE(GUID_DMUS_PROP_XG_Hardware)
397 };
398
399 unsigned int i;
400
401 if (!id) return "(null)";
402
403 for (i = 0; i < ARRAY_SIZE(guids); i++) {
404 if (IsEqualGUID(id, guids[i].guid))
405 return guids[i].name;
406 }
407 /* if we didn't find it, act like standard debugstr_guid */
408 return debugstr_guid(id);
409}
#define ARRAY_SIZE(A)
Definition: main.h:20
const struct sortguid * guids
Definition: locale.c:422
GUID guid
Definition: version.c:147
#define GE(x)
#define GUID_IgnoreBankSelectForGM
Definition: dmusici.h:181
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
const GUID IID_IPersistStream
Definition: proxy.cpp:13
Definition: name.c:39

Referenced by ClassFactory_CreateInstance(), DllGetClassObject(), dump_DMUS_OBJECTDESC(), IDirectMusic8Impl_CreatePort(), IDirectMusic8Impl_QueryInterface(), IDirectMusic8Impl_SetMasterClock(), IDirectMusicBufferImpl_QueryInterface(), IDirectMusicCollectionImpl_QueryInterface(), IDirectMusicDownloadedInstrumentImpl_QueryInterface(), IDirectMusicDownloadImpl_QueryInterface(), IDirectMusicInstrumentImpl_QueryInterface(), IPersistStreamImpl_Load(), IReferenceClockImpl_QueryInterface(), master_IReferenceClock_QueryInterface(), midi_IDirectMusicPort_QueryInterface(), SynthPortImpl_IDirectMusicPort_QueryInterface(), SynthPortImpl_IDirectMusicPortDownload_QueryInterface(), and SynthPortImpl_IDirectMusicThru_QueryInterface().

◆ debugstr_DMUS_OBJ_FLAGS()

static const char * debugstr_DMUS_OBJ_FLAGS ( DWORD  flagmask)
static

Definition at line 432 of file dmusic_main.c.

432 {
433 static const flag_info flags[] = {
446 };
447 return debugstr_flags(flagmask, flags, ARRAY_SIZE(flags));
448}
#define FE(x)
static const char * debugstr_flags(DWORD flags, const flag_info *names, size_t num_names)
Definition: dmusic_main.c:412
#define DMUS_OBJ_DATE
Definition: dmusici.h:273
#define DMUS_OBJ_FULLPATH
Definition: dmusici.h:270
#define DMUS_OBJ_MEMORY
Definition: dmusici.h:275
#define DMUS_OBJ_NAME
Definition: dmusici.h:267
#define DMUS_OBJ_STREAM
Definition: dmusici.h:276
#define DMUS_OBJ_FILENAME
Definition: dmusici.h:269
#define DMUS_OBJ_CLASS
Definition: dmusici.h:266
#define DMUS_OBJ_URL
Definition: dmusici.h:271
#define DMUS_OBJ_VERSION
Definition: dmusici.h:272
#define DMUS_OBJ_CATEGORY
Definition: dmusici.h:268
#define DMUS_OBJ_OBJECT
Definition: dmusici.h:265
#define DMUS_OBJ_LOADED
Definition: dmusici.h:274
GLbitfield flags
Definition: glext.h:7161

Referenced by dump_DMUS_OBJECTDESC().

◆ debugstr_DMUS_PORTPARAMS_FLAGS()

static const char * debugstr_DMUS_PORTPARAMS_FLAGS ( DWORD  flagmask)
static

Definition at line 469 of file dmusic_main.c.

470{
471 static const flag_info flags[] = {
478 };
479 return debugstr_flags(flagmask, flags, ARRAY_SIZE(flags));
480}
#define DMUS_PORTPARAMS_CHANNELGROUPS
Definition: dmusicc.h:205
#define DMUS_PORTPARAMS_SAMPLERATE
Definition: dmusicc.h:207
#define DMUS_PORTPARAMS_AUDIOCHANNELS
Definition: dmusicc.h:206
#define DMUS_PORTPARAMS_SHARE
Definition: dmusicc.h:209
#define DMUS_PORTPARAMS_VOICES
Definition: dmusicc.h:204
#define DMUS_PORTPARAMS_EFFECTS
Definition: dmusicc.h:208

Referenced by dump_DMUS_PORTPARAMS().

◆ debugstr_dmversion()

static const char * debugstr_dmversion ( const DMUS_VERSION version)
static

Definition at line 219 of file dmusic_main.c.

220{
221 if (!version)
222 return "'null'";
223 return wine_dbg_sprintf("'%hu,%hu,%hu,%hu'",
224 HIWORD(version->dwVersionMS), LOWORD(version->dwVersionMS),
225 HIWORD(version->dwVersionLS), LOWORD(version->dwVersionLS));
226}
const char * wine_dbg_sprintf(const char *format,...)
Definition: compat.c:296
static const WCHAR version[]
Definition: asmname.c:66
#define LOWORD(l)
Definition: pedump.c:82
#define HIWORD(l)
Definition: typedefs.h:247

Referenced by dump_DMUS_OBJECTDESC().

◆ debugstr_flags()

static const char * debugstr_flags ( DWORD  flags,
const flag_info names,
size_t  num_names 
)
static

Definition at line 412 of file dmusic_main.c.

412 {
413 char buffer[128] = "", *ptr = &buffer[0];
414 unsigned int i;
415 int size = sizeof(buffer);
416
417 for (i=0; i < num_names; i++)
418 {
419 if ((flags & names[i].val) || /* standard flag*/
420 ((!flags) && (!names[i].val))) { /* zero value only */
421 int cnt = snprintf(ptr, size, "%s ", names[i].name);
422 if (cnt < 0 || cnt >= size) break;
423 size -= cnt;
424 ptr += cnt;
425 }
426 }
427
428 return wine_dbg_sprintf("%s", buffer);
429}
GLuint GLuint * names
Definition: glext.h:11545
GLuint buffer
Definition: glext.h:5915
GLsizeiptr size
Definition: glext.h:5919
GLuint GLfloat * val
Definition: glext.h:7180
static PVOID ptr
Definition: dispmode.c:27
_In_ size_t cnt
Definition: wcstombs.cpp:43
#define snprintf
Definition: wintirpc.h:48

Referenced by debugstr_DMUS_OBJ_FLAGS(), and debugstr_DMUS_PORTPARAMS_FLAGS().

◆ DllCanUnloadNow()

HRESULT WINAPI DllCanUnloadNow ( void  )

Definition at line 145 of file dmusic_main.c.

146{
147 return DMUSIC_refCount != 0 ? S_FALSE : S_OK;
148}
LONG DMUSIC_refCount
Definition: dmusic_main.c:42
#define S_FALSE
Definition: winerror.h:3451

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  rclsid,
REFIID  riid,
LPVOID ppv 
)

Definition at line 156 of file dmusic_main.c.

157{
158 TRACE("(%s, %s, %p)\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
159 if (IsEqualCLSID (rclsid, &CLSID_DirectMusic) && IsEqualIID (riid, &IID_IClassFactory)) {
161 IClassFactory_AddRef((IClassFactory*)*ppv);
162 return S_OK;
163 } else if (IsEqualCLSID (rclsid, &CLSID_DirectMusicCollection) && IsEqualIID (riid, &IID_IClassFactory)) {
164 *ppv = &Collection_CF;
165 IClassFactory_AddRef((IClassFactory*)*ppv);
166 return S_OK;
167 }
168
169 WARN("(%s, %s, %p): no interface found.\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
171}
#define WARN(fmt,...)
Definition: precomp.h:61
static IClassFactoryImpl Collection_CF
Definition: dmusic_main.c:122
static IClassFactoryImpl DirectMusic_CF
Definition: dmusic_main.c:121
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hinstDLL,
DWORD  fdwReason,
LPVOID  lpvReserved 
)

Definition at line 130 of file dmusic_main.c.

130 {
132 instance = hinstDLL;
134 }
135
136 return TRUE;
137}
static DWORD const fdwReason
#define TRUE
Definition: types.h:120
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
static HINSTANCE instance
Definition: dmusic_main.c:41

◆ DllRegisterServer()

HRESULT WINAPI DllRegisterServer ( void  )

Definition at line 176 of file dmusic_main.c.

177{
179}
HRESULT __wine_register_resources(HMODULE module)
Definition: register.c:112

◆ DllUnregisterServer()

HRESULT WINAPI DllUnregisterServer ( void  )

Definition at line 184 of file dmusic_main.c.

185{
187}
HRESULT __wine_unregister_resources(HMODULE module)
Definition: register.c:124

◆ dump_DMUS_OBJECTDESC()

void dump_DMUS_OBJECTDESC ( LPDMUS_OBJECTDESC  desc)

Definition at line 451 of file dmusic_main.c.

452{
453 TRACE("DMUS_OBJECTDESC (%p):\n", desc);
454 TRACE(" - dwSize = %d\n", desc->dwSize);
455 TRACE(" - dwValidData = %s\n", debugstr_DMUS_OBJ_FLAGS (desc->dwValidData));
456 if (desc->dwValidData & DMUS_OBJ_CLASS) TRACE(" - guidClass = %s\n", debugstr_dmguid(&desc->guidClass));
457 if (desc->dwValidData & DMUS_OBJ_OBJECT) TRACE(" - guidObject = %s\n", debugstr_guid(&desc->guidObject));
458 if (desc->dwValidData & DMUS_OBJ_DATE) TRACE(" - ftDate = FIXME\n");
459 if (desc->dwValidData & DMUS_OBJ_VERSION) TRACE(" - vVersion = %s\n", debugstr_dmversion(&desc->vVersion));
460 if (desc->dwValidData & DMUS_OBJ_NAME) TRACE(" - wszName = %s\n", debugstr_w(desc->wszName));
461 if (desc->dwValidData & DMUS_OBJ_CATEGORY) TRACE(" - wszCategory = %s\n", debugstr_w(desc->wszCategory));
462 if (desc->dwValidData & DMUS_OBJ_FILENAME) TRACE(" - wszFileName = %s\n", debugstr_w(desc->wszFileName));
463 if (desc->dwValidData & DMUS_OBJ_MEMORY) TRACE(" - llMemLength = 0x%s\n - pbMemData = %p\n",
464 wine_dbgstr_longlong(desc->llMemLength), desc->pbMemData);
465 if (desc->dwValidData & DMUS_OBJ_STREAM) TRACE(" - pStream = %p\n", desc->pStream);
466}
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
static const char * debugstr_DMUS_OBJ_FLAGS(DWORD flagmask)
Definition: dmusic_main.c:432
static const char * debugstr_dmversion(const DMUS_VERSION *version)
Definition: dmusic_main.c:219
#define debugstr_w
Definition: kernel32.h:32
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1204

Referenced by col_IDirectMusicObject_ParseDescriptor(), and IPersistStreamImpl_Load().

◆ dump_DMUS_PORTPARAMS()

void dump_DMUS_PORTPARAMS ( LPDMUS_PORTPARAMS  params)

Definition at line 483 of file dmusic_main.c.

484{
485 TRACE("DMUS_PORTPARAMS (%p):\n", params);
486 TRACE(" - dwSize = %d\n", params->dwSize);
487 TRACE(" - dwValidParams = %s\n", debugstr_DMUS_PORTPARAMS_FLAGS(params->dwValidParams));
488 if (params->dwValidParams & DMUS_PORTPARAMS_VOICES) TRACE(" - dwVoices = %u\n", params->dwVoices);
489 if (params->dwValidParams & DMUS_PORTPARAMS_CHANNELGROUPS) TRACE(" - dwChannelGroup = %u\n", params->dwChannelGroups);
490 if (params->dwValidParams & DMUS_PORTPARAMS_AUDIOCHANNELS) TRACE(" - dwAudioChannels = %u\n", params->dwAudioChannels);
491 if (params->dwValidParams & DMUS_PORTPARAMS_SAMPLERATE) TRACE(" - dwSampleRate = %u\n", params->dwSampleRate);
492 if (params->dwValidParams & DMUS_PORTPARAMS_EFFECTS) TRACE(" - dwEffectFlags = %x\n", params->dwEffectFlags);
493 if (params->dwValidParams & DMUS_PORTPARAMS_SHARE) TRACE(" - fShare = %u\n", params->fShare);
494}
static const char * debugstr_DMUS_PORTPARAMS_FLAGS(DWORD flagmask)
Definition: dmusic_main.c:469
GLenum const GLfloat * params
Definition: glext.h:5645

Referenced by IDirectMusic8Impl_CreatePort().

◆ even_or_odd()

int even_or_odd ( DWORD  number)

Definition at line 214 of file dmusic_main.c.

214 {
215 return (number & 0x1); /* basically, check if bit 0 is set ;) */
216}
static unsigned int number
Definition: dsound.c:1479

Referenced by IPersistStreamImpl_Load().

◆ impl_from_IClassFactory()

static IClassFactoryImpl * impl_from_IClassFactory ( IClassFactory iface)
inlinestatic

Definition at line 52 of file dmusic_main.c.

53{
54 return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
55}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by ClassFactory_CreateInstance().

◆ MIDILOCALE2Patch()

DWORD MIDILOCALE2Patch ( const MIDILOCALE pLocale)

Definition at line 195 of file dmusic_main.c.

195 {
196 DWORD dwPatch = 0;
197 if (!pLocale) return 0;
198 dwPatch |= (pLocale->ulBank & F_INSTRUMENT_DRUMS); /* set drum bit */
199 dwPatch |= ((pLocale->ulBank & 0x00007F7F) << 8); /* set MIDI bank location */
200 dwPatch |= (pLocale->ulInstrument & 0x0000007F); /* set PC value */
201 return dwPatch;
202}
#define F_INSTRUMENT_DRUMS
Definition: dls1.h:51
unsigned long DWORD
Definition: ntddk_ex.h:95
ULONG ulInstrument
Definition: dls1.h:97
ULONG ulBank
Definition: dls1.h:96

Referenced by IDirectMusicInstrumentImpl_GetPatch(), IPersistStreamImpl_Load(), and SynthPortImpl_IDirectMusicPort_DownloadInstrument().

◆ Patch2MIDILOCALE()

void Patch2MIDILOCALE ( DWORD  dwPatch,
LPMIDILOCALE  pLocale 
)

Definition at line 205 of file dmusic_main.c.

205 {
206 memset (pLocale, 0, sizeof(MIDILOCALE));
207
208 pLocale->ulInstrument = (dwPatch & 0x7F); /* get PC value */
209 pLocale->ulBank = ((dwPatch & 0x007F7F00) >> 8); /* get MIDI bank location */
210 pLocale->ulBank |= (dwPatch & F_INSTRUMENT_DRUMS); /* get drum bit */
211}
#define memset(x, y, z)
Definition: compat.h:39

Referenced by IDirectMusicInstrumentImpl_SetPatch().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( dmusic  )

Variable Documentation

◆ classfactory_vtbl

const IClassFactoryVtbl classfactory_vtbl
static
Initial value:
= {
}
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock)
Definition: dmusic_main.c:101
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppv)
Definition: dmusic_main.c:91
static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
Definition: dmusic_main.c:84
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
Definition: dmusic_main.c:57
static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
Definition: dmusic_main.c:77

Definition at line 113 of file dmusic_main.c.

◆ Collection_CF

IClassFactoryImpl Collection_CF
static
Initial value:
HRESULT WINAPI DMUSIC_CreateDirectMusicCollectionImpl(LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter)
Definition: collection.c:530
static const IClassFactoryVtbl classfactory_vtbl
Definition: dmusic_main.c:113

Definition at line 122 of file dmusic_main.c.

Referenced by DllGetClassObject().

◆ DirectMusic_CF

Definition at line 121 of file dmusic_main.c.

Referenced by DllGetClassObject().

◆ DMUSIC_refCount

LONG DMUSIC_refCount = 0

Definition at line 42 of file dmusic_main.c.

Referenced by DllCanUnloadNow(), DMUSIC_LockModule(), and DMUSIC_UnlockModule().

◆ instance

HINSTANCE instance
static

Definition at line 41 of file dmusic_main.c.

Referenced by DllMain(), DllRegisterServer(), and DllUnregisterServer().