Автор Тема: Определение VendorID, ProductID и серийного номера Флешки  (Прочитано 5818 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vitorrio [?]

  • Новичок
  • *
  • Сообщений: 8
  • Репутация: 0
    • Награды
Привествую всех!
Перетрусил уже тучу сайтов, но пока ничего толком не работает.
А задача собственно такая: как средствами Autoit получить
VendorID, ProductID и серийник USB Flash drive.
Путём долгого вкуривания в MSDN нашёл несколько функций, пробую так:

Код: AutoIt [Выделить]

#include <WinAPIEx.au3>

_IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER()

Func _IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER()
Local $sDrive = 'k:'
Local $result;
Local $str_OutBuffer;
Local $iControlCode = 'IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER';
Local $str_OutBuffer = DllStructCreate('byte;dword;byte;dword;byte;dword;byte;dword;')
$hFile = _WinAPI_CreateFileEx('\\.\' & $sDrive,$OPEN_EXISTING,$GENERIC_READ+$GENERIC_WRITE,$FILE_SHARE_READ+$FILE_SHARE_WRITE);
if @error <> 0 Then
        ConsoleWrite('File not created.' & @CRLF);
        Return SetError(1, 0, 0)
    Else
        $result = _WinAPI_DeviceIoControl($hFile,$iControlCode,0,0,DllStructGetPtr($str_OutBuffer),DllStructGetSize($str_OutBuffer));
        if $result <> 0 Then
            ConsoleWrite('SerialNumberLength: ' & DllStructGetData($str_OutBuffer,1) & @CRLF)
            ConsoleWrite('Result status: ' & DllStructGetData($str_OutBuffer,2) & @CRLF)
            ConsoleWrite('Reserved: ' & DllStructGetData($str_OutBuffer,3) & @CRLF)
            ConsoleWrite('SerialNumber: ' & DllStructGetData($str_OutBuffer,4) & @CRLF)
            Return $str_OutBuffer
        Else
            ConsoleWrite(_WinAPI_GetLastError() & @CRLF);
            ;Return _WinAPI_GetLastError();
        EndIf
    EndIf
_WinAPI_CloseHandle($hFile);
EndFunc


Вылетает с LastError = 50 ( The request is not supported)    :wacko:

Не понимаю в чём проблема!? Функция не работает с UFD?
Ось XP SP3.

Help please!

Русское сообщество AutoIt


Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Код: AutoIt [Выделить]
$iControlCode = 0x002D0C10


Все эти константы присутствуют в APIConstants.au3


Думай, прежде чем говорить.

Оффлайн Vitorrio [?]

  • Новичок
  • *
  • Сообщений: 8

  • Автор темы
  • Репутация: 0
    • Награды
Да, я пробовал и так, результат тот же...

Вроде бы инфа с VendorID и ProductID храниться в "USB_DEVICE_DESCRIPTOR"

Описание здесь:
ссылка:http://msdn.microsoft.com/en-us/library/ff539280(v=VS.85).aspx [nonactive]

Не пойму только как это прикрутить ...
« Последнее редактирование: Март 19, 2011, 21:17:07 от Vitorrio »

Русское сообщество AutoIt

Re: Определение VendorID, ProductID и серийного номера Флешки
« Ответ #2 Отправлен: Март 19, 2011, 21:09:39 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
13 Ответов
11447 Просмотров
Последний ответ Декабрь 10, 2009, 09:11:23
от Heler
11 Ответов
8113 Просмотров
Последний ответ Март 19, 2014, 13:51:48
от Twilight_Wolf
1 Ответов
1952 Просмотров
Последний ответ Сентябрь 25, 2014, 18:28:43
от oesoes
3 Ответов
1159 Просмотров
Последний ответ Ноябрь 07, 2014, 01:08:34
от Isn
1 Ответов
1959 Просмотров
Последний ответ Июль 05, 2016, 12:48:47
от srg777
2 Ответов
1286 Просмотров
Последний ответ Август 01, 2016, 20:02:18
от Vovsla
4 Ответов
1074 Просмотров
Последний ответ Январь 17, 2017, 23:56:51
от urrya
14 Ответов
1412 Просмотров
Последний ответ Апрель 10, 2018, 14:51:10
от ra4o
2 Ответов
549 Просмотров
Последний ответ Май 07, 2018, 15:24:16
от Alofa
1 Ответов
402 Просмотров
Последний ответ Август 21, 2018, 15:04:54
от Tuxzer92