(IP Messenger在程式結構方面採用了Windows SDK處理結構,通訊方面採用了TCP/UDP通訊方式,在檔案傳輸處理方面採用檔案對應技術,等等。通過分析IP Messenger的運行、工作原理,可以提高並加深對Windows處理流程的理解,提高SOCKET編程技術等,因此特對其源碼進行分析,以拋磚引玉,共同提高大家的編程技術。)
先來看看:檔案對應技術的相關文章!希望能有所收穫!
與虛擬記憶體一樣,記憶體對應檔可以用來保留一個地址空間的地區,並將實體儲存體器提交給該地區。它們之間的差別是,實體儲存體器來自一個已經位於磁碟上的檔案,而不是系統的頁檔案。一旦該檔案被映射,就可以訪問它,就像整個檔案已經載入記憶體一樣。
記憶體對應檔可以用於3個不同的目的:
• 系統使用記憶體對應檔,以便載入和執行. e x e和D
L L檔案。這可以大大節省頁檔案空間和應用程式啟動運行所需的時間。
• 可以使用記憶體對應檔來訪問磁碟上的資料檔案。這使你可以不必對檔案執行I / O操作,並且可以不必對檔案內容進行緩衝。
• 可以使用記憶體對應檔,使同一台電腦上啟動並執行多個進程能夠相互之間共用資料。Wi n d o w s確實提供了其他一些方法,以便在進程之間進行資料通訊,但是這些方法都是使用記憶體對應檔來實現的,這使得記憶體對應檔成為單個電腦上的多個進程互相進行通訊的最有效方法。
一.記憶體對應檔的函數包括
CreateFileMapping , OpenFileMapping, MapViewOfFile, UnmapViewOfFile
和 FlushViewOfFile。
用法如下:
1.HANDLE CreateFileMapping(
HANDLE hFile, // 一個檔案控制代碼
LPSECURITY_ATTRIBUTE lpAttributes, // 定義記憶體對應檔對象是否可以被承
DWORD flProtect, // 該記憶體對應檔的保護類型
DWORD dwMaximumSizeHigh,// 記憶體對應檔的長度
DWORD dwMaximumSizeLow, //
LPCTSTR lpName // 記憶體對應檔的名字
)
hFile 指定要映射的檔案的控制代碼,如果這是一個已經開啟的檔案的控制代碼(CreateFile函數的傳回值),那麼將建立這個檔案的記憶體對應檔,如果這個參數為-1,則建立共用記憶體。
lpAttribute 安全屬性,一般設為NULL
flProtect 指定對應檔的保護類型,它的取值可以是PAGE_READONLY(記憶體頁面唯讀)或
PAGE_READWRITE(記憶體頁面可讀寫)。
dwMaximumSizeHigh 和 dwMaximumSizeLow參數組合指定了一個64位的記憶體對應檔的長度。一種簡單的方法是將這兩個參數全部設定為0,那麼記憶體對應檔的大小將與磁碟檔案大小一致。