#include <windows.h>
#include <stdio.h>
#include <process.h>
#include <time.h>
unsigned _stdcall simulator(void *);
unsigned _stdcall inspector(void *);
LPVOID BASE_PTR;
int Actnum=0;
//
int main(int argc, char* argv[])
{
unsigned ThreadID[2];
_beginthreadex(NULL,0,simulator,NULL,0,&ThreadID[0]);
_beginthreadex(NULL,0,inspector,NULL,0,&ThreadID[1]);
getchar();//输入回车即可终止程序;
return 0;
}
//
unsigned _stdcall simulator(void *)
{
DWORD OldProtect;
int randnum;
printf("Now the simulator procedure has been started.\n");
srand( (unsigned)time( NULL ) );
//
while(1)
{
Sleep(500);
while (Actnum!=0)
{
Sleep(500);//
}
randnum=7&rand();
switch(randnum)//
{
case 0:
if (BASE_PTR=VirtualAlloc(NULL,1024*32,MEM_RESERVE|MEM_COMMIT,
PAGE_READWRITE))
{
Actnum=1;
}
break;
case 1:
if (VirtualFree(BASE_PTR,1024*32,MEM_DECOMMIT))
{
Actnum=2;
}
break;
case 2:
if (VirtualFree(BASE_PTR,0,MEM_RELEASE))
{
Actnum=3;
}
break;
case 3:
if (VirtualProtect(BASE_PTR,1024*32,PAGE_READONLY,&OldProtect))
{
Actnum=4;
}
break;
case 4:
if (VirtualLock(BASE_PTR,1024*12))
{
Actnum=5;
}
break;
case 5:
if (BASE_PTR=VirtualAlloc(NULL,1024*32,MEM_RESERVE,PAGE_READWRITE))
{
Actnum=6;
}
break;
default:
break;
}
}
return 0;
}
//
unsigned _stdcall inspector(void *)
{
int QuOut=0;
char para1[3000];
MEMORYSTATUS Vmeminfo;
char tempstr[100];
MEMORY_BASIC_INFORMATION inspectorinfo1;
int structsize = sizeof(MEMORY_BASIC_INFORMATION);
printf("Hi , now inspector begin to work\n");
//
while(1)
{
Sleep(1000);
if(Actnum!=0)
{
//
switch(Actnum)
{
case 1:
memset (&inspectorinfo1, 0, structsize);
VirtualQuery((LPVOID)BASE_PTR,&inspectorinfo1,structsize);
strcpy(para1,"目前执行动作:虚存的保留与提交\n");
break;
case 2:
memset (&inspectorinfo1, 0, structsize);
VirtualQuery((LPVOID)BASE_PTR,&inspectorinfo1,structsize);
strcpy(para1,"目前执行动作:虚存的除配\n");
break;
case 3:
memset (&inspectorinfo1, 0, structsize);
VirtualQuery((LPVOID)BASE_PTR,&inspectorinfo1,structsize);
strcpy(para1,"目前执行动作:虚存的除配并释放虚存空间\n");
break;
case 4:
memset (&inspectorinfo1, 0, structsize);
VirtualQuery((LPVOID)BASE_PTR,&inspectorinfo1,structsize);
strcpy(para1,"目前执行动作:改变虚拟内存页的保护\n");
break;
case 5:
memset (&inspectorinfo1, 0, structsize);
VirtualQuery((LPVOID)BASE_PTR,&inspectorinfo1,structsize);
strcpy(para1,"目前执行动作:锁定虚拟内存页\n");
break;
case 6:
memset (&inspectorinfo1, 0, structsize);
VirtualQuery((LPVOID)BASE_PTR,&inspectorinfo1,structsize);
strcpy(para1,"目前执行动作:虚存的保留\n");
break;
default:
break;
}
//
sprintf(tempstr,"开始地址:0X%x\n",inspectorinfo1.BaseAddress);
strcat(para1,tempstr);
sprintf(tempstr,"区块大小(目前指针处向前同一属性的块):0X%x\n",
inspectorinfo1.RegionSize);
strcat(para1,tempstr);
sprintf(tempstr,"目前状态:0X%x\n",inspectorinfo1.State);
strcat(para1,tempstr);
sprintf(tempstr,"分配时访问保护:0X%x\n",inspectorinfo1.AllocationProtect);
strcat(para1,tempstr);
sprintf(tempstr,"当前访问保护:0X%x\n",inspectorinfo1.Protect);
strcat(para1,tempstr);
strcat(para1,"(状态:10000代表未分配 ;1000代表提交 ;2000代表保留; )\n");
strcat(para1,"(保护方式:0代表其它;1代表禁止访问;2代表只读;4代表读写;\n10代表可执");
strcat(para1," 行;20代表可读和执行; 40代表可读写和执行;)\n*******************\n");
//
GlobalMemoryStatus(&Vmeminfo);
strcat(para1,"当前整体存储统计如下\n");
sprintf(tempstr,"物理内存总数:%d(BYTES)\n",Vmeminfo.dwTotalPhys);
strcat(para1,tempstr);
sprintf(tempstr,"可用物理内存数:%d(BYTES)\n",Vmeminfo.dwAvailPhys);
strcat(para1,tempstr);
sprintf(tempstr,"页面文件总数:%d(BYTES)\n",Vmeminfo.dwTotalPageFile);
strcat(para1,tempstr);
sprintf(tempstr,"可用页面文件数:%d(BYTES)\n",Vmeminfo.dwAvailPageFile);
strcat(para1,tempstr);
sprintf(tempstr,"虚存空间总数:%d(BYTES)\n",Vmeminfo.dwTotalVirtual);
strcat(para1,tempstr);
sprintf(tempstr,"可用虚存空间数:%d(BYTES)\n",Vmeminfo.dwAvailVirtual);
strcat(para1,tempstr);
sprintf(tempstr,"物理存储使用负荷:%%%d\n\n\n\n",Vmeminfo.dwMemoryLoad);
strcat(para1,tempstr);
printf("%s",para1);
Actnum=0;
Sleep(500);
}
}
return 0;
}
ace.rar_ACE_visual c_虚拟内存
版权申诉
70 浏览量
2022-09-24
14:12:09
上传
评论 1
收藏 2KB RAR 举报
局外狗
- 粉丝: 66
- 资源: 1万+
最新资源
- 毕业设计基于Python卷积神经网络CNN的图像分类系统源码+模型+说明文档+全部数据资料.zip
- matlab 基于SVM的手写字体识别源代码+详细教程
- 课程管理平台 JAVA+Vue.js+SpringBoot+MySQL
- 毕业设计 基于Python卷积神经网络CNN的图像分类系统源码+模型+说明文档+全部数据资料.zip
- matlab 基于SVM的图像分割-真彩色图像分割源代码+详细教程
- go-admin框架vue权限字符-全网最透彻讲解
- matlab 基于SVM的信息粒化时序回归预测-上证指数开盘指数变化趋势和变化空间预测源代码+详细教程
- OBS多平台推流支持插件
- matlab 基于SVM的回归预测分析-上证指数开盘指数预测源代码+详细教程
- comfyui的BrushNet电商公司和摄影公司都在用的AI工作流
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈