![](/img/trans.png)
[英]How can I find how much memory my application is used any any time in c++
[英]Is it possible to lock memory used by common controls in my application?
我正在编写一个对其数据进行加密的应用程序。 然后,它可以显示它在用户输入密码后,使用应用程序的UI加密。 我的目标是尽量减少,而在RAM明文数据的曝光。 为此,我想尽可能避免将其交换到磁盘上。
我知道我可以调整进程的工作集(通过调用SetProcessWorkingSetSize API),然后将这些敏感页面锁定在RAM中(通过调用VirtualLock) 。从理论上讲,这应该最大程度地减少将其写入磁盘的机会。
我的问题是,我可以做所使用的通用控件在我的对话框窗口,即在内存中相同的编辑框 , 组合框 ,最重要的RichEdit控制?
PS。 我假设它们都将堆中的数据用于我的进程。 正确?
编辑: 看到所有的评论下面我需要澄清。 说“锁定”,我不是这个意思,“用挂锁和钥匙锁住它,这样没有人能看到它。” 我的意思是,将其锁定为与VirtualLock
API。
您可以使用EM_SETHANDLE
设置编辑控件的初始分配的句柄,然后在(如果)空间不足并且需要更多空间时响应EN_ERRSPACE
。
从那里开始,还取决于您是否在该内存块上使用VirtualLock
将VirtualLock
尽可能地保留在RAM中。 如果您打算做很多事情,则可能要考虑对控件进行超类化,以防止在各处复制代码。
不管是好是坏,我都不相信富文本控件具有等效功能。
实际上,有一个本机Windows API可以帮助最大程度地减少关键内容(例如密码)对内存刮取的影响。
请参阅CryptProtectMemory作为起点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.