【发布时间】:2013-02-04 02:51:39
【问题描述】:
我在远程进程上使用 VirtualAllocEx 来保留一些空间,如下所示:
VirtualAllocEX (RemoteProcessHandle, nil, SizeInBytes, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
然后我用WriteProcessMemory“填充”/写入分配的地址空间
那我正确使用
VirtualFreeEx (RemoteProcessHandle, Address, 0, MEM_RELEASE);
释放分配的空间。
是否可以检查VirtualAllocEx的地址在调用VirtualFreeEx以检查VirtualFreeEx是否成功?
【问题讨论】:
-
VirtualFreeEx函数返回 BOOL,因此只需在调用时检查该值。 -
很抱歉我不够精确。我的意思是可以在调用 VirtualFreeEx 后检查它。 (比如说另一个线程想要检查这个空间是否最近被 VirtualFreeEx 释放了
-
你可以使用VirtualQueryEx来判断地址是分配的还是空闲的。但是如果地址是分配的,则无法判断这是您的分配还是其他人的分配。
标签: windows delphi winapi memory-management