我最近有一个huge struggle with a disk I/O timeout bug,最终归结为System.IO.Directories.GetLogicalDrives()
和System.Environment.GetLogicalDrives()
正在返回驱动器A:\
,而实际上并不存在。我理解(在某种程度上)软盘控制器实际上并不够聪明,不知道物理媒体没有连接,因此我的书中得到了通过。
然而,我仍然得到一个实际上并不存在的幽灵驱动H:\
。目前我的解决方案是将GetLogicalDrives()
返回的所有驱动器传递给Directory.Exists()
,以便在实际访问它们之前检查它们,但这看起来有点黑客。
(遗憾的是,我不能使用DriveInfo
,因为这实际上是在Unity中,而Mono出于某种不可知的原因在我所绑定的版本中没有在Windows平台上实现DriveInfo
。 )
所以我的问题是双重的:
有没有人解释为什么Windows会在显然请求存在的驱动器的函数中返回不存在的驱动器?
除了检查路径或使用DriveInfo
测试驱动器是否确实存在之外,还有其他选择吗?