2017-02-18 408 views
1

细节我想喜欢“USB NAME”这一形象 enter image description here如何使用C++ WinAPI获取存储USB的名称?


中获取字母“F”也是有用的。
请注意,这些代码必须能够在winxp和更新版本上运行。
感谢您的帮助!

+1

从你的问题,你甲肝什么不清楚在输入上,以及需要输出什么。例如卷标?你可以使用['GetVolumeInformation'](https://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v = vs.85).aspx)。但是你有'lpRootPathName'输入吗?不清楚 – RbMm

回答

-1

你可以使用DeviceIOControl组合和SetupDiGetDeviceInterfaceDetail

完整的源代码是关于

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/a87c4cc3-bfc1-4664-8317-af30f03a715e/get-usb-drive-details?forum=wdk不要试图得到一个序列号,因为一些厂家的USB设备的迪不支持序列号)

其他可能性(更容易)是使用组合GetDriveType()GetDisksProperty()源代码是在https://www.codeproject.com/Articles/6559/How-To-get-the-usbdisk-s-drive-letter-properly

一个非常简单的版本是How to retrieve removable storage drive letter using C/C++

另一种可能性是How to list physical disks?GetLogicalDrives() for loop(使用GetLogicalDrive(返回位掩码必须被转换为普通驱动器号A:, B: C:,...))< - 这太复杂

不是在C++中,你可以使用wmic工具

+0

那些看起来很有用的链接,但是你在答案中添加的信息是非常可疑的? “USB标准不支持序列号”谁告诉你的? USB标准确实提供了一个序列号,但是一些设备制造商没有遵循标准,并且在每个设备上留下了一个串行输出或者使用了同一个序列号。 “这太复杂了”比使用'DeviceIOControl'和'SetupDi' *函数复杂得多。 –

+0

谢谢@raft htp,这似乎很有用,完成后我会为他人解决方案! –

+0

我也需要这个。我检查你的所有链接,我找不到如何获得USB驱动器盘符(例如F :)。我可以得到VID和PID,这对我来说很重要,但我也需要该设备的USB字母,所以我可以从中打开文件。 –

相关问题