檔案對映實現程序通訊

2021-09-27 08:22:34 字數 1367 閱讀 5310

需要用到兩個重要的api

1.handle hfile

2.1 security_attributes :它指明返回的控制代碼是否可以被子程序所繼承,指定乙個安全物件,在建立檔案對映時使用。

2.2 null :(用byval as long傳遞零),表示使用預設安全物件。

3.dword flprotect

3.1 page_readonly 以唯讀方式開啟對映

3.2 page_readwrite 以可讀、可寫方式開啟對映

3.3 page_writecopy 為寫操作留下備份

4.dword dwmaximumsizehigh

檔案對映的最大長度的高32位

5.dword dwmaximumsizelow

檔案對映的最大長度的低32位。

如這個引數和dwmaximumsizehigh都是零,就用磁碟檔案的實際長度。

6.lpcwstr lpname

指定檔案對映物件的名字。如存在這個名字的乙個對映,函式就會開啟它。

用vbnullstring可以建立乙個無名的檔案對映。

mapviewoffile 功能是將乙個檔案對映物件對映到當前應用程式的位址空間。

表示檔案對映起始偏移的高32位

4.dword dwfileoffsetlow

表示檔案對映起始偏移的低32位

5.size_t dwnumberofbytestomap

指定對映檔案的位元組數

在這裡插入**片	}

//給這段映像記憶體的資料賦給本地變數

pstrdata->format(_t("%s"),lpdata);

//sprintf(lpdata,_t("0"));

if(*pstrdata != _t(""))

memset(lpdata,0,data_length);

unmapviewoffile(lpdata);//釋放映像記憶體

return true;

}// _stprintf(lpdata,strdata.getbuffer()); //給這段映像記憶體寫資料

// _swprintf_s(lpdata,strdata);

memcpy(lpdata,strdata.getbuffer(),strdata.getlength()*2);

unmapviewoffile(lpdata); //釋放映像記憶體

return true;

}

記憶體檔案對映 程序間通訊

記憶體對映檔案可以分為兩種 一種是普通的檔案,它需要乙個普通的檔案控制代碼,用於快速的讀寫檔案,這種檔案的資料在程序退出後會儲存在硬碟上,所以程序在下次執行時可以得到之前的資料 另一種是頁檔案,當建立記憶體對映檔案的時候傳入無效的控制代碼,這時會把頁檔案當作臨時的共享儲存空間,當程序退出後這些資料是...

程序間通訊 檔案對映與控制代碼繼承

程序間通訊有多種方法,其中常用的一種便是檔案對映。往往在不同專案中對檔案對映的使用策略也不一樣,這裡拿一種常遇到的情況來說明需要注意的。例如 a程序 system許可權 含有網路模組,負責與伺服器通訊,而b程序 任意使用者 負責實時收集資料,由於b程序處於任意使用者,不能確保它是否能與伺服器通訊,當...

程序間通訊 記憶體對映

程序1的資料有時需要傳送給程序b,這可以通過記憶體對映實現。主要用到的函式 寫方式開啟對映,page writecopy 為寫操作留下備份 dword dwmaximumsizehigh,檔案對映的最大長度的高32位,一般設為0,用低32位一般就夠用了 dword dwmaximumsizelow,...