windows ce
同樣支援無名和有名的記憶體對映檔案。在開發軟體的過程中,如果需要讀寫大容量的檔案,或者需要在不同程序內的執行緒之間通訊,最好採用記憶體對映檔案,而且最好在全域性位址空間內(
0x4200 0000
到0x7fff ffff
)分配。這會事半功倍。
嵌入式系統採用兩級頁表的方式進行虛實位址變換,這與所用的處理器有關。比如
arm平台下,有
1mb,
64kb
,4kb
,1kb
四種頁面大小;
x86下則是
4kb和
4mb。
windows ce
提供內建的輕量級資料庫管理系統。其屬性資料庫由
1張包含記錄的表組成,每個記錄包含許多不同的屬性,每個屬性有
3種資訊:標誌屬性的
id號、型別和值。
全域性位址空間(
0x4200 0000
到0x7fff ffff
)近1gb
的空間應該足夠用了。畢竟
windows ce
下的檔案都很小。
實現位址對映的思路:
l 分析邏輯位址,包括頁號和頁內偏移位址;
l 查詢頁表,即物理頁面;
l 合成實際實體地址,實體地址
=物理頁面*2的
n次方+偏移位址;
l對映資料檔案的基本步驟:
1、呼叫函式。
l 引數
1:lpctstr lpfilename 指定檔案路徑,注意檔案路徑的格式是沒有碟符的;
l 引數
2:dword dwdesiredaccess 指定訪問方式(讀或寫);
l 引數
3:dword dwsharemode 指定共享模式;
l 引數
4:lpsecurity_attributes lpsecurityattributes 指定安全屬性(
null
);l 引數5
:dword dwcreationdisposition 指定是建立還是開啟檔案;
l 引數
6:dword dwflagsandattributes 指定檔案屬性;
l 引數
7:handle htemplatefile 略;
2、呼叫函式。建立乙個無名的或者有名的記憶體對映檔案物件。
l 引數
1:handle hfile 函式返回值;
l 引數
2:lpsecurity_attributes lpsecurityattributes 安全屬性(
null
);l 引數3
:dword flprotect 指定要對映的檔案的保護屬性(唯讀
or讀寫);
l 引數
4:dword dwmaximumsizehigh 指定要對映的檔案的大小,最高
32位數;
l 引數
5:dword dwmaximumsizelow 與引數
4共同用於指定要對映的檔案的大小,最低
32位數;
l 引數
6:lpctstr lpname 指定記憶體對映檔案的名稱(
null
);3、呼叫mapviewoffile函式。用於保留一段足夠的位址空間,並且將永久儲存器上的檔案資料對映到這個位址空間。
l 引數1l
引數2:dword dwdesiredaccess 用於限定訪問許可權;
l 引數
3:dword dwfileoffsethigh 指定對映區域的開始位置,最高
32位數;
l 引數
4:dword dwfileoffsetlow 和引數
3共同用於指定對映區域的開始位置,最低
32位數。
l 引數
5:dword dwnumberofbytestomap 要對映的位元組
位數。4、進行讀/寫操作;(前提是呼叫
mapviewoffile
函式成功)
5、呼叫unmapviewoffile函式。撤銷檔案對映檢視,執行結束。
l 引數
16、呼叫closehandle函式。關閉記憶體對映檔案物件。
對映檔案與虛擬記憶體一樣,記憶體對映檔案用來保留乙個位址空間,並提交物理儲存器。
記憶體對映檔案的特點使它很適合於載入
exe或
dll檔案。這樣可以節省記憶體又減少了載入所需時間。還可以使用它來對映大容量的檔案,這樣就不必在讀取檔案資料前設定很大的緩衝區。
另外,記憶體對映檔案常用於程序間通訊,也是程序間通訊的主要手段,其它程序之間通訊機制都是基於記憶體對映檔案來實現。
為了更快的在程序之間通訊,現在的記憶體對映檔案也可以提交物理記憶體,這樣記憶體對映檔案既可以提交物理記憶體又可以提交檔案。
記憶體檔案對映 程序間通訊
記憶體對映檔案可以分為兩種 一種是普通的檔案,它需要乙個普通的檔案控制代碼,用於快速的讀寫檔案,這種檔案的資料在程序退出後會儲存在硬碟上,所以程序在下次執行時可以得到之前的資料 另一種是頁檔案,當建立記憶體對映檔案的時候傳入無效的控制代碼,這時會把頁檔案當作臨時的共享儲存空間,當程序退出後這些資料是...
程序入門之使用檔案對映
服務端涉及的api 任何可以獲得的物理檔案控制代碼,如果你需要建立乙個物理檔案無關的記憶體對映也無妨,將它設定成為 0xffffffff invalid handle value 就可以了.如果需要和物理檔案關聯,要確保你的物理檔案建立的時候的訪問模式和 保護設定 匹配,比如 物理檔案唯讀,記憶體對...
程序間通訊 檔案對映與控制代碼繼承
程序間通訊有多種方法,其中常用的一種便是檔案對映。往往在不同專案中對檔案對映的使用策略也不一樣,這裡拿一種常遇到的情況來說明需要注意的。例如 a程序 system許可權 含有網路模組,負責與伺服器通訊,而b程序 任意使用者 負責實時收集資料,由於b程序處於任意使用者,不能確保它是否能與伺服器通訊,當...