【问题标题】:is it safe to use EmptyWorkingSet like this?像这样使用 EmptyWorkingSet 是否安全?
【发布时间】:2021-03-31 07:59:40
【问题描述】:

我一直在开发一款可以发送击键来模仿用户操作的应用。为此,我想记录我的击键。我在互联网上四处寻找如何完成这样的任务,我发现了一个名为 Key Catcher 的程序。因为我担心我的设备上会出现恶意键盘记录器,所以我首先阅读了源代码,我发现了这一行:

   return, dllcall("psapi.dll\EmptyWorkingSet", "UInt", -1)

我不知道这个命令是什么,谷歌搜索给了互联网论坛警告不要自己使用 EmptWorkingSet,但也有使用这个没有问题的特定程序的例子。谁能解释这应该如何使用?或者如果这会带来问题?或者有人可以提供更好的选择吗?

PS:如果有帮助,每次进程完成时都会使用此命令

【问题讨论】:

  • 如果您想要一个好的答案,您的问题至少需要一个有意义的好标题。

标签: c autohotkey keylogger


【解决方案1】:

“EmptyWorkingSet”操作从内存中删除尽可能多的应用程序页面。认为拥有大量可用 RAM 就很好的人经常错误地使用它。

它通常不会造成太大的伤害。如果需要,这些页面可以相当快地加载回 RAM。但它唯一的好处是使空闲内存页的数量增加,这实际上是有点害处。

基本上不在这里也不在那里。从对性能至关重要的进程调用它是非常糟糕的,因为它会减慢进程。从一个在 RAM 中积累了大量不需要存在的垃圾的进程中调用它可能很有用。但是操作系统已经从 RAM 本身中删除了这些东西。

【讨论】:

  • 感谢您的回复!你的意思是什么:但它唯一的好处是使空闲内存页面的数量增加,这实际上是有点有害的。这有什么害处?
  • @mxyzptlk 使页面免费。为了让免费页面有任何好处,操作系统必须再次使用它们。所以这是两个基本上相互抵消的步骤。操作系统可以将页面从一种用途更改为另一种用途,因此当操作系统已经可以让它们免费时,如果它只想从操作系统中获取选项,就可以让它们免费。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 2011-05-30
  • 1970-01-01
相关资源
最近更新 更多