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释放虚拟内存。


五、实验步骤

    这个没什么好说的,调用函数即可,结果如下:

posted @ 2020-05-16 16:30  windy_ll  阅读(315)  评论(0编辑  收藏  举报