gpt4 book ai didi

winapi - 如何将事件日志中的设备详细信息(例如\Device\Harddisk1\DR1)映射到驱动器号(例如C :?)

转载 作者:行者123 更新时间:2023-12-04 12:52:49 26 4
gpt4 key购买 nike

使用事件查看器,我可以看到事件日志中有诸如“驱动程序在\Device\Harddisk1\DR1 上检测到 Controller 错误”之类的条目。和“驱动程序在\Device\Harddisk1\DR7 上检测到 Controller 错误。”。

使用 VC++ 代码,我想将此设备路径(例如\Device\Harddisk1\DR1)转换为驱动器号,例如 C: 在适用的情况下(我知道并非所有设备都会映射到驱动器号)。

使用 FindFirstVolumeFindNextVolume 我可以遍历所有卷,对于每个卷,我使用 QueryDosDevice 获取设备名称和 GetVolumePathNamesForVolumeName 获取驱动器号。

我遇到的问题是,当我使用上述方法获取设备名称时,我最终得到的设备名称如“\Device\HarddiskVolume3”、“\Device\HarddiskVolume2”等。我确实将这些映射到驱动器号。但是,我不确定这些如何映射到我在事件日志条目中看到的设备名称格式。

所以,总而言之,我的问题是:如何将设备名称格式“\Device\HarddiskVolume%d”映射到格式“\Device\Harddisk%d\DR%d”,其中每个 %d 是一个数字。

最佳答案

这不是 C++ 代码,但用 C++ 编写的两个应用程序显示了此信息,至少可以检查您的结果。我认为这两个应用程序的源代码都不容易获得。

  1. NirSoft's DriveLetterView将驱动器号与 Drive LetterDevice Path 列中的 \Device\HarddiskVolume%d 相匹配。

NirSoft's DriveLetterView

  1. SysInternals' WinObj将盘符匹配到 \Device\HarddiskVolume%d\Device\Harddisk%d\DR%dPhysicalDrive%d

WinObj example

关于winapi - 如何将事件日志中的设备详细信息(例如\Device\Harddisk1\DR1)映射到驱动器号(例如C :?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18509633/

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