2011-03-20 41 views
0

假设我有一个缓冲区,比如在char *pBuffer = new char[100];中有100字节,我想通过它将特定指令传递给第三方函数,只写入上半部分而下半部分超出限制。我如何使用Win32 API来执行该操作?如何使用Win32 API保护特定区域的内存?

谢谢。

PS:这个特殊的例子可能不完美,但我清楚我的问题。

+0

出于好奇,第三方应用程序是否必须访问数组中的只读信息? – steinar 2011-03-20 18:55:21

回答

3

您需要使用VirtualProtect才能将上半部分标记为只读。由于VirtualProtect使用页面而不是字节,因此在您的示例中需要VirtualAllocPAGE_SIZE + 50字节,并调整pBuffer以符合您的要求。

+0

非常感谢您的帮助。 – mousepad 2011-03-20 18:43:23

+0

@mousepad也可以看看关于Windows虚拟内存的这篇概述文章。有点旧但仍然有趣。 http://msdn.microsoft.com/en-us/library/ms810627.aspx – 2013-02-09 13:40:43