Получить серийный номер SD-карты в Windows XP / Vista / 7?

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

Вопрос: как программно получить серийный номер производителя SD-карты с SD-карты в настольной Windows?

РЕДАКТИРОВАТЬ: Насколько я понимаю, это можно сделать с помощью DeviceIoControl IOCTL_SFFDISK_DEVICE_COMMAND для отправки команды 10 из спецификаций SD-карты, но это ненадежно - он работает только с некоторыми устройствами чтения карт без USB и только с определенными драйверами для этих устройств. Это делает его бесполезным для наших целей. Может быть, кому-то еще пригодится эта информация.


person Head Geek    schedule 23.10.2009    source источник
comment
Мой вопрос в том, знаете ли вы, что это можно сделать надежным образом, т.е. знаете ли вы о каком-либо программном обеспечении, которое уже делает это?   -  person Mahmoud Al-Qudsi    schedule 01.06.2012
comment
На момент этого вопроса я не смог найти надежного способа сделать это. Хотя прошло несколько лет, и с тех пор технология, возможно, достигла зрелости.   -  person Head Geek    schedule 02.06.2012
comment
И нет, я также не нашел другого программного обеспечения, которое бы делало это надежно.   -  person Head Geek    schedule 02.06.2012


Ответы (1)


Что ж, вы можете сделать это с помощью вызовов API-интерфейса SetupDiXXX (см. Этот пример проекта кода ) или, если не ошибаюсь, с помощью запросов WMI.

Я не очень универсален в использовании запросов WMI, но уверен, что в сети есть масса информации об этом.

Используя методы SetupDiXXX, вы можете запросить существующие устройства определенного класса (вам нужно будет найти класс устройства для SD-карт), а затем перечислить устройства, присутствующие в компьютере, считывая серийный номер производителя.

Для справки о функциях SetupDiXXX см. Следующие

person Mike Dinescu    schedule 23.10.2009
comment
Спасибо, но похоже, что надежно это сделать невозможно. Я редактирую вопрос, чтобы объяснить, что я нашел. - person Head Geek; 25.10.2009