是否可以locking我的应用程序中的公共控件使用的内存?

我正在编写一个encryption数据的应用程序。 在用户input密码后,它可以使用应用程序的用户界面进行未encryption显示。 我的目标是尽量减lessRAM中的明文数据的暴露。 为此,我想尽可能地防止将其交换到磁盘。

我知道我可以调整我的进程的工作集(通过调用SetProcessWorkingSetSize API),然后将这些敏感页面locking在RAM中(通过调用VirtualLock )。理论上,应该尽量减less写入磁盘的机会。

我的问题是,我可以使用我的对话窗口中的常用控件使用的内存,即在编辑框 , combobox ,最重要的RichEdit控件?

PS。 我假设他们都使用来自堆的数据为我的过程。 正确?

编辑: 看到下面的所有意见,我需要澄清。 通过说“锁”,我不是说,“用挂锁和钥匙把它锁起来,让人看不到”。 我的意思是,像VirtualLock API一样locking它。

您可以使用EM_SETHANDLE为编辑控件的初始分配设置句柄,然后在(if)空间不足并需要更多空间时响应EN_ERRSPACE

从那里开始,你也可以在VirtualLock内存上使用VirtualLock来尽可能地保存在RAM中。 如果你打算这么做的话,你可能会考虑对控件进行超类化,以防止在任何地方复制代码。

不管怎么样,我不相信富文本控件是等价的。

实际上有一个本地Windows API,以帮助最大限度地减少密码到内存刮擦等关键项目的曝光。

请参阅CryptProtectMemory作为起点。