建立乙個新的檔案對映核心物件,並且對映到當前程序位址空間。最後釋放記憶體對映。
unit untfilemap;
inte***ce
uses
windows, sysutils;
type
tpostdata = packed record
style: integer;
post1: array[1..max_path] of char;
post2: array[1..max_path] of char;
post3: array[1..max_path] of char;
end;
ppostdata = ^tpostdata;
function openmap: boolean;
procedure closemap; //關閉共享記憶體映像
var pshare: ppostdata;
implementation
varfunction openmap: boolean;
begin
result:= false;
begin
raise exception.create('建立記憶體映像檔案失敗');
end;
if pshare= nil then
begin
raise exception.create('對映到當前程序位址控制項失敗');
end;
result:= true;
end;
procedure closemap; //關閉共享記憶體映像
begin
if pshare<>nil then
unmapviewoffile(pshare); // 從程序位址空間中釋放映像檔案
end;
end.
其他程序開啟對映檔案,讀寫資料。
var pshare: ppostdata;
begin
trybegin
showmessage('失敗提示');
exit;
end;
if pshare = nil then
begin
showmessage('失敗提示');
exit;
end;
//do something
//...
//...
finally
end;
end;
mapviewoffile:將核心物件對映到程序記憶體,然後就可以為所欲為了;
unmapviewoffile:不再使用映像檔案時,從程序位址空間中釋放映像檔案;
closehandle:用完後關閉控制代碼。
記憶體對映檔案
記憶體對映檔案是利用虛擬記憶體把檔案對映到程序的位址空間中去,在此之後程序操作文 件,就像操作程序空間裡的位址一樣了,比如使用 memcpy 等記憶體操作的函式。這種方法能 夠很好的應用在需要頻繁處理乙個檔案或者是乙個大檔案的場合,這種方式處理 io效率比 普通 io效率要高。另外,unix 把它做...
記憶體對映檔案
記憶體對映檔案有三種,第一種是可執行檔案的對映,第二種是資料檔案的對映,第三種是借助頁面交換檔案的記憶體對映.應用程式本身可以使用後兩種記憶體對映.1.可執行檔案對映 windows在執行乙個win32應用程式時使用的是記憶體對映檔案技術.系統先在程序位址空間的0x00400000以上保留乙個足夠大...
記憶體檔案對映
一直都對記憶體對映檔案這個概念很模糊,不知道它和虛擬記憶體有什麼區別,而且對映這個詞也很讓人迷茫,今天終於搞清楚了。下面,我先解釋一下我對對映這個詞的理解,再區分一下幾個容易混淆的概念,之後,什麼是記憶體對映就很明朗了。首先,對映 這個詞,就和數學課上說的 一一對映 是乙個意思,就是建立一種一一對應...