使用事件查看器,我可以看到事件日志中有诸如“驱动程序在 \Device\Harddisk1\DR1 上检测到控制器错误”之类的条目。和“驱动程序在 \Device\Harddisk1\DR7 上检测到控制器错误。”。
使用 VC++ 代码,我想将此设备路径(例如 \Device\Harddisk1\DR1)转换为驱动器号,例如 C:(只要适用)(我知道并非所有设备都会映射到驱动器号)。
使用FindFirstVolume和FindNextVolume我可以遍历所有卷,并且对于每个卷,我使用QueryDosDevice来获取设备名称和GetVolumePathNamesForVolumeName来获取驱动器号。
我遇到的问题是,当我使用上述方法获取设备名称时,我最终会得到设备名称,例如“\Device\HarddiskVolume3”、“\Device\HarddiskVolume2”等。我确实将这些映射到驱动器号。但是,我不确定这些如何映射到我在事件日志条目中看到的设备名称格式。
所以,总而言之,我的问题是:如何将设备名称格式“ \Device\HarddiskVolume%d ”映射到格式“ \Device\Harddisk%d\DR%d ”,其中每个 %d 都是一个数字。