在Windows(XP-7)上,是否有一種可編程方式區分C++中的USB軟盤驅動器和USB閃存驅動器?在Windows中編程區分USB軟盤驅動器和USB閃存驅動器
目前,我使用WMI在檢測到新的Win32_LogicalDisk
實例時獲取更新,然後使用LogicalDisk對象的DriveType屬性找出基本類型。這很好,除了軟盤驅動器和USB閃存驅動器都是DriveType DRIVE_REMOVABLE
,所以區分這些(軟盤和閃存),我使用IOCTL_STORAGE_GET_HOTPLUG_INFO
接口來確定設備是否可熱插拔,並且正在工作就這個原則來說,這意味着它是一個閃存驅動器,而不是軟盤。同樣,我認爲在內部軟盤驅動器的情況下,這種方式效果很好(如果效率低一點,使用WDK API和WMI來獲取信息),但不幸的是,USB軟盤驅動器在很長時間內也是熱插拔的,所以存在沒有明確的方法來區分閃存和USB軟盤驅動器,我可以看到。我知道可能工作,如檢查其映射到保留的驅動器A:或B(編輯:只有相關,如果機器肯定有一個軟盤驅動器 - 見MS-KB: How to change drive letter assignments in Windows XP),或看看說明,但我我真的很喜歡一些更可靠的東西。
對不起,很長的解釋,但只是想清楚!謝謝
答:和B:被保留用於floppies_?資源? – MSalters
我從[MS-KB:如何在Windows XP中更改驅動器號分配](http://support.microsoft.com/kb/307844)以及它用它來表達它的方式得到了這一點,但是它也指出,如果機器沒有軟盤驅動器,那麼它們可能被用於其他驅動器,所以可以說它是一個誤導,並且不表示驅動器是否是軟盤驅動器。我會重新說一下這個問題,使其更清楚。 – user82116
啊,這是從用戶的角度,當你手動更改driveletters。當時有道理,我從OS的角度思考。 – MSalters