内存搜索中一极其复杂的问题-非高手勿进

huqin6 2005-03-19 06:11:13
下面是一段内存查找的程序,怎么判断虚理内存地址里面的数据是在电脑内存条里面还是在硬盘交换文件里面的,也就是说我想跳过硬盘交换文件的查找,只搜索物理内存条,要怎么做?是否能在MBI里面体现出来?(或者用内镶汇编)高手请指点,
begin
Result := false;
equip := '';
nCount := 0;
ProcessHndle := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_QUERY_INFORMATION, false, ProcessID);
if ProcessHndle <= 0 then exit;
GetSystemInfo(SysInfo);
PMemoAddr := SysInfo.lpMinimumApplicationAddress;
MaxMemoAddr := DWORD(SysInfo.lpMaximumApplicationAddress);

try
while true do
begin
VirtualQueryEx(ProcessHndle, PMemoAddr, MBI, SizeOf(MBI));
nSize := MBI.RegionSize;
if (MBI.State = MEM_COMMIT) then
begin
~~~~~~~~~~~~~~~~~~~~~~~`
end;
end;

...全文
377 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
benjamin_von 2005-04-25
  • 打赏
  • 举报
回复
仿佛很牛的样子, 吓死了!
cqgaoke 2005-04-18
  • 打赏
  • 举报
回复
up
WangWeiGK 2005-04-15
  • 打赏
  • 举报
回复
好象就是用VirtualQueryEx就可以了

MBI.State表明了PMemoAddr所在的页的属性,由它可以知道PMemoAddr所在的页是在电脑内存条里面还是在硬盘交换文件里面的.MBI.State的具体值含义我已经记不清了,可以在MSDN文档里查到的。
yinbinfeng0451 2005-03-29
  • 打赏
  • 举报
回复
吓死了。。。

259

社区成员

发帖
与我相关
我的任务
社区描述
其他产品/厂家
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧