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

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| 一区二区三区日韩| 国产日产欧美一区| 欧美电影免费观看网站| 欧美视频一区二区在线观看| 亚洲欧美日韩系列| 久久久久久久久久看片| 亚洲精品一区二区三区蜜桃久| 9l国产精品久久久久麻豆| 亚洲网站在线观看| 免费永久网站黄欧美| 在线一区二区三区四区| 午夜精品久久久久久| 亚洲国产精品久久久久秋霞蜜臀 | 猛男gaygay欧美视频| 亚洲桃色在线一区| 久久激情五月丁香伊人| 亚洲人成网站777色婷婷| 亚洲在线观看免费视频| 亚洲激情电影中文字幕| 亚洲欧美中文在线视频| 亚洲美女色禁图| 欧美在线中文字幕| 亚洲天堂av图片| 久热这里只精品99re8久| 亚洲综合首页| 欧美国产日本高清在线| 久久蜜臀精品av| 国产精品久久久久99| 亚洲高清自拍| 国产伊人精品| 亚洲伊人久久综合| 久久中文字幕一区| 国产精品久久久久久久午夜片| 亚洲精品系列| 久久久久一区二区三区| 午夜精品在线观看| 欧美日韩999| 欧美激情区在线播放| 韩国av一区二区三区在线观看| 亚洲图片你懂的| 亚洲一卡二卡三卡四卡五卡| 国产精品久久久久久久久久尿| 国外成人在线| 欧美jizzhd精品欧美喷水| 国产日产亚洲精品| 亚洲小视频在线| 在线一区二区三区做爰视频网站| 欧美激情精品久久久久久免费印度 | 日韩亚洲精品视频| 亚洲精品国产系列| 久久国产免费看| 亚洲国产精彩中文乱码av在线播放| 国产欧美日韩在线视频| 亚洲自拍偷拍麻豆| 先锋影音久久久| 国产精品综合不卡av| 午夜精品一区二区三区在线| 欧美中在线观看| 国产综合一区二区| 久久久国产精品一区二区中文| 久久精品视频免费播放| 国产一区二区三区不卡在线观看 | 一区二区三区日韩欧美| 亚洲网址在线| 国产美女一区二区| 久久精品五月婷婷| 欧美高清成人| 99这里只有精品| 国产精品视频在线观看| 久久成人精品电影| 国产精品美女久久久免费| 99热在这里有精品免费| 亚洲人成在线观看一区二区| 欧美视频第二页| 久久久久久一区二区三区| 欧美sm视频| 先锋亚洲精品| 久久综合久久88| 国产偷国产偷精品高清尤物| 亚洲日本欧美在线| 国产欧美日韩精品一区| 欧美制服第一页| 亚洲国产精品福利| 亚洲午夜高清视频| 国内精品嫩模av私拍在线观看| 免费观看日韩av| 亚洲图片在线| 欧美福利一区| 欧美成人午夜激情在线| 久久aⅴ乱码一区二区三区| 裸体歌舞表演一区二区| 亚洲第一黄网| 91久久嫩草影院一区二区| 亚洲国产一区在线| 午夜精品视频在线| 亚洲精品小视频| 欧美日韩一区二区三区免费| 国产精品v亚洲精品v日韩精品| 午夜亚洲影视| 亚洲精品日韩精品| 免费国产自线拍一欧美视频| 亚洲免费一在线| 日韩网站在线观看| 精品91免费| 国产精品视频精品视频| 欧美激情中文字幕一区二区| 久久激情综合网| 久久精品国产96久久久香蕉| 99精品欧美一区二区三区| 久久久久久久综合日本| 亚洲午夜精品视频| 亚洲人精品午夜在线观看| 国产精品一区二区a| 欧美日韩一二三四五区| 免费欧美在线视频| 久久精品国产综合| 欧美一区二区三区久久精品茉莉花| 日韩午夜免费视频| 亚洲精品一区二区在线观看| 欧美激情精品久久久久| 蜜桃av久久久亚洲精品| 久久精品伊人| 久久久久国产一区二区| 欧美一区午夜精品| 欧美一区二区大片| 久久精品国产精品亚洲综合| 欧美一级专区免费大片| 欧美一区二区在线免费播放| 久久er精品视频| 欧美一区二区高清在线观看| 校园激情久久| 久久精品一区二区| 欧美激情一区二区三区全黄 | 欧美一级大片在线观看| 亚洲欧美国产精品桃花| 欧美亚洲一区二区三区| 性做久久久久久免费观看欧美| 亚洲中午字幕| 欧美中文日韩| 美日韩精品视频免费看| 亚洲国产成人91精品| 最新中文字幕亚洲| 一区二区高清视频| 午夜精品福利在线| 久久人人97超碰精品888| 蜜桃av综合| 欧美精品一区二区视频 | 欧美日韩中文在线观看| 国产乱码精品一区二区三| 国模一区二区三区| 亚洲看片网站| 午夜久久一区| 久久永久免费| 国产专区综合网| 亚洲人体大胆视频| 国产在线不卡| 亚洲国产一区二区三区高清| 一区二区欧美国产| 久久xxxx精品视频| 亚洲国产精品热久久| 亚洲自拍电影| 嫩草伊人久久精品少妇av杨幂| 欧美日韩亚洲一区二区三区在线| 国产精品视频网| 亚洲人成在线观看| 欧美亚洲一级| 亚洲日本中文字幕区| 欧美在线观看网址综合| 欧美a级一区| 国产亚洲成精品久久| 欧美一区二区三区免费看| 亚洲第一精品影视| 这里是久久伊人| 另类综合日韩欧美亚洲| 欧美亚男人的天堂| 亚洲韩国精品一区| 午夜在线精品偷拍| 亚洲缚视频在线观看| 欧美一区二区三区另类| 欧美午夜www高清视频| 久久网站免费| 欧美日韩午夜剧场| 国产精品久久久久永久免费观看 | 久久一综合视频| 国产精品久久97| 亚洲日本成人| 久久精品夜色噜噜亚洲a∨| 亚洲靠逼com|