1. createfile
2. 建立記憶體對映檔案
handle hfile, // handle to file
lpsecurity_attributes lpattributes, // security
dword flprotect, // protection
dword dwmaximumsizehigh, // high-order dword of size
dword dwmaximumsizelow, // low-order dword of size
lpctstr lpname // object name
);lpvoid mapviewoffile(
dword dwdesiredaccess, // access mode
dword dwfileoffsethigh, // high-order dword of offset
dword dwfileoffsetlow, // low-order dword of offset
size_t dwnumberofbytestomap // number of bytes to map);
dwfileoffsethigh + dwfileoffsetlow 之和須得是64k的整數倍.
unmapviewoffile(
);closehandle 記憶體對映
closehandle 關閉檔案
/ 磁碟中建立乙個檔案
handle hfile = createfile(l"c:/map.dat", generic_read | generic_write, file_share_read, null, create_always, file_attribute_normal, null);
// 在核心中建立乙個記憶體對映檔案結構,同時將硬碟檔案擴充至1m
// 將硬碟檔案和本程序的共享端的位址空間建立對映關係
char * psztext = (char*)mapviewoffile(hmap, file_map_all_access, 0, 0, 0);
strcpy(psztext, "hello map");
printf("%s\n",psztext);
// 將硬碟檔案和本程序的共享段的位址空間斷開對映關係
unmapviewoffile(psztext);
//刪除記憶體對映檔案這個核心結構
closehandle(hmap);
closehandle(hfile);
-------------------------------
mapviewoffile()
printf();
unmapviewoffile();
closehandle();
windows記憶體對映
為了說明記憶體對映的使用方式,下面是個人寫的例子 首先建立了乙個大於2gb的檔案,並寫入一定量地測試資料,如下 然後讀取檔案中的資料測試,如下 最後採用記憶體對映的方式對這個大檔案中的字串翻轉,並讀取字串測試,如下 在記憶體對映時,採用多次mapviewoffile將大檔案分開多次對映到記憶體中,這...
使用windows記憶體 記憶體對映檔案
和虛擬記憶體一樣,記憶體對映檔案可以用來保留乙個程序位址區域 但是,與虛擬記憶體不同,它提交的不是物理記憶體或是虛擬頁檔案,而是硬碟上的檔案。將檔案對映成記憶體,我們可以像使用內 存一樣使用檔案.使用場合 它有三個主要用途 系統載入exe和dll檔案 作業系統就是用它來載入exe和dll檔案建立程序...
windows 核心程式設計下的記憶體對映檔案
虛擬記憶體實現的硬體基礎是分頁機制,關於分頁機制本文再此不做介紹。虛擬記憶體實現的另外乙個重要基礎是區域性性原理。區域性性是指程式總是趨向於使用最近使用過的資料和指令,也就是說程式執行時所訪問的儲存器位址分布是相對集中的。區域性性原理是應用虛擬記憶體提公升效能的主要原因,也是虛擬記憶體卻別與記憶體對...