dmime: Merge the IClassFactory implementations.

This commit is contained in:
Michael Stefaniuc 2011-07-28 10:21:26 +02:00 committed by Alexandre Julliard
parent 0c4ec942ba
commit 29575d2f4c

View File

@ -27,708 +27,105 @@ static HINSTANCE instance;
LONG DMIME_refCount = 0;
typedef struct {
const IClassFactoryVtbl *lpVtbl;
IClassFactory IClassFactory_iface;
HRESULT WINAPI (*fnCreateInstance)(REFIID riid, void **ppv, IUnknown *pUnkOuter);
} IClassFactoryImpl;
/******************************************************************
* DirectMusicPerformance ClassFactory
* IClassFactory implementation
*/
static HRESULT WINAPI PerformanceCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
static inline IClassFactoryImpl *impl_from_IClassFactory(IClassFactory *iface)
{
return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
}
static ULONG WINAPI PerformanceCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
{
if (ppv == NULL)
return E_POINTER;
return 2; /* non-heap based object */
if (IsEqualGUID(&IID_IUnknown, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv);
else if (IsEqualGUID(&IID_IClassFactory, riid))
TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv);
else {
FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
*ppv = NULL;
return E_NOINTERFACE;
}
*ppv = iface;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI PerformanceCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
{
DMIME_LockModule();
return 1; /* non-heap based object */
return 2; /* non-heap based object */
}
static HRESULT WINAPI PerformanceCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicPerformanceImpl (riid, ppobj, pOuter);
static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
{
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI PerformanceCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter,
REFIID riid, void **ppv)
{
IClassFactoryImpl *This = impl_from_IClassFactory(iface);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
TRACE ("(%p, %s, %p)\n", pUnkOuter, debugstr_dmguid(riid), ppv);
return This->fnCreateInstance(riid, ppv, pUnkOuter);
}
static const IClassFactoryVtbl PerformanceCF_Vtbl = {
PerformanceCF_QueryInterface,
PerformanceCF_AddRef,
PerformanceCF_Release,
PerformanceCF_CreateInstance,
PerformanceCF_LockServer
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL dolock)
{
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl classfactory_vtbl = {
ClassFactory_QueryInterface,
ClassFactory_AddRef,
ClassFactory_Release,
ClassFactory_CreateInstance,
ClassFactory_LockServer
};
static IClassFactoryImpl Performance_CF = {&PerformanceCF_Vtbl};
/******************************************************************
* DirectMusicSegment ClassFactory
*/
static HRESULT WINAPI SegmentCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI SegmentCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI SegmentCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI SegmentCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicSegmentImpl (riid, ppobj, pOuter);
}
static HRESULT WINAPI SegmentCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl SegmentCF_Vtbl = {
SegmentCF_QueryInterface,
SegmentCF_AddRef,
SegmentCF_Release,
SegmentCF_CreateInstance,
SegmentCF_LockServer
};
static IClassFactoryImpl Segment_CF = {&SegmentCF_Vtbl};
/******************************************************************
* DirectMusicSegmentState ClassFactory
*/
static HRESULT WINAPI SegmentStateCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI SegmentStateCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based objects */
}
static ULONG WINAPI SegmentStateCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI SegmentStateCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicSegmentStateImpl (riid, ppobj, pOuter);
}
static HRESULT WINAPI SegmentStateCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl SegmentStateCF_Vtbl = {
SegmentStateCF_QueryInterface,
SegmentStateCF_AddRef,
SegmentStateCF_Release,
SegmentStateCF_CreateInstance,
SegmentStateCF_LockServer
};
static IClassFactoryImpl SegmentState_CF = {&SegmentStateCF_Vtbl};
/******************************************************************
* DirectMusicGraph ClassFactory
*/
static HRESULT WINAPI GraphCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI GraphCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI GraphCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI GraphCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicGraphImpl (riid, ppobj, pOuter);
}
static HRESULT WINAPI GraphCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl GraphCF_Vtbl = {
GraphCF_QueryInterface,
GraphCF_AddRef,
GraphCF_Release,
GraphCF_CreateInstance,
GraphCF_LockServer
};
static IClassFactoryImpl Graph_CF = {&GraphCF_Vtbl};
/******************************************************************
* DirectMusicTempoTrack ClassFactory
*/
static HRESULT WINAPI TempoTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI TempoTrackCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI TempoTrackCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI TempoTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicTempoTrack (riid, ppobj, pOuter);
}
static HRESULT WINAPI TempoTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl TempoTrackCF_Vtbl = {
TempoTrackCF_QueryInterface,
TempoTrackCF_AddRef,
TempoTrackCF_Release,
TempoTrackCF_CreateInstance,
TempoTrackCF_LockServer
};
static IClassFactoryImpl TempoTrack_CF = {&TempoTrackCF_Vtbl};
/******************************************************************
* DirectMusicSeqTrack ClassFactory
*/
static HRESULT WINAPI SeqTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI SeqTrackCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI SeqTrackCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI SeqTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicSeqTrack (riid, ppobj, pOuter);
}
static HRESULT WINAPI SeqTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl SeqTrackCF_Vtbl = {
SeqTrackCF_QueryInterface,
SeqTrackCF_AddRef,
SeqTrackCF_Release,
SeqTrackCF_CreateInstance,
SeqTrackCF_LockServer
};
static IClassFactoryImpl SeqTrack_CF = {&SeqTrackCF_Vtbl};
/******************************************************************
* DirectMusicSysExTrack ClassFactory
*/
static HRESULT WINAPI SysExTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI SysExTrackCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI SysExTrackCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI SysExTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicSysExTrack (riid, ppobj, pOuter);
}
static HRESULT WINAPI SysExTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl SysExTrackCF_Vtbl = {
SysExTrackCF_QueryInterface,
SysExTrackCF_AddRef,
SysExTrackCF_Release,
SysExTrackCF_CreateInstance,
SysExTrackCF_LockServer
};
static IClassFactoryImpl SysExTrack_CF = {&SysExTrackCF_Vtbl};
/******************************************************************
* DirectMusicTimeSigTrack ClassFactory
*/
static HRESULT WINAPI TimeSigTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI TimeSigTrackCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI TimeSigTrackCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI TimeSigTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicTimeSigTrack (riid, ppobj, pOuter);
}
static HRESULT WINAPI TimeSigTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl TimeSigTrackCF_Vtbl = {
TimeSigTrackCF_QueryInterface,
TimeSigTrackCF_AddRef,
TimeSigTrackCF_Release,
TimeSigTrackCF_CreateInstance,
TimeSigTrackCF_LockServer
};
static IClassFactoryImpl TimeSigTrack_CF = {&TimeSigTrackCF_Vtbl};
/******************************************************************
* DirectMusicParamControlTrack ClassFactory
*/
static HRESULT WINAPI ParamControlTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI ParamControlTrackCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI ParamControlTrackCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI ParamControlTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicParamControlTrack (riid, ppobj, pOuter);
}
static HRESULT WINAPI ParamControlTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl ParamControlTrackCF_Vtbl = {
ParamControlTrackCF_QueryInterface,
ParamControlTrackCF_AddRef,
ParamControlTrackCF_Release,
ParamControlTrackCF_CreateInstance,
ParamControlTrackCF_LockServer
};
static IClassFactoryImpl ParamControlTrack_CF = {&ParamControlTrackCF_Vtbl};
/******************************************************************
* DirectMusicMarkerTrack ClassFactory
*/
static HRESULT WINAPI MarkerTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI MarkerTrackCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI MarkerTrackCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI MarkerTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicMarkerTrack (riid, ppobj, pOuter);
}
static HRESULT WINAPI MarkerTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl MarkerTrackCF_Vtbl = {
MarkerTrackCF_QueryInterface,
MarkerTrackCF_AddRef,
MarkerTrackCF_Release,
MarkerTrackCF_CreateInstance,
MarkerTrackCF_LockServer
};
static IClassFactoryImpl MarkerTrack_CF = {&MarkerTrackCF_Vtbl};
/******************************************************************
* DirectMusicLyricsTrack ClassFactory
*/
static HRESULT WINAPI LyricsTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI LyricsTrackCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI LyricsTrackCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI LyricsTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicLyricsTrack (riid, ppobj, pOuter);
}
static HRESULT WINAPI LyricsTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl LyricsTrackCF_Vtbl = {
LyricsTrackCF_QueryInterface,
LyricsTrackCF_AddRef,
LyricsTrackCF_Release,
LyricsTrackCF_CreateInstance,
LyricsTrackCF_LockServer
};
static IClassFactoryImpl LyricsTrack_CF = {&LyricsTrackCF_Vtbl};
/******************************************************************
* DirectMusicSegTriggerTrack ClassFactory
*/
static HRESULT WINAPI SegTriggerTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI SegTriggerTrackCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI SegTriggerTrackCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI SegTriggerTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicSegTriggerTrack (riid, ppobj, pOuter);
}
static HRESULT WINAPI SegTriggerTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl SegTriggerTrackCF_Vtbl = {
SegTriggerTrackCF_QueryInterface,
SegTriggerTrackCF_AddRef,
SegTriggerTrackCF_Release,
SegTriggerTrackCF_CreateInstance,
SegTriggerTrackCF_LockServer
};
static IClassFactoryImpl SegTriggerTrack_CF = {&SegTriggerTrackCF_Vtbl};
/******************************************************************
* DirectMusicAudioPath ClassFactory
*/
static HRESULT WINAPI AudioPathCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI AudioPathCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI AudioPathCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI AudioPathCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicAudioPathImpl (riid, ppobj, pOuter);
}
static HRESULT WINAPI AudioPathCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl AudioPathCF_Vtbl = {
AudioPathCF_QueryInterface,
AudioPathCF_AddRef,
AudioPathCF_Release,
AudioPathCF_CreateInstance,
AudioPathCF_LockServer
};
static IClassFactoryImpl AudioPath_CF = {&AudioPathCF_Vtbl};
/******************************************************************
* DirectMusicWaveTrack ClassFactory
*/
static HRESULT WINAPI WaveTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
if (ppobj == NULL) return E_POINTER;
return E_NOINTERFACE;
}
static ULONG WINAPI WaveTrackCF_AddRef(LPCLASSFACTORY iface) {
DMIME_LockModule();
return 2; /* non-heap based object */
}
static ULONG WINAPI WaveTrackCF_Release(LPCLASSFACTORY iface) {
DMIME_UnlockModule();
return 1; /* non-heap based object */
}
static HRESULT WINAPI WaveTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
return DMUSIC_CreateDirectMusicWaveTrack (riid, ppobj, pOuter);
}
static HRESULT WINAPI WaveTrackCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
TRACE("(%d)\n", dolock);
if (dolock)
DMIME_LockModule();
else
DMIME_UnlockModule();
return S_OK;
}
static const IClassFactoryVtbl WaveTrackCF_Vtbl = {
WaveTrackCF_QueryInterface,
WaveTrackCF_AddRef,
WaveTrackCF_Release,
WaveTrackCF_CreateInstance,
WaveTrackCF_LockServer
};
static IClassFactoryImpl WaveTrack_CF = {&WaveTrackCF_Vtbl};
static IClassFactoryImpl Performance_CF = {{&classfactory_vtbl},
DMUSIC_CreateDirectMusicPerformanceImpl};
static IClassFactoryImpl Segment_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicSegmentImpl};
static IClassFactoryImpl SegmentState_CF = {{&classfactory_vtbl},
DMUSIC_CreateDirectMusicSegmentStateImpl};
static IClassFactoryImpl Graph_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicGraphImpl};
static IClassFactoryImpl TempoTrack_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicTempoTrack};
static IClassFactoryImpl SeqTrack_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicSeqTrack};
static IClassFactoryImpl SysExTrack_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicSysExTrack};
static IClassFactoryImpl TimeSigTrack_CF = {{&classfactory_vtbl},
DMUSIC_CreateDirectMusicTimeSigTrack};
static IClassFactoryImpl ParamControlTrack_CF = {{&classfactory_vtbl},
DMUSIC_CreateDirectMusicParamControlTrack};
static IClassFactoryImpl MarkerTrack_CF = {{&classfactory_vtbl},
DMUSIC_CreateDirectMusicMarkerTrack};
static IClassFactoryImpl LyricsTrack_CF = {{&classfactory_vtbl},
DMUSIC_CreateDirectMusicLyricsTrack};
static IClassFactoryImpl SegTriggerTrack_CF = {{&classfactory_vtbl},
DMUSIC_CreateDirectMusicSegTriggerTrack};
static IClassFactoryImpl AudioPath_CF = {{&classfactory_vtbl},
DMUSIC_CreateDirectMusicAudioPathImpl};
static IClassFactoryImpl WaveTrack_CF = {{&classfactory_vtbl}, DMUSIC_CreateDirectMusicWaveTrack};
/******************************************************************
* DllMain