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

CreateFileMapping 函數

內存映射API函數CreateFileMapping創建一個有名的共享內存:
HANDLE CreateFileMapping(
HANDLE hFile,                                                                        // 映射文件的句柄,
                                                                                                   //設為0xFFFFFFFF以創建一個進程間共享的對象
LPSECURITY_ATTRIBUTES lpFileMappingAttributes,   // 安全屬性
DWORD flProtect,                                                                   // 保護方式
DWORD dwMaximumSizeHigh,                                           //對象的大小
DWORD dwMaximumSizeLow,
LPCTSTR lpName                                                                 // 必須為映射文件命名
);

與虛擬內存類似,保護方式可以是PAGE_READONLY或是PAGE_READWRITE。如果多進程都對同一共享內存進行寫訪問,則必須保持相互間同步。映射文件還可以指定PAGE_WRITECOPY標志,可以保證其原始數據不會遭到破壞,同時允許其他進程在必要時自由的操作數據的拷貝。

在創建文件映射對象后使用可以調用MapViewOfFile函數映射到本進程的地址空間內。

下面說明創建一個名為MySharedMem的長度為4096字節的有名映射文件:
HANDLE hMySharedMapFile=CreateFileMapping((HANDLE)0xFFFFFFFF),
NULL,PAGE_READWRITE,0,0x1000,"MySharedMem");
并映射緩存區視圖:
LPSTR pszMySharedMapView=(LPSTR)MapViewOfFile(hMySharedMapFile,
FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);

其他進程訪問共享對象,需要獲得對象名并調用OpenFileMapping函數。
HANDLE hMySharedMapFile=OpenFileMapping(FILE_MAP_WRITE,
FALSE,"MySharedMem");

一旦其他進程獲得映射對象的句柄,可以象創建進程那樣調用MapViewOfFile函數來映射對象視圖。用戶可以使用該對象視圖來進行數據讀寫操作,以達到數據通訊的目的。

當用戶進程結束使用共享內存后,調用UnmapViewOfFile函數以取消其地址空間內的視圖:
if (!UnmapViewOfFile(pszMySharedMapView))
{

         AfxMessageBox("could not unmap view of file");

 }

//=================================================================================
//                  CreateFileMapping的MSDN翻譯和使用心得
//=================================================================================
測試創建和打開文件映射的時候老是得到"句柄無效"的錯誤, 仔細看了MSDN以后才發覺是函數認識不透, 這里把相關的解釋翻譯出來

HANDLE CreateFileMapping(
  HANDLE hFile,                       //物理文件句柄
  LPSECURITY_ATTRIBUTES lpAttributes, //安全設置
  DWORD flProtect,                    //保護設置
  DWORD dwMaximumSizeHigh,            //高位文件大小
  DWORD dwMaximumSizeLow,             //低位文件大小
  LPCTSTR lpName                      //共享內存名稱
);

1) 物理文件句柄
   任何可以獲得的物理文件句柄, 如果你需要創建一個物理文件無關的內存映射也無妨, 將它設置成為 0xFFFFFFFF(INVALID_HANDLE_VALUE)就可以了.

   如果需要和物理文件關聯, 要確保你的物理文件創建的時候的訪問模式和"保護設置"匹配, 比如: 物理文件只讀, 內存映射需要讀寫就會發生錯誤. 推薦你的物理文件使用獨占方式創建.

   如果使用 INVALID_HANDLE_VALUE, 也需要設置需要申請的內存空間的大小, 無論物理文件句柄參數是否有效, 這樣 CreateFileMapping 就可以創建一個和物理文件大小無關的內存空間給你, 甚至超過實際文件大小, 如果你的物理文件有效, 而大小參數為0, 則返回給你的是一個和物理文件大小一樣的內存空間地址范圍.  返回給你的文件映射地址空間是可以通過復制, 集成或者命名得到, 初始內容為0.

2) 保護設置
   就是安全設置, 不過一般設置NULL就可以了, 使用默認的安全配置. 在win2k下如果需要進行限制, 這是針對那些將內存文件映射共享給整個網絡上面的應用進程使用是, 可以考慮進行限制.

3) 高位文件大小
   弟兄們, 我想目前我們的機器都是32位的東東, 不可能得到超過32位進程所能尋址的私有32位地址空間, 一般還是設置0吧, 我沒有也不想嘗試將它設置超過0的情況.
4) 低位文件大小
   這個還是可以進行設置的, 不過為了讓其他共享用戶知道你申請的文件映射的相關信息, 我使用的時候是在獲得的地址空間頭部添加一個結構化描述信息, 記錄內存映射的大小, 名稱等, 這樣實際申請的空間就比輸入的增加了一個頭信息結構大小了, 我認為這樣類似BSTR的方式應該是比較合理的.

5) 共享內存名稱
   這個就是我今天測試的時候碰壁的禍根, 因為為了對于內存進行互斥訪問, 我設置了一個互斥句柄, 而名稱我選擇和命名共享內存同名, 之下就是因為他們使用共同的namespace導致了錯誤, 呵呵.

7) 調用CreateFileMapping的時候GetLastError的對應錯誤
   ERROR_FILE_INVALID     如果企圖創建一個零長度的文件映射, 應有此報
   ERROR_INVALID_HANDLE   如果發現你的命名內存空間和現有的內存映射, 互斥量, 信號量, 臨界區同名就麻煩了
   ERROR_ALREADY_EXISTS   表示內存空間命名已經存在

8) 相關服務或者平臺的命名保留
   Terminal Services:
   命名可以包含 "Global" 或者 "Local" 前綴在全局或者會話名空間初級文件映射. 其他部分可以包含任何除了()以外的字符, 可以參考 Kernel Object Name Spaces.

   Windows 2000 or later:
   如果 Terminal Services 沒有運行 "Global" 和 "Local" 前綴的特殊含義就被忽略了

posted on 2008-09-11 09:39 wrh 閱讀(1629) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            99xxxx成人网| 久久gogo国模裸体人体| 亚洲精品小视频在线观看| 午夜精品久久久久| 夜夜嗨av色一区二区不卡| 欧美成黄导航| 亚洲精品一区久久久久久| 每日更新成人在线视频| 久久aⅴ乱码一区二区三区| 国产精品一二三| 亚洲欧美国产va在线影院| 一本色道久久综合一区| 免费在线观看日韩欧美| 欧美在线视频日韩| 韩国成人福利片在线播放| 久久免费视频在线观看| 久久成人综合网| 一区久久精品| 欧美激情精品久久久久久蜜臀| 久久综合久久美利坚合众国| 最新中文字幕一区二区三区| 亚洲国产精品久久久久秋霞不卡 | 亚洲激情欧美| 欧美激情一区二区三区高清视频| 欧美v国产在线一区二区三区| 亚洲国产精品ⅴa在线观看 | 亚洲国产成人精品视频| 欧美大色视频| 亚洲欧美日韩精品久久奇米色影视 | 亚洲国产毛片完整版| 欧美激情视频一区二区三区在线播放| 免费久久99精品国产自在现线| 亚洲精品乱码久久久久久黑人| 日韩午夜视频在线观看| 国产麻豆综合| 欧美成人一区二区| 欧美日韩一区二区三区免费看 | 亚洲视频第一页| 国产亚洲成年网址在线观看| 免费在线亚洲欧美| 欧美色视频日本高清在线观看| 久久超碰97人人做人人爱| 久久亚洲综合网| 亚洲一级免费视频| 久久久久www| 亚洲网在线观看| 性欧美精品高清| 日韩视频永久免费| 欧美一区二区三区在线| 亚洲精品乱码久久久久| 亚欧美中日韩视频| 亚洲美女av在线播放| 欧美一区二区视频观看视频| 日韩视频专区| 久久精品女人的天堂av| 亚洲在线电影| 欧美福利精品| 六月婷婷久久| 国产欧美日韩高清| 亚洲裸体在线观看| 在线日韩av| 午夜视频在线观看一区| 这里只有精品电影| 免费在线看一区| 久久影院午夜论| 国产精品视频你懂的| 亚洲激情六月丁香| 极品日韩久久| 欧美在线一区二区| 香蕉视频成人在线观看| 欧美日韩四区| 亚洲人人精品| 亚洲精品视频在线观看免费| 久久全国免费视频| 欧美国产精品久久| 国产欧美日本一区视频| 亚洲高清av| 亚洲第一综合天堂另类专| 亚洲免费小视频| 亚洲新中文字幕| 欧美日韩国产在线播放网站| 欧美高清一区二区| 在线成人h网| 久久久久久久久久码影片| 久久久久久999| 国产午夜精品全部视频在线播放| 在线亚洲观看| 亚洲永久视频| 国产精品v亚洲精品v日韩精品| 亚洲国内自拍| 日韩一区二区精品在线观看| 欧美国产成人精品| 亚洲第一黄色| 亚洲精品久久久一区二区三区| 免费美女久久99| 欧美激情片在线观看| 亚洲精品久久久久久久久久久| 欧美国产日韩一区二区| 亚洲区一区二区三区| 日韩一二在线观看| 欧美日韩精品免费看| 99国产欧美久久久精品| 香蕉av福利精品导航| 国产一区导航| 久久精品国产久精国产一老狼| 快射av在线播放一区| 亚洲人成网站精品片在线观看 | 精品白丝av| 蜜桃久久av| 99视频一区| 久久精品国产69国产精品亚洲| 黑人巨大精品欧美一区二区| 免费观看成人网| 在线视频欧美日韩| 久久久久国产精品一区二区| 亚洲国产精品成人综合| 欧美国产一区二区在线观看| 一区二区三区 在线观看视| 久久超碰97人人做人人爱| 伊人伊人伊人久久| 欧美日韩国产欧| 久久精品99无色码中文字幕| 亚洲国内欧美| 久久国产精品久久久久久| 雨宫琴音一区二区在线| 欧美色大人视频| 久久久久国产免费免费| 亚洲精品中文字幕在线观看| 欧美一区二区视频免费观看| 在线欧美影院| 国产乱码精品1区2区3区| 免费久久99精品国产自| 亚洲在线成人| 亚洲韩国一区二区三区| 欧美在线影院| 妖精视频成人观看www| 国产午夜精品久久久| 欧美另类综合| 久久精品五月婷婷| 99ri日韩精品视频| 蜜臀av在线播放一区二区三区| 亚洲一区二区三区中文字幕在线| 伊人久久亚洲热| 亚洲欧美日韩精品在线| 欧美超级免费视 在线| 亚洲欧美国产制服动漫| 亚洲啪啪91| 激情欧美一区| 国产精品中文在线| 欧美人成免费网站| 老司机午夜免费精品视频 | 欧美婷婷在线| 欧美成人精品高清在线播放| 久久精品国产欧美激情| 亚洲欧美精品suv| 亚洲每日在线| 亚洲激情网站免费观看| 美女脱光内衣内裤视频久久影院 | 99国产精品99久久久久久粉嫩| 国内一区二区三区| 国产美女精品在线| 欧美午夜精品久久久久免费视| 欧美国产精品va在线观看| 久久夜色精品国产欧美乱| 欧美一级免费视频| 性一交一乱一区二区洋洋av| 亚洲手机视频| 亚洲一区视频在线| 一区二区三区视频在线观看 | 免费观看日韩| 麻豆精品精华液| 久久一区二区三区av| 久久免费少妇高潮久久精品99| 午夜精品婷婷| 久久爱另类一区二区小说| 欧美中文字幕不卡| 久久精品首页| 狼狼综合久久久久综合网| 久久亚洲视频| 免费在线欧美视频| 欧美精品一卡二卡| 欧美日韩黄色大片| 国产精品激情| 国产人成一区二区三区影院| 国产日韩在线不卡| 国产在线日韩| 最新亚洲视频| 一区二区毛片| 亚洲欧美成人一区二区三区| 欧美一区二区三区视频免费| 久久久久久久综合色一本| 老司机免费视频一区二区| 亚洲国产精彩中文乱码av在线播放| 欧美国产日韩在线观看| 亚洲精品一区二区三区蜜桃久 | 国产精品亚洲综合| 国产在线乱码一区二区三区| 亚洲高清视频在线| 一区二区欧美精品| 久久成人一区二区|