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

concentrate on c/c++ related technology

plan,refactor,daily-build, self-discipline,

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  37 Posts :: 1 Stories :: 12 Comments :: 0 Trackbacks

常用鏈接

留言簿(9)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

進程1:

#define BUF_SIZE 256
char fileMapObjectName[] = "FileMappingObject";
class Sample
{
public:
 void set_x(int x){this->xx = x;}
 int get_x(){return this->xx;}
 Sample(){}
private:
 int xx;
};

class EmulatorWindow
{
public:
 void set_ew(Sample s){this->sample = s;}
 Sample get_ew(){return this->sample;}
 EmulatorWindow(){}
private:
 Sample sample;
};

int main()
{
 HANDLE fileMap = CreateFileMapping(
  (HANDLE)0xFFFFFFFF,
  NULL,
  PAGE_READWRITE,
  0,
  BUF_SIZE,
  fileMapObjectName);
 if (NULL == fileMap || GetLastError() == ERROR_ALREADY_EXISTS)
 {
  printf("create file mapping fails! the error code is (%d)",GetLastError());
  return 0;
 }
 Sample s;
 s.set_x(112);
 EmulatorWindow* buffer = (EmulatorWindow*)MapViewOfFile(
  fileMap,
  FILE_MAP_ALL_ACCESS,
  0,
  0,
  BUF_SIZE);
 if (NULL == buffer)
 {
  printf("mapping view of file fails! the error code is (%d)",GetLastError());
  return 1;
 }

 EmulatorWindow ew;
 ew.set_ew(s);

 CopyMemory(buffer,&ew,BUF_SIZE);
 getchar();

 FlushViewOfFile(fileMap,BUF_SIZE);

 UnmapViewOfFile(buffer);
 buffer = NULL;

 CloseHandle(fileMap);
 fileMap = NULL;
 
 return 2;
}  
進程2:
#define BUF_SIZE 256
char fileMapObjectName[] = "FileMappingObject";

class Sample
{
public:
 void set_x(int x){this->xx = x;}
 int get_x(){return this->xx;}
 Sample(){}
private:
 int xx;
};

class EmulatorWindow
{
public:
 void set_ew(Sample s){this->sample = s;}
 Sample get_ew(){return this->sample;}
 EmulatorWindow(){}
private:
 Sample sample;
};

int main()
{
 HANDLE fileMap = OpenFileMapping(
  FILE_MAP_ALL_ACCESS,
  TRUE,
  fileMapObjectName);
 if (NULL == fileMap)
 {
  printf("opening file mapping fails! the error code is (%d)",GetLastError());
  return 0;
 }
  
 EmulatorWindow* sharedMemory = (EmulatorWindow*)MapViewOfFile(
  fileMap,
  FILE_MAP_ALL_ACCESS,
  0,
  0,
  0);
 if (NULL == sharedMemory )
 {
  printf("mapping view of file fails! the error code is (%d)",GetLastError());
  return 1;
 }

 Sample s = sharedMemory->get_ew();
 int x = s.get_x();

 char buffer[100];
 memset(buffer,0,100);
 sprintf(buffer,"message box is:(%d)",x);
 MessageBox(NULL,buffer,NULL,MB_OK);

 UnmapViewOfFile(sharedMemory);
 sharedMemory = NULL;

 CloseHandle(fileMap);
 fileMap = NULL;

 return 3;

}
1)
這是兩個比較簡單的文件映射例子,其中進程1為源進程,而進程2為目的進程。進程1與進程2進行通信,并且共享一個窗口對象,記得在游戲里面會有很多窗口對象的,因此,在與游戲進行通信的時候就可以共享窗口對象。前段時間在做自動化測試的時候,就經常要與客戶端進行一些交互操作,比如,獲得某個窗口的按鈕狀態,以及文本的信息等,不過這樣做的代價是兩個進程要共享一部分頭文件,起碼像我兩個進程里面都用到了兩段相同的頭文件代碼,不然可能就出現某個窗口對象或者控件對象未聲明或者未定義。

2)
另外值得說明的是進程1里面的getchar()用法,很多時候,這個用來延遲操作,并且防止運行過快,特別是在很簡單的結果輸出中,結果會一閃而過,這個時候getchar就起作用了。這里的getchar所起的作用也是延遲的,不過如果將這個getchar()去掉的話,那么你就很可能得到GetLastError()錯誤代碼為2。ERROR_FILE_NOT_FOUND.這個原因是在建立文件對象以后,沒有一段時間緩沖的話,那么進程2有可能找不到在進程空間里面的文件映射,因此就會說ERROR_FILE_NOT_FOUND的錯誤。

3)
之前認為共享內存嘛,應該是可以共享任何對象的,但是我在共享一個deque的時候,發現錯了,后來才發現文件映射不能共享指針的,deque是STL的一個序列式容器,而其內部都是一系列的指針組成的,后來在msdn上面發現了一段這樣的話,很震驚:

Do not store pointers in the memory mapped file; store offsets from the base of the file mapping so that the mapping can be used at any address.
可以共享的是非指針的用戶自定義類型, 以及內建類型等,不包括含有指針的各種類型。


   


 

posted on 2008-04-24 17:04 jolley 閱讀(1441) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩成人网| 亚洲开发第一视频在线播放| 国产午夜一区二区三区| 亚洲男人的天堂在线| 一区二区久久久久久| 一个色综合av| 一区二区三区欧美在线| 国产精品99久久99久久久二8| 99精品欧美一区二区蜜桃免费| 中日韩美女免费视频网站在线观看| 亚洲天堂视频在线观看| 久久精品一区二区三区不卡| 美女脱光内衣内裤视频久久网站| 亚洲大胆女人| 欧美激情第4页| 亚洲日本成人女熟在线观看| 一二美女精品欧洲| 久久se精品一区二区| 欧美成人自拍视频| 国产精品视频第一区| 国产一区自拍视频| 日韩视频在线观看| 欧美在线观看天堂一区二区三区 | 国产乱码精品| 91久久久在线| 久久电影一区| 日韩午夜激情av| 久久免费观看视频| 国产精品xxxxx| 在线观看福利一区| 午夜国产欧美理论在线播放| 牛牛国产精品| 午夜精品福利视频| 欧美—级a级欧美特级ar全黄| 国产一区二区中文| 亚洲一区二区三区免费在线观看 | 欧美国产精品v| 国产视频在线一区二区| 亚洲午夜国产成人av电影男同| 久久久噜噜噜久噜久久| 亚洲天堂av电影| 欧美日韩国产在线看| 在线免费观看视频一区| 欧美中文在线观看国产| 99视频热这里只有精品免费| 一卡二卡3卡四卡高清精品视频| 久久国产精品99精品国产| 99精品免费| 欧美精品粉嫩高潮一区二区| 精品1区2区3区4区| 久久成人av少妇免费| 日韩一级视频免费观看在线| 欧美大学生性色视频| 亚洲第一页中文字幕| 免费在线观看精品| 欧美激情一二区| 久久综合久色欧美综合狠狠| 一本色道久久88综合日韩精品| 免费日韩一区二区| 亚洲成人资源网| 老司机午夜免费精品视频| 欧美一区二区三区在线看| 国产精品一区二区三区久久久| 亚洲在线一区二区| 亚洲图片欧洲图片av| 国产精品超碰97尤物18| 亚洲——在线| 亚洲小视频在线观看| 国产精品久久久一区麻豆最新章节| 亚洲视频碰碰| 亚洲永久免费| 国色天香一区二区| 蜜桃av噜噜一区| 欧美99久久| 亚洲视频免费| 午夜精品99久久免费| 精品白丝av| 欧美成人在线影院| 免费一级欧美片在线播放| 日韩午夜激情| 亚洲天堂偷拍| 国内精品美女av在线播放| 欧美成人高清视频| 欧美日韩视频在线第一区| 亚洲欧美精品伊人久久| 久久国产一区| 亚洲美女中文字幕| 亚洲一区亚洲二区| 亚洲黄色一区二区三区| 亚洲日本va午夜在线电影| 国产精品手机在线| 欧美国产视频在线观看| 欧美日韩中文字幕在线视频| 久久精品国产v日韩v亚洲 | 亚洲自拍三区| 欧美一区二区视频观看视频| 亚洲人午夜精品免费| 亚洲一区二区精品视频| 亚洲国产女人aaa毛片在线| 一区二区三区成人| 亚洲第一区在线观看| 一本色道久久综合精品竹菊| 精品成人一区| 亚洲欧美日韩成人| 欧美大片91| 欧美一区二区三区在线看| 麻豆精品精品国产自在97香蕉| 亚洲综合第一页| 欧美激情二区三区| 久久一区中文字幕| 国产精品视频xxxx| 亚洲精品中文在线| 亚洲国产婷婷| 久久精品亚洲乱码伦伦中文| 亚洲永久在线| 欧美日本免费| 亚洲国产欧洲综合997久久| 国产一区二区三区黄| 一区二区免费在线观看| 亚洲人成网站色ww在线| 久久久青草青青国产亚洲免观| 亚洲一区精彩视频| 欧美伦理91i| 亚洲国产精品日韩| 一区二区在线观看视频在线观看| 午夜国产精品视频免费体验区| 亚洲视频欧美在线| 欧美日韩在线视频一区二区| 亚洲国产精品www| 亚洲国产精品精华液2区45| 亚洲欧美日韩网| 欧美伊人精品成人久久综合97 | 欧美视频专区一二在线观看| 亚洲国产成人久久综合| 在线日韩av片| 久久午夜激情| 母乳一区在线观看| 亚洲国产精品高清久久久| 欧美大片国产精品| 日韩视频精品在线| 亚洲素人在线| 国产精品欧美久久久久无广告| 亚洲视屏一区| 久久精品视频免费播放| 国产自产高清不卡| 久久一区二区视频| 亚洲成色最大综合在线| 夜夜精品视频一区二区| 欧美日韩视频专区在线播放 | 国产精品久在线观看| 99视频+国产日韩欧美| 亚洲在线第一页| 国产一区二区av| 媚黑女一区二区| 亚洲精品国产品国语在线app| 一区二区三区视频观看| 国产精品亚洲综合| 久久久久久久欧美精品| 亚洲国产精品一区二区久| 一区二区欧美日韩| 国产美女精品免费电影| 久久国产福利| 亚洲欧洲精品一区二区| 亚欧成人精品| 亚洲东热激情| 欧美午夜电影在线| 久久久久一区| 国产精品午夜视频| 亚洲二区在线视频| 亚洲午夜黄色| 国产综合av| 欧美精品一区二区三区在线看午夜 | 国产精品夫妻自拍| 午夜欧美理论片| 亚洲国产老妈| 欧美一区二视频| 亚洲九九精品| 国内精品美女在线观看| 欧美午夜寂寞影院| 久久亚洲不卡| 亚洲资源av| 亚洲人成网在线播放| 一区二区三区在线视频播放| 欧美国产高清| 久久久久久久999精品视频| 亚洲日韩视频| 免费观看亚洲视频大全| 亚洲一区二区在| 亚洲欧洲日本在线| 国产亚洲欧美日韩日本| 欧美日韩综合网| 日韩亚洲国产欧美| 免费观看一级特黄欧美大片| 亚洲欧美日韩在线| 一本到12不卡视频在线dvd| 黑人极品videos精品欧美裸| 国产精品成av人在线视午夜片| 欧美大片免费观看在线观看网站推荐| 欧美一级片久久久久久久| 在线亚洲成人|