Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 有没有办法知道文件的哪个部分在被某个进程读取后仍在物理RAM中_Windows_Winapi_File_Filesystems - Fatal编程技术网

Windows 有没有办法知道文件的哪个部分在被某个进程读取后仍在物理RAM中

Windows 有没有办法知道文件的哪个部分在被某个进程读取后仍在物理RAM中,windows,winapi,file,filesystems,Windows,Winapi,File,Filesystems,假设我使用了一个读取文件的程序,并且该程序已经完成。现在, 很可能文件的某些部分仍然驻留在物理ram中(假设我有大量ram) 有没有办法知道文件的哪些部分驻留在物理ram中?是否有任何工具可以做到这一点,或者可能是winapi函数调用?需要记住的几点: 您永远无法直接访问物理RAM。操作系统为您提供了RAM的抽象。它可能是物理RAM,也可能是在某个硬盘上分页的虚拟内存。你永远不会知道 即使某些位仍然隐藏在RAM的某些部分(物理或其他),操作系统也会将该内存块视为空闲(除非它已经被再次占用)。我怀

假设我使用了一个读取文件的程序,并且该程序已经完成。现在, 很可能文件的某些部分仍然驻留在物理ram中(假设我有大量ram)


有没有办法知道文件的哪些部分驻留在物理ram中?是否有任何工具可以做到这一点,或者可能是winapi函数调用?

需要记住的几点:

  • 您永远无法直接访问物理RAM。操作系统为您提供了RAM的抽象。它可能是物理RAM,也可能是在某个硬盘上分页的虚拟内存。你永远不会知道
  • 即使某些位仍然隐藏在RAM的某些部分(物理或其他),操作系统也会将该内存块视为空闲(除非它已经被再次占用)。我怀疑你能在不入侵操作系统的情况下访问它
  • 关于你的评论,让我澄清我的观点:

    假设您打开了一个文件,将其读取到RAM中,对其执行了一些操作,然后关闭了该文件,并且您的程序已经终止。首先,我想我们都同意,您使用的部分RAM不再被占用,并且被操作系统认为是免费的。这意味着另一个需要一些RAM的程序可能会收到该内存块。因此,首先,内存块中不再有任何内容。它是空的。操作系统可自由使用

    现在,即使一些随机的数据位被挂起(记住,你无法知道它是物理的还是其他的),你也无法直接访问它们


    我希望这能澄清问题。

    如果您谈论的是Windows,则内容将在Windows文件缓存中

    现在没有读取Windows文件缓存的工具/API

    但是,您可以通过特殊名称读取物理内存中的所有内容,如CreateFile('\\.\PhysicalMemory')或名称\Device\PhysicalMemory。(注意:仅适用于XP/2000)

    >现在没有读取Windows文件缓存的工具/API


    当然有API(Win32 st)

    哪只公羊?处理器缓存?二级缓存?主存储器?I/O总线缓存?磁盘控制器缓存?你想知道哪一个?你想达到什么目标?文件中的信息是否敏感,是否要清除所有痕迹?Jon Skeet可能不同意这一点。他可能会借助一台煤动力计算器远程破解你的RAM;谢谢你的回答。但请仔细阅读我的问题。我不想直接访问RAM,我只想知道哪些文件(或其中的一部分)驻留在RAM中。@yossi1981:哪个RAM?在一个现代处理器中有很多很多的RAM,你问的是哪一个?对于Windows(NT系列)来说不是这样。他们有两张免费的名单,一张已经归零,另一张还没有归零。为您的进程分配的任何页面在您获得它之前都将被归零,因此您不会从另一个进程获得任何数据。