//+------------------------------------------------------------------- // // File: cmarshal.hxx // // Contents: This file contins the DLL entry points // LibMain // DllGetClassObject (Bindings key func) // DllCanUnloadNow // CCMarshalCF (class factory) // History: 30-Mar-92 SarahJ Created // //--------------------------------------------------------------------- #ifndef __CMARSHAL_H__ #define __CMARSHAL_H__ //+------------------------------------------------------------------- // // Class: CCMarshalCF // // Synopsis: Class Factory for CCMarshal // // Methods: IUnknown - QueryInterface, AddRef, Release // IClassFactory - CreateInstance // // History: 21-Mar-92 SarahJ Created // //-------------------------------------------------------------------- class FAR CCMarshalCF: public IClassFactory { public: // Constructor/Destructor CCMarshalCF(); ~CCMarshalCF(); // IUnknown STDMETHODIMP QueryInterface(REFIID iid, void FAR * FAR * ppv); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // IClassFactory STDMETHODIMP CreateInstance(IUnknown FAR* pUnkOuter, REFIID iidInterface, void FAR* FAR* ppv); STDMETHODIMP LockServer(BOOL fLock); private: ULONG ref_count;; }; class CMarshalBase : public IMarshal { public: CMarshalBase(); ~CMarshalBase(); // IMarshal STDMETHOD(GetUnmarshalClass) (THIS_ REFIID riid, LPVOID pv, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPCLSID pCid); STDMETHOD(GetMarshalSizeMax) (THIS_ REFIID riid, LPVOID pv, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPDWORD pSize); STDMETHOD(MarshalInterface) (THIS_ IStream * pStm, REFIID riid, LPVOID pv, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags); STDMETHOD(UnmarshalInterface)(THIS_ IStream * pStm, REFIID riid, LPVOID * ppv); STDMETHOD(ReleaseMarshalData)(THIS_ IStream * pStm); STDMETHOD(DisconnectObject) (THIS_ DWORD dwReserved); ITest *proxy; private: IMarshal *marshaller; }; //+------------------------------------------------------------------- // // Class: CCMarshal // // Synopsis: Test class CCMarshal // // Methods: // // History: 21-Mar-92 SarahJ Created // //-------------------------------------------------------------------- class FAR CCMarshal: public ITest, public CMarshalBase { public: // Constructor/Destructor CCMarshal(); ~CCMarshal(); // IUnknown STDMETHODIMP QueryInterface(REFIID iid, void FAR * FAR * ppv); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // ITest STDMETHOD_(DWORD, die) ( ITest *, ULONG, ULONG, ULONG ); STDMETHOD (die_cpp) ( ULONG ); STDMETHOD (die_nt) ( ULONG ); STDMETHOD_(DWORD, DoTest) ( ITest *, ITest * ); STDMETHOD_(BOOL, hello) ( ); STDMETHOD (interrupt) ( ITest *, BOOL ); STDMETHOD (recurse) ( ITest *, ULONG ); STDMETHOD (recurse_interrupt)( ITest *, ULONG ); STDMETHOD (sick) ( ULONG ); STDMETHOD (sleep) ( ULONG ); private: ULONG ref_count; }; #endif