| 发表于:2007-01-23 22:38:25 楼主 |
下面这段代码相信很多人都看过,为什么我得到的ret全都为0? 调试结果:openprocess成功返回,运行到virtualqueryex时总返回0 public function gettotalcommittedmemory(byval processid as long) as long dim hprocess as long dim mi as memory_basic_information dim paddr as long dim dwtotalcommit as long dim ret as long dim milen as long milen = len(mi) dwtotalcommit = 0 '这是结果 paddr = &h0 '这个时查询起始地址,设为0,即进程虚拟地址开始处。 hprocess = openprocess(process_vm_read, false, processid) '首先打开进程供查询信息 ret = virtualqueryex(hprocess, byval paddr, mi, milen) '从起始地址开始查询 do while (ret = milen) if mi.state = mem_commit then '如果state是mem_commit则表明这块内存被占用,regionsize是这一块内存的大小,这一块内存的state都一样 dwtotalcommit = dwtotalcommit + mi.regionsize end if paddr = mi.baseaddress + mi.regionsize '跳过已经查询过的内存块,到未被查询的内存地址起始处 ret = virtualqueryex(hprocess, byval paddr, mi, milen) '再次查询,直到查询失败(所有可查询地址都已经查过了) loop gettotalcommittedmemory = dwtotalcommit end function 请教高手这是为什么????为什么在openprocess成功后virtualqueryex返回的一直是0? 如果可以的话请发一实例到小弟的邮箱,谢谢!! cs5@hotmail.com |
|
|
|
|