我正在开发c ++ WinAPI程序,通过Volume {GUID}和CreateFile
函数直接使用WriteFile
在我的USB驱动器上写入数据,就像许多例子一样。正如备注中提到的here:
如果卷没有,则卷句柄上的写入将成功 已安装的文件系统,或者如果满足下列条件之一:
- 要写入的扇区是引导扇区。
- 要写入的扇区驻留在文件系统空间之外。
- 您已使用
FSCTL_LOCK_VOLUME
或FSCTL_DISMOUNT_VOLUME
明确锁定或撤消了该卷。- 该卷没有实际的文件系统。 (换句话说,它安装了RAW文件系统。)
我希望在没有任何卸载的情况下顺利在USB上写入100Mb的数据。所以我从上面尝试了两个案例。
此外,我尝试使用/不使用文件系统创建第二个分区(对于Windows是不可见的),并通过第一个分区末尾的偏移直接写入,但也不成功:我无法读取或写在那里。
所以,如果有人知道至少回答其中一个问题:
答案 0 :(得分:2)
我很确定它确实有效,但你没有意识到你绕过了Windows。这意味着Windows不会注意到你做了什么。因此,如果您使用Windows来检查您所执行的操作,则不会报告更改。
解决各个子问题:普通文件系统填满整个分区,因此您无法解决问题。您的功能可以顺利写入USB,这不是问题所在。不,Windows通常会将USB视为未分区存储。