青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

對Windows下的File Mapping一個簡單的封裝

頭文件:
#ifndef __SharedMemory_H__
#define __SharedMemory_H__


class SharedMemory
{
public:
    
/// 訪問模式
    enum AccessMode
    
{
        AM_READ 
= 0,    ///< 讀
        AM_WRITE        ///< 寫
    };


public:
    SharedMemory(
const std::string& name, std::size_t size, AccessMode mode, const void* addrHint = 0bool server = true);
    SharedMemory(
const std::string& fileName, SharedMemory::AccessMode mode, const void* addrHint = 0);
    
~SharedMemory();

public:
    
/// 共享內存的起始指針
    char* begin() const;

    
/// 共享內存的尾部指針
    char* end() const;

    
/// 共享內存的名字
    std::string name() const;

protected:
    
void map();

    
void unmap();

    
void close();

private:
    SharedMemory();
    SharedMemory(
const SharedMemory&);
    SharedMemory
& operator = (const SharedMemory&);

    std::
string    m_name;
    HANDLE        m_memHandle;
    HANDLE        m_fileHandle;
    DWORD        m_size;
    DWORD        m_mode;
    
char*        m_address;
}
;


inline 
char* SharedMemory::begin() const
{
    
return m_address;
}


inline 
char* SharedMemory::end() const
{
    
return m_address + m_size;
}


inline std::
string SharedMemory::name() const

    
return m_name; 
}



#endif

實現文件

#include 
"stdafx.h"
#include 
"SharedMemory.h"

SharedMemory::SharedMemory(
const std::string& name, 
                           std::size_t size, 
                           SharedMemory::AccessMode mode, 
                           
const void* addrHint, 
                           
bool)
                           : m_name(name)
                           , m_memHandle(INVALID_HANDLE_VALUE)
                           , m_fileHandle(INVALID_HANDLE_VALUE)
                           , m_size(static_cast
<DWORD>(size))
                           , m_mode(PAGE_READONLY)
                           , m_address(
0)
{
    
if (mode == SharedMemory::AM_WRITE)
    
{
        m_mode 
= PAGE_READWRITE;
    }


    m_memHandle 
= ::CreateFileMapping(INVALID_HANDLE_VALUE,
        NULL, 
        m_mode, 
        
0
        m_size, 
        m_name.c_str());

    
if (!m_memHandle)
    
{
        
//throw SystemException("Cannot create shared memory object", m_name);
    }


    map();
}


SharedMemory::SharedMemory( 
const std::string& fileName, AccessMode mode, const void* addrHint )
: m_name(fileName)
, m_memHandle(INVALID_HANDLE_VALUE)
, m_fileHandle(INVALID_HANDLE_VALUE)
, m_size(
0)
, m_mode(PAGE_READONLY)
, m_address(
0)
{
    DWORD shareMode 
= FILE_SHARE_READ;
    DWORD fileMode  
= GENERIC_READ;

    
if (mode == SharedMemory::AM_WRITE)
    
{
        m_mode 
= PAGE_READWRITE;
        fileMode 
|= GENERIC_WRITE;
    }


    m_fileHandle 
= ::CreateFile(m_name.c_str(), 
        fileMode, 
        shareMode,
        NULL,
        OPEN_EXISTING, 
        FILE_ATTRIBUTE_NORMAL,
        NULL);
    
if (m_fileHandle == INVALID_HANDLE_VALUE)
    
{
        
//throw OpenFileException("Cannot open memory mapped file", m_name);
        return;
    }


    m_size 
= ::GetFileSize(m_fileHandle, NULL);

    m_memHandle 
= ::CreateFileMapping(m_fileHandle, NULL, m_mode, 00, NULL);
    
if (!m_memHandle)
    
{
        ::CloseHandle(m_fileHandle);
        m_fileHandle 
= INVALID_HANDLE_VALUE;
        
//throw SystemException("Cannot map file into shared memory", m_name);
    }

    map();
}


SharedMemory::
~SharedMemory()
{
    unmap();
    close();
}


void SharedMemory::map()
{
    DWORD access 
= FILE_MAP_READ;
    
if (m_mode == PAGE_READWRITE)
    
{
        access 
= FILE_MAP_WRITE;
    }

    LPVOID addr 
= ::MapViewOfFile(m_memHandle, access, 00, m_size);
    
if (!addr)
    
{
        
//throw SystemException("Cannot map shared memory object", m_name);
    }


    m_address 
= static_cast<char*>(addr);
}


void SharedMemory::unmap()
{
    
if (m_address)
    
{
        ::UnmapViewOfFile(m_address);
        m_address 
= 0;
        
return;
    }

}


void SharedMemory::close()
{
    
if (m_memHandle != INVALID_HANDLE_VALUE)
    
{
        ::CloseHandle(m_memHandle);
        m_memHandle 
= INVALID_HANDLE_VALUE;
    }


    
if (m_fileHandle != INVALID_HANDLE_VALUE)
    
{
        ::CloseHandle(m_fileHandle);
        m_fileHandle 
= INVALID_HANDLE_VALUE;
    }

}


示例代碼
    LPCTSTR szFilePath = TEXT("E:\xxx.zip");
    SharedMemory sharedMemory(szFilePath, SharedMemory::AM_READ);
    
char* pFileBegin = sharedMemory.begin();

posted on 2014-02-25 00:29 楊粼波 閱讀(1037) 評論(0)  編輯 收藏 引用 所屬分類: C++Windows

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品户外野外| 一区二区三区免费在线观看| 激情欧美一区二区三区在线观看 | 免费在线视频一区| 久久综合中文字幕| 亚洲国产欧美精品| 亚洲国产精品久久久久婷婷884 | 欧美日韩免费高清| 国产精品女同互慰在线看| 国产精品久久久久久五月尺| 国产午夜精品全部视频在线播放| 禁断一区二区三区在线 | 久久精品国产69国产精品亚洲| 久久久久久久一区二区| 亚洲国产精品va在线看黑人| 日韩一级在线| 欧美一区影院| 欧美国产日韩视频| 国产日韩欧美综合一区| 亚洲精品欧美在线| 久久在线视频| 欧美成人精品高清在线播放| 亚洲第一黄色| 一区二区免费在线视频| 欧美在线在线| 欧美日韩另类综合| 在线观看91久久久久久| 亚洲一级电影| 欧美成人免费全部观看天天性色| 一区二区三区欧美激情| 久久一区中文字幕| 国产精品欧美精品| 最近中文字幕日韩精品| 香蕉久久精品日日躁夜夜躁| 亚洲福利视频免费观看| 性欧美xxxx大乳国产app| 欧美日本亚洲韩国国产| 狠狠做深爱婷婷久久综合一区| 99视频精品| 欧美成在线视频| 午夜在线一区二区| 国产精品sss| 亚洲精品日韩久久| 免费看亚洲片| 久久国产婷婷国产香蕉| 国产精品视频| 亚洲一区黄色| 亚洲巨乳在线| 欧美高清一区| 免费在线欧美黄色| 这里只有精品视频| 欧美激情第10页| 亚洲黄色尤物视频| 免费观看成人网| 亚洲欧美视频一区| 国产精品久久久久久久久免费樱桃| 日韩视频中文字幕| 亚洲激情视频在线| 欧美电影专区| 最近中文字幕日韩精品 | 亚洲黄色在线视频| 欧美成人激情在线| 最新成人av在线| 欧美激情欧美激情在线五月| 裸体歌舞表演一区二区| 亚洲第一天堂av| 欧美激情亚洲综合一区| 快射av在线播放一区| 亚洲国产精品久久精品怡红院 | 99精品国产在热久久下载| 亚洲高清二区| 欧美日韩国产另类不卡| 亚洲伊人第一页| 亚洲在线免费视频| 狠狠色狠狠色综合日日五| 免费视频久久| 久久久久在线观看| 久久久久久噜噜噜久久久精品 | 欧美阿v一级看视频| 亚洲激情欧美| 99国产麻豆精品| 国产精品国产三级国产aⅴ入口| 午夜精品久久久久久久久久久久久| 一区二区三区欧美视频| 国产一区二区福利| 欧美国产日韩一区| 欧美日韩亚洲三区| 欧美制服丝袜| 美国十次成人| 亚洲综合欧美日韩| 久久久久一区二区| 亚洲视频欧美在线| 久久福利视频导航| 夜夜嗨av一区二区三区免费区| 国产精品99久久久久久久久| 韩国成人精品a∨在线观看| 亚洲高清三级视频| 国产精品视频久久久| 免费亚洲一区二区| 国产精品国产a级| 欧美成人影音| 国产精品日韩欧美综合| 欧美黄色精品| 国产日韩在线不卡| 亚洲精品三级| 在线成人小视频| 亚洲视频图片小说| 亚洲黄一区二区三区| 午夜视频一区| 亚洲小说欧美另类社区| 麻豆成人精品| 久久久久久久999| 欧美日韩一区二区三区在线视频| 麻豆91精品91久久久的内涵| 国产精品毛片| 亚洲精品视频中文字幕| 在线观看国产一区二区| 亚洲综合色噜噜狠狠| 欧美国产成人在线| 国产欧美一区二区三区在线老狼| 91久久香蕉国产日韩欧美9色 | 国产区日韩欧美| 亚洲精品在线免费观看视频| 狠狠综合久久av一区二区小说| 在线亚洲欧美视频| 一区二区黄色| 欧美激情中文字幕一区二区| 久久在线视频在线| 狠狠干综合网| 久久久久99| 久久久久久69| 国产偷国产偷精品高清尤物| 亚洲一区二区三区精品在线观看| 亚洲美女黄网| 欧美高清一区| 亚洲国产欧美在线 | 久久av红桃一区二区小说| 久久久91精品国产一区二区三区 | 欧美激情aⅴ一区二区三区| 欧美日韩一区二区在线| 欧美成人tv| 国产自产高清不卡| 午夜精品久久久久久久久久久久| 欧美一区在线看| 国产日韩欧美夫妻视频在线观看| 在线视频一区观看| 欧美一区=区| 国产视频一区二区三区在线观看| 欧美亚洲一区二区在线| 久久久久欧美精品| 在线观看亚洲专区| 噜噜噜91成人网| 亚洲黄色毛片| 在线亚洲免费| 国产精品视频九色porn| 午夜精品久久| 久久精品日韩| 影音先锋亚洲电影| 欧美大片一区| 日韩香蕉视频| 亚洲欧美日韩精品久久亚洲区 | 欧美aⅴ一区二区三区视频| 亚洲国产一区视频| 欧美日韩亚洲一区三区| 亚洲欧美激情四射在线日| 久久久久久亚洲精品杨幂换脸| 伊人久久综合97精品| 欧美精选在线| 欧美伊人久久久久久久久影院 | 亚洲欧洲精品成人久久奇米网| 亚洲午夜av在线| 国产一区二区三区免费在线观看 | 免费不卡视频| 99视频在线精品国自产拍免费观看| 欧美日在线观看| 久久久精品性| 亚洲性夜色噜噜噜7777| 鲁大师成人一区二区三区| 亚洲午夜一二三区视频| 在线观看成人av电影| 欧美私人啪啪vps| 久久免费国产| 亚洲欧美国产毛片在线| 亚洲福利视频一区| 久久久久久电影| 亚洲综合日韩在线| 亚洲六月丁香色婷婷综合久久| 国产区精品视频| 欧美视频日韩| 欧美国产日韩a欧美在线观看| 久久成年人视频| 99成人在线| 欧美激情欧美激情在线五月| 欧美伊人久久久久久久久影院| 亚洲精品影视| 狠狠色综合网| 国产日韩欧美综合| 国产精品久久久久久久久久久久| 欧美大片网址| 亚洲综合国产|