2017-02-18 216 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字母,所以我可以從中打開文件。 –

相關問題