Windows 10似乎损坏了FAT

时间:2017-12-20 08:20:18

标签: windows embedded fat

我正在开发2011年开发的固件。该设备具有USB OTG模块,可以插入PC的USB端口。它有1 MB的闪存。当检测到USB插件时,固件会生成两个文件,PDF和TTV(专有格式)。这些文件保存在闪存中。然后将闪存作为大容量存储设备暴露给Windows。 固件始终生成文件,然后将设备公开给Windows。用户可以读取文件并将自己的文件放在闪存设备上。

固件使用FatFs库作为文件系统。我们使用FAT格式进行闪存存储。

当USB插入时,如果在文件系统中找不到PDF和TTV文件,则它们由固件生成并保存在文件系统中。

现在考虑以下工作流程:

  1. 用户从Windows 10格式化闪存驱动器。它必须是低级格式。 Windows会生成一个名为" System Volume Information。"
  2. 的文件夹
  3. 设备已拔下插头。
  4. 已插入设备。
  5. 固件检测到没有文件。
  6. 固件生成PDF文件。使用文件系统保存它。 FAT和Root目录也相应更新。
  7. 固件生成TTV文件。使用文件系统保存它。 FAT和Root目录也相应更新。
  8. 固件会将闪存驱动器暴露给Windows。
  9. PDF文件随机发现已损坏。
  10. Windows 10格式化FAT文件系统时会发生什么?它以下列三种方式之一创建FAT:

    样式1

    enter image description here

    样式2

    enter image description here

    样式3

    enter image description here

    考虑样式1.当固件生成PDF文件时,它将从群集5开始(当FAT[0]FAT[4]被占用时)。一切顺利。可以从Windows的闪存驱动器打开PDF文件。

    enter image description here

    考虑样式2.当固件生成PDF文件时,它将从群集3开始。固件生成PDF和TTV文件,将它们保存在闪存中,正确更新FAT和根目录(我确定为我从调试中看到了这一点。当设备插入时,Windows将0x000写入FAT[3]以及跨越PDF文件的所有其他FAT条目!

    enter image description here

    根目录中的条目仍然存在于PDF文件中。

    enter image description here

    在任何PDF阅读器中从Windows 10打开PDF文件时,这会导致PDF损坏。类似的东西也出现在Style 3中。似乎Windows 10不喜欢其他设备在集群0中写入集群4(集群0和1已经被保留)。

    这在Windows的任何先前版本(7或8.x)中都不会发生。

    那么Windows 10会发生什么?为什么Windows 10会破坏FAT?

0 个答案:

没有答案