一个VB API的有关问题:VirtualQueryEx返回值为什么总是0
一个VB API的问题:VirtualQueryEx返回值为什么总是0?
下面这段代码相信很多人都看过,为什么我得到的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
------解决方案--------------------
试试不传值,行不行?
下面这段代码相信很多人都看过,为什么我得到的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
------解决方案--------------------
试试不传值,行不行?