操作系统 实验十一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验11 windows虚拟内存实验
一,实验目的
了解windows虚拟内存的基本信息
了解windows虚拟内存的解构信息
二,实验内容
1,进入windows 7
2,使用vs
3,新建文件
代码段如下:
#include
#include
#include
#include
#include
#pragma comment(lib,"Shlwapi.lib")
inline bool TestSet(DWORD dwTarget,DWORD dwMask)
{
return((dwTarget &dwMask)==dwMask);
}
#define SHOWMASK(dwTarget,type)\
if(TestSet(dwTarget,PAGE_##type))\
{std::cout<<","<<#type;}
void ShowProtection(DWORD dwTarget)
{
SHOWMASK(dwTarget,READONL Y);
SHOWMASK(dwTarget,GUARD);
SHOWMASK(dwTarget,NOCACHE);
SHOWMASK(dwTarget,READWRITE);
SHOWMASK(dwTarget,WRITECOPY);
SHOWMASK(dwTarget,EXECUTE);
SHOWMASK(dwTarget,EXECUTE_READ);
SHOWMASK(dwTarget,EXECUTE_READWRITE);
SHOWMASK(dwTarget,EXECUTE_WRITECOPY);
SHOWMASK(dwTarget,NOACCESS);
}
void WalkVM(HANDLE hProcess)
{
SYSTEM_INFO si;
::ZeroMemory(&si,sizeof(si));
::GetSystemInfo(&si);
MEMORY_BASIC_INFORMATION mbi;
::ZeroMemory(&mbi,sizeof(mbi));
LPCVOID pBlock=(LPVOID) si.lpMinimumApplicationAddress; while(pBlock { if(::VirtualQueryEx( hProcess, pBlock, &mbi, sizeof(mbi))==sizeof(mbi)) { LPVOID pEnd=(PBYTE)pBlock+mbi.RegionSize; TCHAR szSize[MAX_PATH]; ::StrFormatByteSize(mbi.RegionSize,szSize,MAX_PATH); std::cout.fill('0'); std::cout < <<"-" < <<(::strlen(szSize)==7?"(":"(")< <<")"; switch(mbi.State) { case MEM_COMMIT: std::cout<<"Committed"; break; case MEM_FREE: std::cout<<"Free"; break; case MEM_RESERVE: std::cout<<"Reserved"; break; } if(mbi.Protect==0&&mbi.State!=MEM_FREE) { mbi.Protect=PAGE_READONL Y; } ShowProtection(mbi.Protect); switch(mbi.Type) { case MEM_IMAGE: std::cout<<",Image"; break; case MEM_MAPPED: std::cout<<",Mapped"; break; case MEM_PRIV A TE: std::cout<<",Private"; break; } TCHAR szFilename[MAX_PATH]; if(::GetModuleFileName( (HMODULE) pBlock, szFilename, MAX_PATH)>0) { ::PathStripPath(szFilename); std::cout<<",Module:"< } std::cout< pBlock=pEnd; } } } void main() { ::WalkVM(::GetCurrentProcess()); getchar(); } 实验结果截图: