gpt4 book ai didi

c++ - USB 驱动器 WriteFile 到卷外的扇区

转载 作者:行者123 更新时间:2023-11-28 02:00:11 24 4
gpt4 key购买 nike

我正在开发 c++ WinAPI 程序,通过 Volume{GUID} 和 WriteFile 函数直接使用 CreateFile 将数据写入我的 USB 驱动器,正如许多示例所做的那样。如前所述 here在备注中:

A write on a volume handle will succeed if the volume does not have a mounted file system, or if one of the following conditions is true:

  • The sectors to be written to are boot sectors.
  • The sectors to be written to reside outside of file system space.
  • You have explicitly locked or dismounted the volume by using FSCTL_LOCK_VOLUME or FSCTL_DISMOUNT_VOLUME.
  • The volume has no actual file system. (In other words, it has a RAW file system mounted.)

我想在不卸载的情况下顺利地在 USB 上写入 100Mb 的数据。所以我已经尝试了上面的两个案例。

  1. 第二种情况:在文件系统外写入(我已经扩展了每个分区的扇区数,但没有扩展 FAT32 表),但是不卸载是行不通的!
  2. 第四种情况:写入没有任何文件系统的卷(未格式化)。但如果不卸载它也不起作用!

此外,我还尝试创建带/不带文件系统的第二个分区(对于 Windows 不可见),并直接写入第一个分区末尾的偏移量,但也没有成功:我无法在那里读取或写入.

所以,如果有人至少知道其中一个问题的答案:

  1. 如何在外部分区内创建扇区文件系统?
  2. 有直接在U盘上流畅写入的能力吗?
  3. 我还可以在 Windows 中写入 USB 上的第二个分区而无需玩转驱动程序、NTCreateFile 和其他深层函数?

最佳答案

我很确定它确实有效,但您没有意识到您正在绕过 Windows。这意味着 Windows 不会注意到您的操作。因此,如果您使用 Windows 检查您所做的事情,它不会报告更改。

解决各个子问题:一个普通的文件系统会填满整个分区,所以你不能。您的功能可以顺利写入 USB,这不是问题。不,Windows 通常将 USB 视为未分区存储。

关于c++ - USB 驱动器 WriteFile 到卷外的扇区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39891322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com