2013-02-17 87 views
0

我正在調試一些WinAPI應用程序。
就在函數CreateFileMappingA的調用之前,文件的大小爲0Kb。在函數調用之後,文件立即得到200Kb。我嘗試瀏覽在線Windows API文檔,但沒有發現任何事情(或者不明白,可能)在函數調用後是否會發生文件寫入。參數的值爲。
我真的很想知道該功能的功能,尤其是爲什麼寫入該文件。CreateFileMappingA是否寫入文件?

+1

您是否閱讀過關於文件映射的文檔?你知道文件映射是什麼嗎? – 2013-02-17 21:47:39

+0

我在微軟的在線文檔中閱讀了一些關於文件映射的內容。但是我並不是高級程序員,所以有時文檔中的概念很難理解我 – TGO 2013-02-17 21:50:32

+0

文件映射不是文件,函數是否寫入文件?No. – 2013-02-17 21:52:21

回答

1

經過一番研究,我發現功能CreateFileMappingA是被稱爲像這樣:
CreateFileMappingA(fh, NULL, PAGE_READWRITE, 0, 0x336BC, "kll");
根據該文件,如果文件大小會比長度下的映射目標,該文件將被延長以適應尺寸。
所以在我的情況下,該文件剛創建。

fh = CreateFileA("file2.dat", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, 
     NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 


因此,首先,文件 「File2.DAT的」 將與寫權限創建。這將是0Kb。然後,在上面調用CreateFileMappingA之後,文件大小將爲0x336BC字節或206Kb。