回答
你可以使用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. 如何獲取USB存儲設備的設備名稱?
- 2. 如何使用數據存儲獲取條目的ID /名稱
- 3. 如何在c#中獲取存儲過程的參數名稱
- 4. 如何使用WinAPI/C獲取顯示器/顯示設備名稱#
- 5. 如何獲取調用存儲過程的數據庫名稱?
- 6. 如何獲取WinAPI錯誤的符號名稱?
- 7. 如何在調用sql存儲過程時獲取列名稱
- 8. 如何iBatis的春+獲取存儲過程的名稱
- 9. 如何獲取存儲在NSDocumentsDirectory中的文件的名稱?
- 10. 使用BCP QueryOut獲取存儲過程的列名稱
- 11. Python:獲取USB閃存驅動器設備的名稱[windows]
- 12. 獲取C#中的證書存儲名稱列表
- 13. 如何使用WinAPI獲取MessageBox圖標
- 14. C#:如何通過存儲在String中的名稱獲取對象?
- 15. Android:使用GraphRequest獲取並存儲Facebook名稱newMeRequest
- 16. 如何在.Net S3 SDK中按名稱獲取存儲桶?
- 17. 如何使用Javascript獲取名稱類?
- 18. 如何使用JavaScript獲取swf名稱?
- 19. 如何從c#使用win32獲取可訪問的名稱?
- 20. 如何使用Win32 Handle獲取C++文件的名稱?
- 21. 如何使用C#獲取asp.net Web控件的ID名稱
- 22. 如何使用C++獲取計算機的專有名稱(DN)
- 23. 如何使用C#獲取XML中的節點名稱?
- 24. 獲取連接的USB設備的端口名稱
- 25. 如何使用WINAPI(C++)
- 26. 獲取連接到Windows CE的USB驅動器名稱設備
- 27. 如何獲取具有可見窗口的任何進程的名稱 - WinAPI?
- 28. 如何在C#中使用.exe獲取應用程序名稱?
- 29. 如何使用LoginControl存儲用戶名和名稱?
- 30. mercurial:任何獲取存儲庫名稱的命令或python api
從你的問題,你甲肝什麼不清楚在輸入上,以及需要輸出什麼。例如卷標?你可以使用['GetVolumeInformation'](https://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v = vs.85).aspx)。但是你有'lpRootPathName'輸入嗎?不清楚 – RbMm