Уникальный идентификатор устройства (серийный идентификатор оборудования или серийный идентификатор тома) Windows

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

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

Я посмотрел на код для http://www.winsim.com/diskid32/ но это, кажется, просто возвращает серийный идентификатор тома. РЕДАКТИРОВАТЬ: На самом деле, это значение отличается от серийного тома, как вы можете видеть в выводе ниже:

Vol Name is Hellblazer
Vol Serial is 3358611714
Max Filelength is 255 chars
Filesystem is NTFS

202020202020202020205a204339464a38305345
Z9CJF08ES

Последовательность в первом бите кода (с использованием GetVolumeInformation) является десятичной версией шестнадцатеричного значения, которое вы получаете для накопителя при вводе ‘vol’ в командной строке — так что это серийный номер тома. Ниже приведен номер, который возвращается DeviceIoControl(hwDrive, IOCTL_STORAGE_QUERY_PROPERTY..., Это тот же ID, программист diskid32 получает для моего привода, но отличается от фактического серийного ниже. Недоумение.

Для USB-накопителей:
Используя PSP_DEVICE_INTERFACE_DETAIL_DATA struct, я могу получить доступ к перечислению устройства GUID, которое выглядит для моего USB-накопителя следующим образом:

\? \ USBSTOR # диск&ven_toshiba&prod_mk5059gsxp&rev_gn00 # 203216187542__&0 # {53f563
07-b6bf-11d0-94f2-00a0c91efb8b}

это часть информации об этом устройстве является серийной, предположительно:

203216187542__

Кроме того, я загрузил diskpart.exe (программу для разбиения строки на cmd) и посмотрел информацию о жестких дисках моего системного жесткого диска и внешнего USB-накопителя, и ни одно из них не соответствовало ни одному из значений, которые я получаю выше:

Код диска устройства TOSHIBA MK5055GSXF ATA: 00005B9E

TOSHIBA MK5059GSXP USB-идентификатор устройства: 51260D08

Что здесь может происходить? Где и как я могу получить доступ к фактическому серийному номеру изготовителя фактического устройства?

Любая помощь будет принята с благодарностью!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]