⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warfiledriverfilewin32.h

📁 ftpserver very good sample
💻 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 + -