9181df48effaaa8af1844a7228e59f63115e1551
3 WINE_DEFAULT_DEBUG_CHANNEL (shell
);
5 class CNetshellClassFactory
: public IClassFactory
8 CNetshellClassFactory(REFCLSID rclsid
);
11 virtual HRESULT WINAPI
QueryInterface(REFIID riid
, LPVOID
*ppvOut
);
12 virtual ULONG WINAPI
AddRef();
13 virtual ULONG WINAPI
Release();
16 virtual HRESULT WINAPI
CreateInstance(LPUNKNOWN pUnkOuter
, REFIID riid
, LPVOID
*ppvObject
);
17 virtual HRESULT WINAPI
LockServer(BOOL fLock
);
24 CNetshellClassFactory::CNetshellClassFactory(REFCLSID rclsid
)
32 CNetshellClassFactory::QueryInterface(
37 if(IsEqualIID(riid
, IID_IUnknown
) || IsEqualIID(riid
, IID_IClassFactory
))
39 *ppvObj
= (IClassFactory
*)this;
40 InterlockedIncrement(&ref
);
48 CNetshellClassFactory::AddRef()
50 ULONG refCount
= InterlockedIncrement(&ref
);
57 CNetshellClassFactory::Release()
59 ULONG refCount
= InterlockedDecrement(&ref
);
71 CNetshellClassFactory::CreateInstance(
78 if (IsEqualCLSID(clsid
, CLSID_NetworkConnections
))
79 return ISF_NetConnect_Constructor(pUnkOuter
, riid
, ppvObject
);
80 else if (IsEqualCLSID(clsid
, CLSID_ConnectionManager
))
81 return INetConnectionManager_Constructor(pUnkOuter
, riid
, ppvObject
);
82 else if (IsEqualCLSID(clsid
, CLSID_LANConnectUI
))
83 return LanConnectUI_Constructor(pUnkOuter
, riid
, ppvObject
);
84 else if (IsEqualCLSID(clsid
, CLSID_LanConnectStatusUI
))
85 return LanConnectStatusUI_Constructor(pUnkOuter
, riid
, ppvObject
);
92 CNetshellClassFactory::LockServer(BOOL fLock
)
97 HRESULT
IClassFactory_fnConstructor(REFCLSID rclsid
, REFIID riid
, LPVOID
*ppvOut
)
99 CNetshellClassFactory
*pClsFactory
= new CNetshellClassFactory(rclsid
);
101 return E_OUTOFMEMORY
;
103 pClsFactory
->AddRef();
104 HRESULT hr
= pClsFactory
->QueryInterface(riid
, ppvOut
);
105 pClsFactory
->Release();