我使用一个名为 SyncBackFree(CNET 4.5 * 评级)的程序将几千个文件从一个硬盘复制到另一个硬盘。一切似乎都运行正常,没有错误,日志文件中也没有错误。我刚刚注意到一个目录中的一堆 DLL 文件的长度正确,但数据全为零(使用十六进制查看器)。我随机检查了一些其他文件,例如图像和视频,它们似乎都没问题。为什么 dll 文件全为零?我进行复制是因为我的硬盘速度变慢了,我担心可能出现故障。我运行了一个程序来测试我的系统和硬盘,它说一切正常。
答案1
考虑一下原件可能全是零
这可能只是一种误解。请查看其他 dll,看看是否所有 dll 都发生过这种情况,或者是否只在某些特定情况下发生过这种情况。dll 只是文件,因此将以相同的方式处理。还要查看是否仍在进行某些恢复或类似奇怪的事情,因为它可能放置了全为零且大小合适的占位符文件,只是打算稍后返回并用正确的数据填充它。这可能是一个好的可能性,因为我知道 torrenting 有一个您可以设置的选项,它基本上可以做同样的事情,这样就可以保证有足够的空间来完成它的工作。
答案2
这更多的是一种观察而不是答案,但它可能会有帮助,所以这里是......
我有一个使用 dll 的 Win32 应用程序插入POut32.dll在 Windows 95 和 XP 下运行时直接访问并行端口。即使在将应用程序转移到 64 位计算机后,此方法也能正常工作。但是,前几天我尝试再次运行它并收到以下消息:
inpout32.dll is either not designed to run on Windows or it contains an error. Try installing the program again using the original installation media or contact your system administrator or the software vendor for support.
我用十六进制编辑器打开了 DLL 文件,里面全是零!我 90% 确定这种情况刚刚开始出现在我们的 x64 机器上 - 也就是说,DLL 之前没有被卡住。
幸运的是,它仍在开发中,所以有替代品可用。将它放在与 exe 相同的文件夹中让我重新开始工作。
因此,我在想,也许 Windows 在加载 DLL 时会对其进行某种健全性检查,但将其清除为零似乎有点过分。