mirror of
https://github.com/reactos/wine.git
synced 2025-04-06 18:12:07 +00:00
explorerframe: COM cleanup for the IClassFactory iface.
This commit is contained in:
parent
1413e1d6d8
commit
4156a80452
@ -101,22 +101,22 @@ HRESULT WINAPI DllGetVersion(DLLVERSIONINFO *info)
|
|||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Implement the ExplorerFrame class factory
|
* Implement the ExplorerFrame class factory
|
||||||
*
|
|
||||||
* (Taken from shdocvw/factory.c; based on implementation in
|
|
||||||
* ddraw/main.c)
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define FACTORY(x) ((IClassFactory*) &(x)->lpClassFactoryVtbl)
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
const IClassFactoryVtbl *lpClassFactoryVtbl;
|
IClassFactory IClassFactory_iface;
|
||||||
HRESULT (*cf)(IUnknown*, REFIID, void**);
|
HRESULT (*cf)(IUnknown*, REFIID, void**);
|
||||||
LONG ref;
|
LONG ref;
|
||||||
} IClassFactoryImpl;
|
} IClassFactoryImpl;
|
||||||
|
|
||||||
|
static inline IClassFactoryImpl *impl_from_IClassFactory(IClassFactory *iface)
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* EFCF_QueryInterface (IUnknown)
|
* EFCF_QueryInterface
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI EFCF_QueryInterface(IClassFactory* iface,
|
static HRESULT WINAPI EFCF_QueryInterface(IClassFactory* iface,
|
||||||
REFIID riid, void **ppobj)
|
REFIID riid, void **ppobj)
|
||||||
@ -140,7 +140,7 @@ static HRESULT WINAPI EFCF_QueryInterface(IClassFactory* iface,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* EFCF_AddRef (IUnknown)
|
* EFCF_AddRef
|
||||||
*/
|
*/
|
||||||
static ULONG WINAPI EFCF_AddRef(IClassFactory *iface)
|
static ULONG WINAPI EFCF_AddRef(IClassFactory *iface)
|
||||||
{
|
{
|
||||||
@ -150,7 +150,7 @@ static ULONG WINAPI EFCF_AddRef(IClassFactory *iface)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* EFCF_Release (IUnknown)
|
* EFCF_Release
|
||||||
*/
|
*/
|
||||||
static ULONG WINAPI EFCF_Release(IClassFactory *iface)
|
static ULONG WINAPI EFCF_Release(IClassFactory *iface)
|
||||||
{
|
{
|
||||||
@ -165,7 +165,7 @@ static ULONG WINAPI EFCF_Release(IClassFactory *iface)
|
|||||||
static HRESULT WINAPI EFCF_CreateInstance(IClassFactory *iface, IUnknown *pOuter,
|
static HRESULT WINAPI EFCF_CreateInstance(IClassFactory *iface, IUnknown *pOuter,
|
||||||
REFIID riid, void **ppobj)
|
REFIID riid, void **ppobj)
|
||||||
{
|
{
|
||||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
IClassFactoryImpl *This = impl_from_IClassFactory(iface);
|
||||||
return This->cf(pOuter, riid, ppobj);
|
return This->cf(pOuter, riid, ppobj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,12 +198,12 @@ static const IClassFactoryVtbl EFCF_Vtbl =
|
|||||||
*/
|
*/
|
||||||
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
|
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
|
||||||
{
|
{
|
||||||
static IClassFactoryImpl NSTCClassFactory = {&EFCF_Vtbl, NamespaceTreeControl_Constructor};
|
static IClassFactoryImpl NSTCClassFactory = {{&EFCF_Vtbl}, NamespaceTreeControl_Constructor};
|
||||||
|
|
||||||
TRACE("%s, %s, %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
TRACE("%s, %s, %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||||
|
|
||||||
if(IsEqualGUID(&CLSID_NamespaceTreeControl, rclsid))
|
if(IsEqualGUID(&CLSID_NamespaceTreeControl, rclsid))
|
||||||
return IClassFactory_QueryInterface(FACTORY(&NSTCClassFactory), riid, ppv);
|
return IClassFactory_QueryInterface(&NSTCClassFactory.IClassFactory_iface, riid, ppv);
|
||||||
|
|
||||||
return CLASS_E_CLASSNOTAVAILABLE;
|
return CLASS_E_CLASSNOTAVAILABLE;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user