2015-11-12 2 views
1

Моя программа должна найти SD-карты среди всех локальных дисков. Можно легко идентифицировать съемные диски (используя GetLogicalDrivesStrings() и GetDriveType()), но зная, какие из них действительно SD-карты, кажется сложнее.Обнаружение приводов SD-карт

Есть немало вопросов (в том числе here, here, here и here), но не полный ответ (много внимания на USB). Некоторые говорят, что невозможно отличить SD-карты от USB, однако Windows Explorer отображает различные значки дисков для SD-карт (по крайней мере, в Windows 7), поэтому он различает, что есть.

Дополнительный бонус за код НЕ основан на WMI, так как моя программа по-прежнему использует родной Win32/MFC! Могут ли помочь некоторые DeviceIoControl() свойства? Теперь, если у кого-то есть решение C#/.NET, я все равно с удовольствием прочитал бы его!

+2

Easy cheat; так как оболочка знает тип, спросите оболочку. Используйте 'SHGetFileInfo', чтобы получить индекс значка для диска. –

+0

Ха-ха! Вы заработали золотой значок _Dirty-yet-funny-and-even-maybe-effective solution_. Позвольте мне просто проверить индекс значка на всех версиях Windows! Я мог бы использовать ваше решение, которое покажет, насколько я в отчаянии :-D –

ответ

0

Должно быть возможно с DevicePowerEnumDevices

USB-флэш-накопитель должен иметь PDCAP_D2_SUPPORTED под «данные Power» в диспетчере устройств, но не карты памяти.

См. Обсуждение here

Смежные вопросы