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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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 楊粼波 閱讀(1033) 評論(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>
            欧美高清视频在线播放| 亚洲国产精品久久| 久久精品国产99国产精品| 亚洲自拍偷拍麻豆| 亚洲欧美视频| 久久av一区二区三区| 久久久精品视频成人| 久久亚洲欧美国产精品乐播| 免费亚洲婷婷| 国产精品swag| 国产手机视频精品| 在线不卡免费欧美| 一区二区三区精品视频| 亚洲欧美日韩一区在线| 老司机午夜精品视频| 久久全国免费视频| 亚洲第一色中文字幕| 亚洲精品视频在线观看免费| 亚洲一区二区在线| 美女视频黄 久久| 欧美日韩高清在线观看| 国产视频一区免费看| 亚洲美女视频在线观看| 欧美一级免费视频| 亚洲国产岛国毛片在线| 亚洲在线电影| 免费在线观看精品| 国产精品久久久久久模特| 国产综合亚洲精品一区二| 日韩一区二区精品| 久久网站热最新地址| 日韩一二三区视频| 老司机午夜精品| 国产精品亚洲片夜色在线| 亚洲日本欧美在线| 久久久青草婷婷精品综合日韩 | 欧美亚洲尤物久久| 亚洲国产精品va在线观看黑人| 亚洲综合精品四区| 欧美精品国产| 亚洲国产日韩欧美在线99| 午夜免费在线观看精品视频| 最新亚洲一区| 免费国产一区二区| 影视先锋久久| 久久久999精品免费| 一本色道久久综合狠狠躁篇的优点 | 欧美大片在线看| 亚洲私人黄色宅男| 欧美精品一区二区三区蜜桃 | 蜜臀av一级做a爰片久久| 国产一区二区看久久| 亚洲女同精品视频| 在线视频一区观看| 国产精品国产三级国产普通话99| 亚洲精品中文字幕在线| 欧美国产日韩一区二区三区| 欧美在现视频| 国产有码在线一区二区视频| 久久av老司机精品网站导航| 中文国产亚洲喷潮| 亚洲一区二区影院| 一区二区三区视频在线| 亚洲精品久久久久中文字幕欢迎你| 久久蜜臀精品av| 伊人久久综合| 欧美激情网友自拍| 欧美精品在线观看91| 一区二区三区产品免费精品久久75 | 欧美日韩另类视频| 亚洲少妇中出一区| 亚洲视频视频在线| 国产日本欧美一区二区| 久久久久久久999精品视频| 久久久精品一区二区三区| 亚洲第一福利在线观看| 亚洲国产高清高潮精品美女| 欧美激情区在线播放| 亚洲一区免费看| 欧美一区二区三区四区在线观看| 国产综合色一区二区三区| 蜜臀a∨国产成人精品| 欧美h视频在线| 亚洲性xxxx| 欧美一级午夜免费电影| 亚洲国产一区视频| 一区二区三区日韩在线观看| 国产一区二区三区久久精品| 欧美高清视频一区二区三区在线观看 | 日韩一级在线| 国产亚洲欧美一区| 亚洲国产精品精华液网站| 国产精品成人在线观看| 久久全国免费视频| 欧美午夜欧美| 欧美成在线视频| 国产精品久久久久久久久免费樱桃 | 国内精品一区二区| 亚洲国产小视频| 国产无一区二区| 亚洲欧洲一区二区三区在线观看 | 午夜精彩视频在线观看不卡 | 含羞草久久爱69一区| 久久人人爽人人爽爽久久| 亚洲欧美日韩精品| 久久阴道视频| 欧美在线免费观看| 欧美人与性禽动交情品 | 欧美日韩国产综合网| 久久精品国产一区二区三区| 欧美激情欧美激情在线五月| 久久久久.com| 国产精品久久波多野结衣| 亚洲风情亚aⅴ在线发布| 国产亚洲视频在线观看| 亚洲午夜日本在线观看| a4yy欧美一区二区三区| 久久综合免费视频影院| 久久精品首页| 国产精品一区视频| 亚洲午夜精品久久久久久app| 亚洲三级国产| 老色批av在线精品| 久久伊人亚洲| 狠狠色2019综合网| 欧美夜福利tv在线| 欧美一区二区三区日韩| 国产精品国产a级| 亚洲精品日产精品乱码不卡| 亚洲激情成人网| 美女视频黄免费的久久| 老牛嫩草一区二区三区日本| 国产日韩欧美亚洲| 小黄鸭精品密入口导航| 欧美一区影院| 国产亚洲欧美一级| 欧美在线播放高清精品| 久久九九99| 激情亚洲网站| 欧美a级大片| 日韩视频一区| 亚洲欧美日韩国产一区二区三区 | 欧美r片在线| 亚洲开发第一视频在线播放| av成人免费观看| 国产精品草草| 西瓜成人精品人成网站| 久久理论片午夜琪琪电影网| 国产欧美精品日韩| 久久久久久久综合| 亚洲国产91色在线| 亚洲色图自拍| 国产麻豆综合| 久久久一本精品99久久精品66| 欧美大成色www永久网站婷| 亚洲美女一区| 国产精品自在欧美一区| 久久黄色级2电影| 亚洲高清久久久| 亚洲一级黄色| 激情久久久久| 欧美二区不卡| 亚洲欧美日韩系列| 麻豆国产精品777777在线| 亚洲精选久久| 国产精品亚洲成人| 麻豆精品在线视频| 亚洲视频一区二区| 国产日韩欧美亚洲一区| 欧美国产乱视频| 国产精品99久久久久久宅男 | 国产精品一区视频| 久久亚洲国产精品一区二区| 亚洲国产精品传媒在线观看 | 亚洲福利在线看| 亚洲欧美色一区| 怡红院精品视频| 欧美私人网站| 久久午夜精品一区二区| 宅男噜噜噜66一区二区| 男女精品视频| 久久成人精品| 亚洲婷婷免费| 91久久精品一区二区别| 国产日本欧美一区二区三区在线| 欧美xxxx在线观看| 久久精品国产亚洲a| 亚洲午夜精品久久久久久浪潮 | 久久精品国产亚洲一区二区| 亚洲欧洲久久| 欧美 日韩 国产在线| 久久国产色av| 亚洲综合不卡| 一区二区三区精品久久久| 又紧又大又爽精品一区二区| 国产精品亚洲片夜色在线| 欧美日韩免费观看一区二区三区| 久久视频在线免费观看| 欧美一级视频免费在线观看| 亚洲色图制服丝袜|