📄 warfiledriverfilewin32.h
字号:
/** */#ifndef WAR_FILE_DRIVER_FILE_WIN32_H#define WAR_FILE_DRIVER_FILE_WIN32_H/* SYSTEM INCLUDES *//* PROJECT INCLUDES */#ifndef WAR_FILE_DRIVER_FILE_H# include "WarFileDriverFile.h"#endif#ifndef WAR_FILE_H# include "WarFile.h"#endif/* LOCAL INCLUDES *//* FORWARD REFERENCES */#ifdef __cplusplusextern "C" {#endif/****************** BEGIN OLD STYLE C spesific ********//****************** END OLD STYLE C spesific **********/#ifdef __cplusplus }#endif/****************** BEGIN C++ spesific ****************/#ifdef __cplusplusclass WarFileDriverFileWin32 : public WarFileDriverFile{public: enum IoOperationE { OP_READ, OP_WRITE, OP_INVALID }; typedef struct ol_result_def { OVERLAPPED mOverlappedData; WarFileDriverFileWin32 *mpThis; war_file_ptr_t mFilePtr; // Prevent destruction during callback war_transfer_buffer_ptr_t mBufferPtr; IoOperationE mOperation; struct ol_result_def *mpNext; // Used in storage } ol_result_t; // LIFECYCLE WarFileDriverFileWin32(WarFileDriver *pDriver); ~WarFileDriverFileWin32(); // OPERATORS // OPERATIONS virtual void Open(const WarUrl& openUrl, war_uint32_t openFlags) throw(WarException); virtual void Close() throw(WarException); virtual war_uint32_t Read(war_cptr_t Buf, war_uint32_t Bytes) throw(WarException); virtual void Write(war_ccptr_t Buf, war_uint32_t Bytes) throw(WarException); virtual void WriteWithCallback(war_transfer_buffer_ptr_t& outBuffer) throw(WarException); virtual void ReadWithCallback(war_transfer_buffer_ptr_t& inBuffer) throw(WarException); virtual void Flush() throw(WarException); virtual war_flen_t Seek (war_flen_t fileOffset, SeekModes seekMode = WAR_SEEK_BEGIN) throw(WarException); virtual war_flen_t GetLength() throw(WarException); // ACCESS virtual war_filehandle_t GetHandle() { return mFileHandle; } // INQUIRY virtual bool IsOpen(); virtual bool CanDoCallback() const { return true; } protected: static VOID CALLBACK FileIOCompletionRoutine( DWORD dwErrorCode, // completion code DWORD dwNumberOfBytesTransfered, // number of bytes transferred LPOVERLAPPED lpOverlapped // I/O information buffer ); ol_result_def *AllocResult(IoOperationE operation); static void DeleteResult(ol_result_def *presult); static ol_result_t *mspBufferList; // Unused buffers war_filehandle_t mFileHandle; war_syspath_t mPath; war_flen_t mCurrentFileOffset; static WarCriticalSection msBufferLock; friend WarFile;private:};/* INLINE METHODS *//* EXTERNAL REFERENCES */#endif /* __cplusplus *//****************** END C++ spesific ******************/#endif /* WAR_FILE_DRIVER_FILE_WIN32_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -