windwos核心編程--5、虛擬內存相關函數及其應用

一、前言

    該系列前幾篇文章:
        windows核心編程--1、使用vs2019編寫第一個win32項目
        windows核心編程--2、windows的畫筆畫刷以及一些簡單的應用
        windows核心編程--3、有關進程的三個函數
        windows核心編程--4、線程和線程同步


二、相關工具

    IDE:Visual Studio 2019


三、相關函數

    1、VirtualAlloc函數,作用爲分配一個虛擬內存,第一個參數爲首地址,第二個參數爲預分配內存大小,第三個參數表示是預定地址空間還是分配物理存儲器,最後一個參數保護模式,若分配成功,則返回類型爲LPVOID的首地址。

    2、VirtualFree函數,作用爲釋放虛擬內存,第一個參數爲要釋放的地址首地址,第二個參數爲釋放內存大小,第三個參數一般設置爲MEM_DECOMMIT

    3、VirtualQuery函數,作用爲查詢虛擬內存屬性,第一個參數爲VirtualAlloc函數的返回值,第二個參數爲一個類型爲MEMORY_BASIC_INFORMATION的結果體,用來存放結果,第三個參數爲結構體的大小。

    4、VirtualProtect函數用來修改該虛擬內存的保護模式,第一個參數爲虛擬內存句柄,第二個參數爲虛擬內存大小,第三個參數爲要修改後的保護模式,第四個參數爲用來保存老的保護模式,這裏值得注意的是,在win32程序中,該參數必須使用new的方式來初始化,例如PDWORD oldProtect = new DWORD;


四、實驗要求

    1、採用虛擬內存函數VirtualAlloc,從地址“0x100000FF”分配一個n字節地址預訂和物理調撥(其中n爲各自學號),最開始地址頁屬性設置爲只讀。
    2、採用VirtualQuery進行查詢虛擬內存情況,並展示出來。
    3、採用VirtualProtect函數把該地址頁屬性進行修改,修改爲可讀可寫,然後將字符串“20170111”(各自學號)賦值到虛擬內存;並然後調用VirtualFree釋放虛擬內存。


五、實驗步驟

    這個沒什麼好說的,調用函數即可,結果如下:

1.png

2.png

3.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章