📄 memfsys.h
字号:
STDMETHOD(GetPropertyCString) (THIS_ const char* pPropertyName, REF(IHXBuffer*) pPropertyValue) NOTIMPL STDMETHOD(GetFirstPropertyCString) (THIS_ REF(const char*) pPropertyName, REF(IHXBuffer*) pPropertyValue) NOTIMPL STDMETHOD(GetNextPropertyCString) (THIS_ REF(const char*) pPropertyName, REF(IHXBuffer*) pPropertyValue) NOTIMPL static IHXMemoryFileContext* z_pMemCtx; static UINT32 z_uMaxRecursionLevel;};/////////////////////////////////////////////////////////////////////////////// // Class://// CMemoryFileObject//// Purpose://// Example implementation of a basic file system file object.//class CMemoryFileObject : public IHXFileObject, public IHXFileStat, public IHXFileExists, public IHXGetFileFromSamePool, public IHXFileMimeMapper, public IHXRequestHandler, public IHXPendingStatus, public IHXFileResponse{private: UINT32 m_ulPos; BOOL m_bCanBeReOpened; LONG32 m_lRefCount; ULONG32 m_ulFlags; IHXScheduler* m_pScheduler; IUnknown* m_pContext; IHXCommonClassFactory* m_pCommonClassFactory; IHXFileResponse* m_pFileResponse; IHXFileSystemObject* m_pFileSystem; IHXRequest* m_pRequest; CChunkyRes* m_pChunkyRes; BOOL m_bLocalClose; char* m_pFilename; CHXString m_base_path; UINT16 m_uRecursionCount; BOOL m_bInReadDone; UINT32 m_ulPendingReadCount; BOOL m_bReadCancelled; BOOL m_bSeekPending; BOOL m_bAsynchInit; BOOL m_bClosed; CMemoryFileStatus* m_pStatus; CHXString m_strHeaderContentType; void Process(void); void UpdateFileNameMember(void); IHXMemoryFileSystem* GetMemoryFileSystem(void); IHXMemoryFileSystem2* GetMemoryFileSystem2(void); class SMPLFileObjCallback : public IHXCallback { private: LONG32 m_lRefCount; ~SMPLFileObjCallback(); PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME public: BOOL m_bIgnoreCallback; SMPLFileObjCallback(CMemoryFileObject* pFileObject); CMemoryFileObject* m_pSMPLFileObject; BOOL m_bCallbackPending; ULONG32 m_ulPendingCallbackID; /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj); STDMETHOD_(ULONG32,AddRef) (THIS); STDMETHOD_(ULONG32,Release) (THIS); /* * IHXCallback methods */ STDMETHOD(Func) (THIS); }; friend class SMPLFileObjCallback; SMPLFileObjCallback* m_pCallback;public: CMemoryFileObject ( CHXString& base_path, IHXFileSystemObject*, IUnknown* ); ~CMemoryFileObject(); /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj); STDMETHOD_(ULONG32,AddRef) (THIS); STDMETHOD_(ULONG32,Release) (THIS); /* * IHXFileObject methods */ /************************************************************************ * Method: * IHXFileObject::Init * Purpose: * Associates a file object with the file response object it should * notify of operation completness. This method should also check * for validity of the object (for example by opening it if it is * a local file). */ STDMETHOD(Init) (THIS_ ULONG32 /*IN*/ ulFlags, IHXFileResponse* /*IN*/ pFileResponse); /************************************************************************ * Method: * IHXFileObject::GetFilename * Purpose: * Returns the filename (without any path information) associated * with a file object. */ STDMETHOD(GetFilename) (THIS_ REF(const char*) /*OUT*/ pFilename); /************************************************************************ * Method: * IHXFileObject::Close * Purpose: * Closes the file resource and releases all resources associated * with the object. */ STDMETHOD(Close) (THIS); /************************************************************************ * Method: * IHXFileObject::Read * Purpose: * Reads a buffer of data of the specified length from the file * and asynchronously returns it to the caller via the * IHXFileResponse interface passed in to Init. */ STDMETHOD(Read) (THIS_ ULONG32 ulCount); /************************************************************************ * Method: * IHXFileObject::Write * Purpose: * Writes a buffer of data to the file and asynchronously notifies * the caller via the IHXFileResponse interface passed in to Init, * of the completeness of the operation. */ STDMETHOD(Write) (THIS_ IHXBuffer* pBuffer); /************************************************************************ * Method: * IHXFileObject::Seek * Purpose: * Seeks to an offset in the file and asynchronously notifies * the caller via the IHXFileResponse interface passed in to Init, * of the completeness of the operation. */ STDMETHOD(Seek) (THIS_ ULONG32 ulOffset, BOOL bRelative); /************************************************************************ * Method: * IHXFileObject::Stat * Purpose: * Collects information about the file that is returned to the * caller in an IHXStat object */ STDMETHOD(Stat) (THIS_ IHXFileStatResponse* pFileStatResponse); /************************************************************************ * Method: * IHXFileObject::Advise * Purpose: * To pass information to the File Object */ STDMETHOD(Advise) (THIS_ ULONG32 ulInfo); /************************************************************************ * Method: * IHXGetFileFromSamePool::GetFileObjectFromPool * Purpose: * To get another FileObject from the same pool. */ STDMETHOD(GetFileObjectFromPool) (THIS_ IHXGetFileFromSamePoolResponse*); // IHXFileExists interface /************************************************************************ * Method: * IHXFileExists::DoesExist * Purpose: */ STDMETHOD(DoesExist) (THIS_ const char* /*IN*/ pPath, IHXFileExistsResponse* /*IN*/ pFileResponse); //IHXRequestHandler methods /************************************************************************ * Method: * IHXRequestHandler::SetRequest * Purpose: * Associates an IHXRequest with an object */ STDMETHOD(SetRequest) (THIS_ IHXRequest* /*IN*/ pRequest); /************************************************************************ * Method: * IHXRequestHandler::GetRequest * Purpose: * Gets the IHXRequest object associated with an object */ STDMETHOD(GetRequest) (THIS_ REF(IHXRequest*) /*OUT*/ pRequest); /* * IHXFileMimeMapper methods */ /************************************************************************ * Method: * IHXFileMimeMapper::FindMimeType * Purpose: */ STDMETHOD(FindMimeType) (THIS_ const char* /*IN*/ pURL, IHXFileMimeMapperResponse* /*IN*/ pMimeMapperResponse ); /* * IHXPendingStatus methods */ /************************************************************************ * Method: * IHXPendingStatus::GetStatus * Purpose: * Called by the user to get the current pending status from an object */ STDMETHOD(GetStatus) (THIS_ REF(UINT16) uStatusCode, REF(IHXBuffer*) pStatusDesc, REF(UINT16) ulPercentDone); /* * IHXFileResponse methods */ /************************************************************************ * Method: * IHXFileResponse::InitDone * Purpose: * Notification interface provided by users of the IHXFileObject * interface. This method is called by the IHXFileObject when the * initialization of the file is complete. If the file is not valid * for the file system, the status HXR_FAILED should be * returned. */ STDMETHOD(InitDone) (THIS_ HX_RESULT status); /************************************************************************ * Method: * IHXFileResponse::CloseDone * Purpose: * Notification interface provided by users of the IHXFileObject * interface. This method is called by the IHXFileObject when the * close of the file is complete. */ STDMETHOD(CloseDone) (THIS_ HX_RESULT status); /************************************************************************ * Method: * IHXFileResponse::ReadDone * Purpose: * Notification interface provided by users of the IHXFileObject * interface. This method is called by the IHXFileObject when the * last read from the file is complete and a buffer is available. */ STDMETHOD(ReadDone) (THIS_ HX_RESULT status, IHXBuffer* pBuffer); /************************************************************************ * Method: * IHXFileResponse::WriteDone * Purpose: * Notification interface provided by users of the IHXFileObject * interface. This method is called by the IHXFileObject when the * last write to the file is complete. */ STDMETHOD(WriteDone) (THIS_ HX_RESULT status); /************************************************************************ * Method: * IHXFileResponse::SeekDone * Purpose: * Notification interface provided by users of the IHXFileObject * interface. This method is called by the IHXFileObject when the * last seek in the file is complete. */ STDMETHOD(SeekDone) (THIS_ HX_RESULT status); /************************************************************************ * Method: * Private interface::_OpenFile * Purpose: * open chunky res */ STDMETHOD(_OpenFile) (THIS_ ULONG32 ulFlags); /************************************************************************ * Method: * Private interface::_CloseFile * Purpose: * close chunky res */ STDMETHOD(_CloseFile) (THIS_);};#endif // ndef _MEMFSYS_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -