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

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 閱讀(1626) 評論(0)  編輯 收藏 引用

導航

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統計

常用鏈接

留言簿(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>
            蜜桃久久av一区| 亚洲激情在线播放| 韩国av一区| 国产伦精品一区二区三区在线观看| 欧美日韩精品伦理作品在线免费观看| 欧美电影免费观看高清| 欧美不卡高清| 欧美无砖砖区免费| 国产亚洲成年网址在线观看| 国产一区在线免费观看| 亚洲国产成人久久综合| 亚洲精品免费电影| 亚洲欧美一区在线| 牛牛精品成人免费视频| 日韩视频永久免费| 欧美与黑人午夜性猛交久久久| 久久综合九色综合欧美狠狠| 欧美欧美全黄| 国产偷国产偷亚洲高清97cao| 亚洲丰满在线| 午夜久久久久久| 六月丁香综合| 亚洲午夜伦理| 牛夜精品久久久久久久99黑人| 欧美日韩美女一区二区| 99热精品在线观看| 午夜精品久久久久| 欧美寡妇偷汉性猛交| 国产欧美视频一区二区三区| 亚洲欧洲日韩综合二区| 久久精品一区二区| 99re6这里只有精品| 久久嫩草精品久久久久| 国产精品一二三| 99精品免费视频| 麻豆九一精品爱看视频在线观看免费| 一本久久综合亚洲鲁鲁| 美女免费视频一区| 精品成人国产在线观看男人呻吟| 亚洲视频axxx| 亚洲黄一区二区三区| 久久精品天堂| 国产亚洲欧美一区在线观看| 亚洲午夜日本在线观看| 亚洲第一久久影院| 久久先锋影音| 韩日精品视频| 久久精品午夜| 午夜精品美女自拍福到在线| 欧美日韩mv| 日韩视频精品在线观看| 欧美1区2区视频| 久久久国际精品| 狠狠色香婷婷久久亚洲精品| 久久精品欧洲| 欧美淫片网站| 国内精品免费在线观看| 久久久久久久999| 欧美中文字幕在线视频| 韩国av一区二区三区在线观看| 久久激情久久| 欧美在线免费播放| 一区二区三区亚洲| 欧美a级理论片| 蜜臀91精品一区二区三区| 亚洲国产综合在线看不卡| 欧美激情精品久久久久久蜜臀| 美日韩精品免费| 亚洲毛片一区| 99一区二区| 国产精品免费久久久久久| 欧美亚洲一区二区在线| 久久精品一区二区三区四区| 在线观看精品视频| 亚洲欧洲在线视频| 国产精品成人一区二区艾草| 欧美在线影院| 老司机精品视频网站| 99re这里只有精品6| 亚洲调教视频在线观看| 国产专区欧美精品| 亚洲人成免费| 国产精品毛片高清在线完整版| 先锋影音久久| 久久久久久亚洲精品杨幂换脸| 亚洲欧洲日韩在线| 亚洲一区在线观看视频| 久久精品一区蜜桃臀影院| 曰本成人黄色| 一区二区久久久久| 国产一区二区精品在线观看| 欧美岛国激情| 国产精品国产三级国产专播品爱网 | 亚洲午夜日本在线观看| 午夜亚洲福利| 亚洲理论在线| 欧美一级欧美一级在线播放| 亚洲另类春色国产| 欧美一区二区三区播放老司机 | 香蕉av777xxx色综合一区| 翔田千里一区二区| 日韩视频在线观看国产| 午夜精品av| 99天天综合性| 久久久国产成人精品| 亚洲专区一二三| 欧美aⅴ99久久黑人专区| 欧美一区二区三区四区视频| 欧美高清不卡| 久久免费偷拍视频| 欧美少妇一区二区| 欧美激情第一页xxx| 国产一区二区三区自拍| 一本久久a久久精品亚洲| 亚洲国产日韩在线| 久久黄金**| 久久国产成人| 国产精品乱码一区二区三区| 亚洲国产老妈| 伊人久久噜噜噜躁狠狠躁| 亚洲女同在线| 亚洲欧美经典视频| 欧美激情片在线观看| 免费在线看一区| 韩日午夜在线资源一区二区| 亚洲一区综合| 亚洲欧美久久| 国产精品va| 亚洲午夜电影在线观看| 亚洲午夜影视影院在线观看| 欧美精品在线一区| 亚洲欧洲精品一区二区三区波多野1战4| 精品动漫3d一区二区三区| 久久都是精品| 欧美**人妖| 亚洲日本aⅴ片在线观看香蕉| 久久人人爽人人| 欧美成人精品一区二区| 亚洲黑丝一区二区| 欧美激情小视频| 亚洲麻豆一区| 亚洲欧洲av一区二区| 国产美女一区| 久久九九免费视频| 亚洲大胆女人| 亚洲精品小视频在线观看| 欧美黄色成人网| 99在线精品视频在线观看| 亚洲免费一在线| 国产日韩综合一区二区性色av| 欧美一区亚洲二区| avtt综合网| 欧美视频在线观看免费| 亚洲一区图片| 久久亚洲一区二区| 亚洲免费观看| 国产精品免费aⅴ片在线观看| 亚洲在线日韩| 欧美成年人网站| 一本久久a久久精品亚洲| 国产精品福利在线观看网址| 欧美一级理论片| 亚洲大片精品永久免费| 中国成人亚色综合网站| 国产欧美视频一区二区| 免费在线亚洲欧美| 亚洲一区二区三区视频| 美日韩精品视频| 亚洲午夜极品| 韩国在线视频一区| 欧美日韩亚洲成人| 久久国产精品99国产| 最新亚洲电影| 久久久美女艺术照精彩视频福利播放 | 欧美日韩日日骚| 亚洲欧美日韩国产中文| 欧美激情第10页| 欧美在线观看视频一区二区| 亚洲国产日本| 国产一区二区三区在线观看免费视频 | 国产欧美在线视频| 欧美91福利在线观看| 亚洲男人的天堂在线| 亚洲第一页在线| 久久久91精品国产| 这里只有精品视频| 激情综合亚洲| 国产精品自拍三区| 欧美日韩国产综合视频在线观看| 久久国产天堂福利天堂| 亚洲图片欧美一区| 亚洲欧洲一区二区三区在线观看| 欧美在线一二三| 亚洲一区免费看| 日韩午夜电影av| 亚洲精品欧美| 亚洲国产美女精品久久久久∴| 国产一区二区无遮挡| 国产精品人人做人人爽人人添| 欧美日韩高清免费|