回答
你可以使用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
工具
那些看起来很有用的链接,但是你在答案中添加的信息是非常可疑的? “USB标准不支持序列号”谁告诉你的? USB标准确实提供了一个序列号,但是一些设备制造商没有遵循标准,并且在每个设备上留下了一个串行输出或者使用了同一个序列号。 “这太复杂了”比使用'DeviceIOControl'和'SetupDi' *函数复杂得多。 –
谢谢@raft htp,这似乎很有用,完成后我会为他人解决方案! –
我也需要这个。我检查你的所有链接,我找不到如何获得USB驱动器盘符(例如F :)。我可以得到VID和PID,这对我来说很重要,但我也需要该设备的USB字母,所以我可以从中打开文件。 –
- 1. 如何在c#中获取存储过程的参数名称
- 2. 如何使用WinAPI/C获取显示器/显示设备名称#
- 3. 如何获取WinAPI错误的符号名称?
- 4. 如何在调用sql存储过程时获取列名称
- 5. 如何获取存储在NSDocumentsDirectory中的文件的名称?
- 6. 获取C#中的证书存储名称列表
- 7. Android:使用GraphRequest获取并存储Facebook名称newMeRequest
- 8. 如何使用Javascript获取名称类?
- 9. 如何在.Net S3 SDK中按名称获取存储桶?
- 10. 获取连接的USB设备的端口名称
- 11. 如何从c#使用win32获取可访问的名称?
- 12. 如何使用Win32 Handle获取C++文件的名称?
- 13. 如何使用C#获取XML中的节点名称?
- 14. 如何使用C#获取asp.net Web控件的ID名称
- 15. 如何使用WINAPI(C++)
- 16. 获取连接到Windows CE的USB驱动器名称设备
- 17. 如何获取具有可见窗口的任何进程的名称 - WinAPI?
- 18. 如何在C#中使用.exe获取应用程序名称?
- 19. 如何使用LoginControl存储用户名和名称?
- 20. 如何从PID使用C获取进程名称
- 21. 如何使用C#从XElement获取元素名称?
- 22. 如何从C#中的USB闪存驱动器获取VID/PID?
- 23. 使用存储的名称CREATE SCHEMA
- 24. WinApi从USB端口获取可用字节数?
- 25. C# - 获取对象名称?
- 26. C#获取excel宏名称
- 27. 如何获取APN名称
- 28. 使用用于github api的octokit ruby工具包获取存储库名称
- 29. 如何使用ctypes调用WINAPI函数并存储返回值
- 30. WINAPI USB DEVICE LIST C LIBUSB没什么好
从你的问题,你甲肝什么不清楚在输入上,以及需要输出什么。例如卷标?你可以使用['GetVolumeInformation'](https://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v = vs.85).aspx)。但是你有'lpRootPathName'输入吗?不清楚 – RbMm