#ifndef _PROTO_CCLASSFACTORY_HPP_ #define _PROTO_CCLASSFACTORY_HPP_ #ifndef _COM_OLE2_HPP_ #include #endif #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif #ifndef _PROTO_DLLSERVER_HPP_ #include #endif class CFSimpleObject; class CImpIClassFactory : public IClassFactory { public: CImpIClassFactory(SmartPointer &pBackObj,PIUnknown &pUnkOuter,SmartPointer &server); ~CImpIClassFactory(); HRESULT __stdcall QueryInterface(REFIID riid,PPVOID ppv); ULONG __stdcall AddRef(void); ULONG __stdcall Release(void); HRESULT __stdcall CreateInstance(IUnknown *pUnkOuter,REFIID riid,PPVOID ppv); HRESULT __stdcall LockServer(BOOL lock); private: ULONG mRefCount; SmartPointer mBackObj; SmartPointer mDLLServer; PIUnknown mUnkOuter; }; class CFSimpleObject : public IUnknown { public: friend CImpIClassFactory; CFSimpleObject(PIUnknown &pUnkOuter,SmartPointer &server); ~CFSimpleObject(); HRESULT __stdcall QueryInterface(REFIID riid,PPVOID ppv); ULONG __stdcall AddRef(void); ULONG __stdcall Release(void); private: CImpIClassFactory mImpIClassFactory; SmartPointer mDLLServer; PIUnknown mUnkOuter; ULONG mRefCount; }; typedef CFSimpleObject *PCFSimpleObject; #endif