7 /*#include "dshow.h"*/ /* not yet */
9 #include "debugtools.h"
11 DEFAULT_DEBUG_CHANNEL(quartz);
14 IClassFactory_fnQueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj);
15 static ULONG WINAPI IClassFactory_fnAddRef(LPCLASSFACTORY iface);
16 static ULONG WINAPI IClassFactory_fnRelease(LPCLASSFACTORY iface);
17 static HRESULT WINAPI IClassFactory_fnCreateInstance(LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj);
18 static HRESULT WINAPI IClassFactory_fnLockServer(LPCLASSFACTORY iface,BOOL dolock);
20 static ICOM_VTABLE(IClassFactory) iclassfact =
22 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
23 IClassFactory_fnQueryInterface,
24 IClassFactory_fnAddRef,
25 IClassFactory_fnRelease,
26 IClassFactory_fnCreateInstance,
27 IClassFactory_fnLockServer
33 ICOM_VFIELD(IClassFactory);
37 static IClassFactoryImpl QUARTZ_GlobalCF = {&iclassfact, 0 };
39 static DWORD dwClassObjRef;
43 IClassFactory_fnQueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
45 ICOM_THIS(IClassFactoryImpl,iface);
47 TRACE("(%p)->(%p,%p)\n",This,riid,ppobj);
48 if ( ( IsEqualGUID( &IID_IUnknown, riid ) ) ||
49 ( IsEqualGUID( &IID_IClassFactory, riid ) ) )
52 IClassFactory_AddRef(iface);
59 static ULONG WINAPI IClassFactory_fnAddRef(LPCLASSFACTORY iface)
61 ICOM_THIS(IClassFactoryImpl,iface);
63 TRACE("(%p)->()\n",This);
64 if ( (This->ref) == 0 )
70 static ULONG WINAPI IClassFactory_fnRelease(LPCLASSFACTORY iface)
72 ICOM_THIS(IClassFactoryImpl,iface);
74 TRACE("(%p)->()\n",This);
75 if ( (--(This->ref)) > 0 )
82 static HRESULT WINAPI IClassFactory_fnCreateInstance(LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj)
84 ICOM_THIS(IClassFactoryImpl,iface);
86 FIXME("(%p)->(%p,%s,%p),stub!\n",This,pOuter,debugstr_guid(riid),ppobj);
95 static HRESULT WINAPI IClassFactory_fnLockServer(LPCLASSFACTORY iface,BOOL dolock)
97 ICOM_THIS(IClassFactoryImpl,iface);
100 FIXME("(%p)->(%d),stub!\n",This,dolock);
102 hr = IClassFactory_AddRef(iface);
104 hr = IClassFactory_Release(iface);
112 /***********************************************************************
113 * QUARTZ_InitProcess (internal)
115 static BOOL QUARTZ_InitProcess( void )
124 /***********************************************************************
125 * QUARTZ_UninitProcess (internal)
127 static void QUARTZ_UninitProcess( void )
131 if ( dwClassObjRef != 0 )
132 ERR( "you must release some objects allocated from quartz.\n" );
135 /***********************************************************************
138 BOOL WINAPI QUARTZ_DllMain(
145 case DLL_PROCESS_ATTACH:
146 if ( !QUARTZ_InitProcess() )
149 case DLL_PROCESS_DETACH:
150 QUARTZ_UninitProcess();
152 case DLL_THREAD_ATTACH:
154 case DLL_THREAD_DETACH:
162 /***********************************************************************
163 * DllCanUnloadNow (QUARTZ.@)
169 DWORD WINAPI QUARTZ_DllCanUnloadNow(void)
171 return ( dwClassObjRef == 0 ) ? S_OK : S_FALSE;
174 /***********************************************************************
175 * DllGetClassObject (QUARTZ.@)
177 DWORD WINAPI QUARTZ_DllGetClassObject(
178 const CLSID* pclsid,const IID* piid,void** ppv)
181 if ( IsEqualCLSID( &IID_IClassFactory, piid ) )
183 *ppv = (LPVOID)&QUARTZ_GlobalCF;
184 IClassFactory_AddRef((IClassFactory*)*ppv);
188 return CLASS_E_CLASSNOTAVAILABLE;
191 /***********************************************************************
192 * DllRegisterServer (QUARTZ.@)
195 HRESULT WINAPI QUARTZ_DllRegisterServer( void )
197 FIXME( "(): stub\n" );
201 /***********************************************************************
202 * DllUnregisterServer (QUARTZ.@)
205 HRESULT WINAPI QUARTZ_DllUnregisterServer( void )
207 FIXME( "(): stub\n" );