|
|
|
@ -23,41 +23,49 @@
|
|
|
|
|
WINE_DEFAULT_DEBUG_CHANNEL(dmime);
|
|
|
|
|
WINE_DECLARE_DEBUG_CHANNEL(dmfile);
|
|
|
|
|
|
|
|
|
|
LONG DMIME_refCount = 0;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
/* IUnknown fields */
|
|
|
|
|
IClassFactoryVtbl *lpVtbl;
|
|
|
|
|
DWORD ref;
|
|
|
|
|
} IClassFactoryImpl;
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicPerformance ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI PerformanceCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI PerformanceCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI PerformanceCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI PerformanceCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
TRACE ("(%p, %s, %p)\n", pOuter, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
|
|
|
|
|
return DMUSIC_CreateDirectMusicPerformanceImpl (riid, ppobj, pOuter);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI PerformanceCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -69,37 +77,45 @@ static IClassFactoryVtbl PerformanceCF_Vtbl = {
|
|
|
|
|
PerformanceCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl Performance_CF = {&PerformanceCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl Performance_CF = {&PerformanceCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicSegment ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI SegmentCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SegmentCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SegmentCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI SegmentCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -111,37 +127,45 @@ static IClassFactoryVtbl SegmentCF_Vtbl = {
|
|
|
|
|
SegmentCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl Segment_CF = {&SegmentCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl Segment_CF = {&SegmentCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicSegmentState ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI SegmentStateCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SegmentStateCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based objects */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SegmentStateCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI SegmentStateCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -153,37 +177,45 @@ static IClassFactoryVtbl SegmentStateCF_Vtbl = {
|
|
|
|
|
SegmentStateCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl SegmentState_CF = {&SegmentStateCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl SegmentState_CF = {&SegmentStateCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicGraph ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI GraphCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI GraphCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI GraphCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI GraphCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -195,37 +227,45 @@ static IClassFactoryVtbl GraphCF_Vtbl = {
|
|
|
|
|
GraphCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl Graph_CF = {&GraphCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl Graph_CF = {&GraphCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicTempoTrack ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI TempoTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI TempoTrackCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI TempoTrackCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI TempoTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -237,37 +277,45 @@ static IClassFactoryVtbl TempoTrackCF_Vtbl = {
|
|
|
|
|
TempoTrackCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl TempoTrack_CF = {&TempoTrackCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl TempoTrack_CF = {&TempoTrackCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicSeqTrack ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI SeqTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SeqTrackCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SeqTrackCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI SeqTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -279,37 +327,44 @@ static IClassFactoryVtbl SeqTrackCF_Vtbl = {
|
|
|
|
|
SeqTrackCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl SeqTrack_CF = {&SeqTrackCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl SeqTrack_CF = {&SeqTrackCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicSysExTrack ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI SysExTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SysExTrackCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SysExTrackCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI SysExTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -321,37 +376,45 @@ static IClassFactoryVtbl SysExTrackCF_Vtbl = {
|
|
|
|
|
SysExTrackCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl SysExTrack_CF = {&SysExTrackCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl SysExTrack_CF = {&SysExTrackCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicTimeSigTrack ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI TimeSigTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI TimeSigTrackCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI TimeSigTrackCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI TimeSigTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -363,37 +426,45 @@ static IClassFactoryVtbl TimeSigTrackCF_Vtbl = {
|
|
|
|
|
TimeSigTrackCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl TimeSigTrack_CF = {&TimeSigTrackCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl TimeSigTrack_CF = {&TimeSigTrackCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicParamControlTrack ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI ParamControlTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI ParamControlTrackCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI ParamControlTrackCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI ParamControlTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -405,37 +476,45 @@ static IClassFactoryVtbl ParamControlTrackCF_Vtbl = {
|
|
|
|
|
ParamControlTrackCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl ParamControlTrack_CF = {&ParamControlTrackCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl ParamControlTrack_CF = {&ParamControlTrackCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicMarkerTrack ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI MarkerTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI MarkerTrackCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI MarkerTrackCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI MarkerTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -447,37 +526,45 @@ static IClassFactoryVtbl MarkerTrackCF_Vtbl = {
|
|
|
|
|
MarkerTrackCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl MarkerTrack_CF = {&MarkerTrackCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl MarkerTrack_CF = {&MarkerTrackCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicLyricsTrack ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI LyricsTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI LyricsTrackCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI LyricsTrackCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI LyricsTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -489,38 +576,46 @@ static IClassFactoryVtbl LyricsTrackCF_Vtbl = {
|
|
|
|
|
LyricsTrackCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl LyricsTrack_CF = {&LyricsTrackCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl LyricsTrack_CF = {&LyricsTrackCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicSegTriggerTrack ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI SegTriggerTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SegTriggerTrackCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI SegTriggerTrackCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI SegTriggerTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -532,37 +627,45 @@ static IClassFactoryVtbl SegTriggerTrackCF_Vtbl = {
|
|
|
|
|
SegTriggerTrackCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl SegTriggerTrack_CF = {&SegTriggerTrackCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl SegTriggerTrack_CF = {&SegTriggerTrackCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicAudioPath ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI AudioPathCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI AudioPathCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI AudioPathCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI AudioPathCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -574,37 +677,45 @@ static IClassFactoryVtbl AudioPathCF_Vtbl = {
|
|
|
|
|
AudioPathCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl AudioPath_CF = {&AudioPathCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl AudioPath_CF = {&AudioPathCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DirectMusicWaveTrack ClassFactory
|
|
|
|
|
*/
|
|
|
|
|
static HRESULT WINAPI WaveTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %s, %p): stub\n", This, debugstr_dmguid(riid), ppobj);
|
|
|
|
|
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
|
|
|
|
|
|
|
|
|
|
if (ppobj == NULL) return E_POINTER;
|
|
|
|
|
|
|
|
|
|
return E_NOINTERFACE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI WaveTrackCF_AddRef(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
return InterlockedIncrement(&This->ref);
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
|
|
|
|
|
return 2; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ULONG WINAPI WaveTrackCF_Release(LPCLASSFACTORY iface) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
/* static class, won't be freed */
|
|
|
|
|
return InterlockedDecrement(&This->ref);
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return 1; /* non-heap based object */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HRESULT WINAPI WaveTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
TRACE ("(%p, %p, %s, %p)\n", This, pOuter, debugstr_dmguid(riid), 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) {
|
|
|
|
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
|
|
|
|
FIXME("(%p, %d): stub\n", This, dolock);
|
|
|
|
|
TRACE("(%d)\n", dolock);
|
|
|
|
|
|
|
|
|
|
if (dolock)
|
|
|
|
|
DMIME_LockModule();
|
|
|
|
|
else
|
|
|
|
|
DMIME_UnlockModule();
|
|
|
|
|
|
|
|
|
|
return S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -616,7 +727,7 @@ static IClassFactoryVtbl WaveTrackCF_Vtbl = {
|
|
|
|
|
WaveTrackCF_LockServer
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static IClassFactoryImpl WaveTrack_CF = {&WaveTrackCF_Vtbl, 1 };
|
|
|
|
|
static IClassFactoryImpl WaveTrack_CF = {&WaveTrackCF_Vtbl};
|
|
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
|
* DllMain
|
|
|
|
@ -642,8 +753,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
HRESULT WINAPI DMIME_DllCanUnloadNow(void) {
|
|
|
|
|
FIXME("(void): stub\n");
|
|
|
|
|
return S_FALSE;
|
|
|
|
|
return DMIME_refCount != 0 ? S_FALSE : S_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|