假设我有一个缓冲区,比如在char *pBuffer = new char[100];
中有100字节,我想通过它将特定指令传递给第三方函数,只写入上半部分而下半部分超出限制。我如何使用Win32 API来执行该操作?如何使用Win32 API保护特定区域的内存?
谢谢。
PS:这个特殊的例子可能不完美,但我清楚我的问题。
假设我有一个缓冲区,比如在char *pBuffer = new char[100];
中有100字节,我想通过它将特定指令传递给第三方函数,只写入上半部分而下半部分超出限制。我如何使用Win32 API来执行该操作?如何使用Win32 API保护特定区域的内存?
谢谢。
PS:这个特殊的例子可能不完美,但我清楚我的问题。
您需要使用VirtualProtect才能将上半部分标记为只读。由于VirtualProtect使用页面而不是字节,因此在您的示例中需要VirtualAllocPAGE_SIZE
+ 50字节,并调整pBuffer
以符合您的要求。
非常感谢您的帮助。 – mousepad 2011-03-20 18:43:23
@mousepad也可以看看关于Windows虚拟内存的这篇概述文章。有点旧但仍然有趣。 http://msdn.microsoft.com/en-us/library/ms810627.aspx – 2013-02-09 13:40:43
出于好奇,第三方应用程序是否必须访问数组中的只读信息? – steinar 2011-03-20 18:55:21