• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            飯中淹的避難所~~~~~

            偶爾來避難的地方~

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              94 隨筆 :: 0 文章 :: 257 評論 :: 0 Trackbacks

             

            class CInputFile
            {
            public:
                CInputFile() : m_Handle( INVALID_HANDLE_VALUE ) {}
                
            ~CInputFile() { Close(); }

                
            bool Open( const char * pszFilename )
                {
                    m_Handle 
            = CreateFile( pszFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL );
                    
            if!IsValid() )return false;
                    GetFileSizeEx( m_Handle, 
            &m_nSize );
                    LARGE_INTEGER li 
            = { 0 };
                    SetFilePointerEx( m_Handle, li, 
            &m_nPosition, FILE_CURRENT );
                    
            return true;
                }

                
            void Close()
                {
                    
            if( IsValid() )
                    {
                        CloseHandle( m_Handle );
                        m_Handle 
            = INVALID_HANDLE_VALUE;
                    }
                }

                LONGLONG GetSize64() 
            const { return m_nSize.QuadPart;}
                LONGLONG GetPosition64() 
            const { return m_nPosition.QuadPart;}
                LONGLONG SetPosition64( LONGLONG llNewPosition )
                {
                    LONGLONG llOldPosition 
            = m_nPosition.QuadPart;
                    LARGE_INTEGER liNewPosition 
            = { 0 };
                    liNewPosition.QuadPart 
            = llNewPosition;
                    SetFilePointerEx( m_Handle, liNewPosition, NULL, FILE_BEGIN );
                    m_nPosition 
            = liNewPosition;
                    
            return llOldPosition;
                }

                DWORD GetSize() 
            const { return m_nSize.LowPart;}
                DWORD GetPosition() 
            const { return m_nPosition.LowPart; }
                DWORD SetPosition( DWORD dwNewPosition )
                {
                    DWORD dwPos 
            = m_nPosition.LowPart;
                    
            if( dwNewPosition > 0x7fffffff )
                    {
                        SetFilePointer( m_Handle, 
            0x7fffffff, NULL, FILE_BEGIN );
                        SetFilePointer( m_Handle, dwNewPosition 
            - 0x7fffffff, NULL, FILE_BEGIN );
                    }
                    
            else
                        SetFilePointer( m_Handle, dwNewPosition, NULL, FILE_BEGIN );
                    m_nPosition.HighPart 
            = 0;
                    m_nPosition.LowPart 
            = dwNewPosition;
                    
            return dwPos;
                }

                
            bool IsValid() const { return m_Handle != INVALID_HANDLE_VALUE;}
                HANDLE GetHandle() 
            const { return m_Handle;}
            protected:
                LARGE_INTEGER m_nSize;
                LARGE_INTEGER m_nPosition;
                HANDLE m_Handle;
            };


            class CInputFileMapping
            {
            public:
                CInputFileMapping() : m_Handle(NULL) {}
                
            ~CInputFileMapping() {
                    
            if( IsValid() )CloseHandle( m_Handle );
                }

                
            bool Attach( CInputFile & file )
                {
                    m_Handle 
            = CreateFileMapping( file.GetHandle(), NULL, PAGE_READONLY, 00, NULL );
                    
            if!IsValid() )return false;
                    
            return true;
                }

                
            bool IsValid() const { return m_Handle != NULL;}
                HANDLE GetHandle() 
            const { return m_Handle;}
            protected:
                HANDLE m_Handle;
            };



             

            posted on 2009-07-09 09:30 飯中淹 閱讀(309) 評論(0)  編輯 收藏 引用
            久久久久无码专区亚洲av| 亚洲AV日韩精品久久久久| 久久狠狠色狠狠色综合| 91精品国产综合久久四虎久久无码一级| 亚洲国产精品久久久久婷婷老年| 亚洲国产精品狼友中文久久久| 色欲综合久久中文字幕网| 久久国产精品免费| 久久久久AV综合网成人| 精品乱码久久久久久夜夜嗨| 亚洲AV日韩精品久久久久久久| 久久人人爽人人爽人人片AV东京热| 亚洲色大成网站www久久九| 久久93精品国产91久久综合| 久久无码高潮喷水| 久久精品亚洲福利| 韩国三级大全久久网站| 人妻精品久久久久中文字幕一冢本 | 亚洲午夜久久久久久噜噜噜| 亚洲国产成人久久综合碰碰动漫3d| 久久精品aⅴ无码中文字字幕不卡 久久精品成人欧美大片 | 国产99久久久久久免费看| 精产国品久久一二三产区区别| 国产午夜久久影院| 97热久久免费频精品99| 久久久一本精品99久久精品88| 伊人久久综合无码成人网| 久久精品国产久精国产果冻传媒| 久久久久无码中| 色婷婷久久综合中文久久一本| 精品久久久久久国产免费了| 久久国产综合精品五月天| 精品久久久久久国产免费了| 久久精品亚洲男人的天堂| 久久精品亚洲福利| 亚洲七七久久精品中文国产| 欧美亚洲国产精品久久高清| 久久精品国产男包| 精品久久久久久无码中文字幕一区| 久久99精品久久久久久动态图| 国产精品久久久久国产A级|