1

假设我有一个在 Windows XP 上运行的应用程序,它是从映射的网络驱动器“启动”的。当此应用程序的执行触发页面错误并且需要从磁盘读取代码页时,假设它不在页面文件中,Windows 将转到映射的网络共享以从磁盘中读取必要的代码页还是将首次执行时它会在本地复制它吗?我意识到有不同类型的页面错误,但我特别询问必须从磁盘上的文件中读取代码的情况。在这种情况下,由于应用程序的图像存在于远程共享上,我假设页面错误处理程序必须前往网络共享以检索代码页。这个对吗?

我有一个以这种方式运行的应用程序,它似乎会定期“挂起”系统,但系统会在短时间内响应,有时只需几秒钟,在其他情况下为 10-15 分钟。该系统还安装了许多 A/V 和 DLP 产品,因此有几个 TDI 过滤器驱动程序和文件系统过滤器驱动程序似乎会增加处理页面错误的延迟,特别是如果代码必须从进程中调入存在于远程共享上的图像。

我一直在阅读 Windows Internals 并讨论了页面错误处理,但在处理远程映射驱动器时我没有看到任何提及该案例。我假设它必须到网络共享来检索必要的代码页,但我只是想确定我是对的。如果有人有其他推荐的读物,我很想听听。我目前有一个内核调试器连接到一个有问题的系统,所以我可以在行动中抓住它,但是,当然,因为我已经连接了内核调试器并且已经运行了 2 天,所以我还没有看到问题再次发生。

4

1 回答 1

0

我不确定这个问题是否正确。

Windows 会去映射的网络共享以从磁盘中读取必要的代码页,还是会在首次执行时在本地复制它?”

所有代码必须在本地内存中才能执行。网络映射驱动器上的页面错误将导致网络 I/O 获取适当的页面,该页面将加载到本地内存中然后使用。

在这种情况下,由于应用程序的图像存在于远程共享上,我假设页面错误处理程序必须前往网络共享以检索代码页。这个对吗?”

是的。页面错误处理程序不知道驱动器是网络映射的。它将发出一个文件系统 IRP。网络映射驱动程序将拦截它并将其转换为网络 IRP。所以页面错误处理程序只是在做正常的事情;它不知道你在后台做巫术。

我有一个以这种方式运行的应用程序,它似乎会定期“挂起”系统,但系统会在短时间内响应,有时只需几秒钟,在其他情况下为 10-15 分钟。该系统还安装了许多 A/V 和 DLP 产品,因此有几个 TDI 过滤器驱动程序和文件系统过滤器驱动程序似乎会增加处理页面错误的延迟,特别是如果代码必须从进程中调入存在于远程共享上的图像。

呃,上面有这么多内核黑客的东西,我的第一个想法是你的 Windows 安装只是简单粗暴。A/V 的东西对 Windows 来说是毒药,你似乎有很多东西被塞进内核——你在自找麻烦,似乎麻烦已经来了。

最简单的解释是最有可能的;考虑到您这里有大量的恶意软件,Windows 很可能只是被搞砸了。您不需要更深入的技术解释!

于 2009-03-24T20:54:19.493 回答