// EmFile.h : Declaration of the CEmFile #ifndef __EMFILE_H_ #define __EMFILE_H_ #include "resource.h" // main symbols ///////////////////////////////////////////////////////////////////////////// // CEmFile class ATL_NO_VTABLE CEmFile : public IStream, public CComObjectRootEx, public CComCoClass, public ISupportErrorInfo, public IDispatchImpl { private: HANDLE m_hEmFile; BSTR m_bstrFileName; private: HRESULT CreateEmFile ( IN DWORD dwDesiredAccess = GENERIC_READ, IN DWORD dwShareMode = FILE_SHARE_READ, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL, IN DWORD dwCreationDisposition = OPEN_EXISTING, IN DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL, IN HANDLE hTemplateFile = NULL ); public: CEmFile(); ~CEmFile(); DECLARE_REGISTRY_RESOURCEID(IDR_EMFILE) DECLARE_NOT_AGGREGATABLE(CEmFile) DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CEmFile) COM_INTERFACE_ENTRY(IEmFile) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ISupportErrorInfo) COM_INTERFACE_ENTRY(IStream) END_COM_MAP() // ISupportsErrorInfo STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid); // IEmFile public: STDMETHOD(InitFile)(BSTR bstrFileName); STDMETHOD(Clone)(/*[out]*/ IStream **ppstm); STDMETHOD(Stat)(/*[out]*/ STATSTG *pstatstg, DWORD grfStatFlag); STDMETHOD(UnlockRegion)(/*[in]*/ ULARGE_INTEGER libOffset, /*[in]*/ ULARGE_INTEGER cb, /*[in]*/ DWORD dwLockType); STDMETHOD(LockRegion)(/*[in]*/ ULARGE_INTEGER libOffset, /*[in]*/ ULARGE_INTEGER cb, /*[in]*/ DWORD dwLockType); STDMETHOD(Revert)(void); STDMETHOD(Commit)(/*[in]*/ DWORD grfCommitFlags); STDMETHOD(CopyTo)(/*[in]*/ IStream *pstm, /*[in]*/ ULARGE_INTEGER cb, /*[out]*/ ULARGE_INTEGER *pcbRead, /*[out]*/ ULARGE_INTEGER *pcbWritten); STDMETHOD(SetSize)(/*[in]*/ ULARGE_INTEGER libNewSize); STDMETHOD(Seek)(/*[in]*/ LARGE_INTEGER dlibMove, /*[in]*/ ULONG dwOrigin, /*[out]*/ ULARGE_INTEGER *plibNewPosition); STDMETHOD(Write)(/*[in]*/ void const *pv, /*[in]*/ ULONG cb, /*[out]*/ ULONG *pcbWritten); STDMETHOD(Read)(/*[out]*/ void *pv, /*[in]*/ ULONG cb, /*[out]*/ ULONG *pcbRead); }; #endif //__EMFILE_H_