[英]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.