/* for ClassFactory */ HRESULT WINAPI DMUSIC_CreateDirectMusicSynthImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) { IDirectMusicSynth8Impl *obj; TRACE("(%p,%p,%p)\n", lpcGUID, ppobj, pUnkOuter); obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicSynth8Impl)); if (NULL == obj) { *ppobj = NULL; return E_OUTOFMEMORY; } obj->IDirectMusicSynth8_iface.lpVtbl = &DirectMusicSynth8_Vtbl; obj->IKsControl_iface.lpVtbl = &DMSynthImpl_IKsControl_Vtbl; obj->ref = 0; /* fill in caps */ obj->pCaps.dwSize = sizeof(DMUS_PORTCAPS); obj->pCaps.dwFlags = DMUS_PC_DLS | DMUS_PC_SOFTWARESYNTH | DMUS_PC_DIRECTSOUND | DMUS_PC_DLS2 | DMUS_PC_AUDIOPATH | DMUS_PC_WAVE; obj->pCaps.guidPort = CLSID_DirectMusicSynth; obj->pCaps.dwClass = DMUS_PC_OUTPUTCLASS; obj->pCaps.dwType = DMUS_PORT_USER_MODE_SYNTH; obj->pCaps.dwMemorySize = DMUS_PC_SYSTEMMEMORY; obj->pCaps.dwMaxChannelGroups = 1000; obj->pCaps.dwMaxVoices = 1000; obj->pCaps.dwMaxAudioChannels = 2; obj->pCaps.dwEffectFlags = DMUS_EFFECT_REVERB; MultiByteToWideChar (CP_ACP, 0, "Microsoft Synthesizer", -1, obj->pCaps.wszDescription, sizeof(obj->pCaps.wszDescription)/sizeof(WCHAR)); return IDirectMusicSynth8Impl_QueryInterface ((LPDIRECTMUSICSYNTH8)obj, lpcGUID, ppobj); }
/* for ClassFactory */ HRESULT WINAPI DMUSIC_CreateDirectMusicSynthImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) { IDirectMusicSynth8Impl *obj; TRACE("(%p,%p,%p)\n", lpcGUID, ppobj, pUnkOuter); obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicSynth8Impl)); if (NULL == obj) { *ppobj = (LPDIRECTMUSICSYNTH8) NULL; return E_OUTOFMEMORY; } obj->lpVtbl = &DirectMusicSynth8_Vtbl; obj->ref = 0; /* fill in caps */ obj->pCaps.dwSize = sizeof(DMUS_PORTCAPS); obj->pCaps.dwFlags = DMUS_PC_DLS | DMUS_PC_SOFTWARESYNTH | DMUS_PC_DIRECTSOUND | DMUS_PC_DLS2 | DMUS_PC_AUDIOPATH | DMUS_PC_WAVE; obj->pCaps.guidPort = CLSID_DirectMusicSynth; obj->pCaps.dwClass = DMUS_PC_OUTPUTCLASS; obj->pCaps.dwType = DMUS_PORT_WINMM_DRIVER; obj->pCaps.dwMemorySize = DMUS_PC_SYSTEMMEMORY; obj->pCaps.dwMaxChannelGroups = 1000; obj->pCaps.dwMaxVoices = 1000; obj->pCaps.dwMaxAudioChannels = -1; obj->pCaps.dwEffectFlags = DMUS_EFFECT_REVERB | DMUS_EFFECT_CHORUS | DMUS_EFFECT_DELAY; MultiByteToWideChar (CP_ACP, 0, "Microsotf Synthesizer", -1, obj->pCaps.wszDescription, sizeof(obj->pCaps.wszDescription)/sizeof(WCHAR)); /* assign latency clock */ /*DMUSIC_CreateReferenceClockImpl (&IID_IReferenceClock, (LPVOID*)&This->pLatencyClock, NULL); */ return IDirectMusicSynth8Impl_QueryInterface ((LPDIRECTMUSICSYNTH8)obj, lpcGUID, ppobj); }
static HRESULT WINAPI DMSynthImpl_IKsControl_QueryInterface(IKsControl* iface, REFIID riid, LPVOID *ppobj) { IDirectMusicSynth8Impl *This = impl_from_IKsControl(iface); return IDirectMusicSynth8Impl_QueryInterface(&This->IDirectMusicSynth8_iface, riid, ppobj); }