windows中的記憶體對映

2021-07-24 00:02:36 字數 1480 閱讀 9570

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 核心程式設計下的記憶體對映檔案

虛擬記憶體實現的硬體基礎是分頁機制,關於分頁機制本文再此不做介紹。虛擬記憶體實現的另外乙個重要基礎是區域性性原理。區域性性是指程式總是趨向於使用最近使用過的資料和指令,也就是說程式執行時所訪問的儲存器位址分布是相對集中的。區域性性原理是應用虛擬記憶體提公升效能的主要原因,也是虛擬記憶體卻別與記憶體對...