天天看點

windows核心程式設計--7、記憶體映射檔案

一、前言

    該系列前幾篇文章:

        windows核心程式設計--1、使用vs2019編寫第一個win32項目

        windows核心程式設計--2、windows的畫筆畫刷以及一些簡單的應用

        windows核心程式設計--3、有關程序的三個函數

        windows核心程式設計--4、線程和線程同步

        windwos核心程式設計--5、虛拟記憶體相關函數及其應用

        windows核心程式設計--6、使用共享棧端實作程序資料共享

二、相關工具

    IDE:Visual Studio 2019

三、相關函數

    1、

CreateFile

函數,作用為打開檔案,也可以建立檔案,相關用法參見百度百科:https://baike.baidu.com/item/CreateFile/9621657?fr=aladdin

    2、

GetFileSize

函數,作用為擷取檔案大小,具體用法參見百度百科:https://baike.baidu.com/item/GetFileSize/9641889?fr=aladdin

    3、

CreateFileMapping

函數,作用為建立一個記憶體映射檔案對象,具體用法參見百度百科:https://baike.baidu.com/item/CreateFileMapping/9621670?fr=aladdin

    4、

GetLastError

函數,作用為擷取錯誤代碼,具體用法參見百度百科:https://baike.baidu.com/item/GetLastError/4278820?fr=aladdin

    5、

MapViewOfFile

函數,作用為将檔案映射對象映射到目前應用程式的位址空間中,具體用法參見百度百科:https://baike.baidu.com/item/MapViewOfFile/9665143?fr=aladdin

    6、

memcpy

函數,作用為拷貝記憶體,具體用法參見百度百科:https://baike.baidu.com/item/memcpy/659918?fr=aladdin

    7、

UnmapViewOfFile

函數,作用為釋放一個記憶體映射,具體用法參見百度百科:https://baike.baidu.com/item/UnmapViewOfFile/9711637?fr=aladdin

    8、

CloseHandle

函數,作用為關閉一個句柄,具體用法參見百度百科:https://baike.baidu.com/item/CloseHandle/9621618?fr=aladdin

四、實驗要求

    實作檔案切割功能,平均将檔案切割為四部分。

五、實驗步驟

    1、首先将要切割的檔案通過映射方式得到一個映射對象,如下所示:

windows核心程式設計--7、記憶體映射檔案

    2、接着對取該檔案,将讀取出來的二進制流平靜配置設定到4個位元組數組中,之後在關閉該映射對象,如下所示:

windows核心程式設計--7、記憶體映射檔案

    3、最後建立四個檔案映射對象,分别寫入4個位元組數組中的内容即可,在關閉這4個映射對象,如下所示:

windows核心程式設計--7、記憶體映射檔案