程序間通迅之檔案對映

2022-08-29 16:18:26 字數 2832 閱讀 9334

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程序處於任意使用者,不能確保它是否能與伺服器通訊,當...