将 Windows 设备路径解析为驱动器盘符
如何将 NT 样式设备路径(例如 \Device\CdRom0
)解析为其逻辑驱动器号(例如 G:\
)?
编辑:卷名称与设备路径不同,因此不幸的是 GetVolumePathNamesForVolumeName()
将不起作用。
How do you resolve an NT style device path, e.g. \Device\CdRom0
, to its logical drive letter, e.g. G:\
?
Edit: A Volume Name isn't the same as a Device Path so unfortunately GetVolumePathNamesForVolumeName()
won't work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
希望下面的代码足以解决这个问题 - 在初始化它之后,您只需要迭代集合即可找到匹配项。 您可能希望在插入集合之前将所有内容转换为大写/小写,以帮助提高查找性能。
Hopefully the following piece of code will give you enough to solve this - after you've initialised it, you just need to iterate through the collection to find your match. You may want to convert everything to upper/lower case before you insert into the collection to help with lookup performance.
也许您可以使用 GetVolumeNameForMountPoint 并迭代所有挂载点 A:\ 到 Z:\,在找到匹配项时中断?
http://msdn.microsoft.com/en-us /library/aa364994(VS.85).aspx
(我没有尝试过)
Maybe you could use GetVolumeNameForMountPoint and iterate through all mount points A:\ through Z:\, breaking when you find a match?
http://msdn.microsoft.com/en-us/library/aa364994(VS.85).aspx
(I haven't tried this)
以下函数仅使用 C 完成这项工作
Following function does the job using C only
您可以查找所有卷的名称以匹配设备名称并获取驱动器号。这是一个示例:
如果您想在驱动程序中解析它,您可以检查此 链接供参考。
You can lookup all volumes' name to match a device name and get drive letter.Here is a sample:
If you want to resolve it in driver,you can check this link for reference.
这是解决方案的重构版本。
我用 wchar_t 替换了 TChAR,因为据我所知,在大多数项目中使用它并不是一个好主意。
Here is refactored version of the solution.
I replaced TChAR with wchar_t because afaik it's not a good idea to use it in most projects.