Получение USB Serial. Ещё пытаемся ...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Получение USB Serial. Ещё пытаемся ...

Сообщение xenomorph » 21.09.2006 (Чт) 22:15

Привет всем!

Помогите с декларацией на VB 6.0:

'=================================================
typedef struct _MEDIA_SERAL_NUMBER_DATA {
ULONG SerialNumberLength;
ULONG Result;
ULONG Reserved[2];
UCHAR SerialNumberData[0];
} MEDIA_SERIAL_NUMBER_DATA, *PMEDIA_SERIAL_NUMBER_DATA;
'=================================================
--
Если прокатит - выложу сорс!

Заранее огромное спасибо!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.09.2006 (Чт) 22:45

Это структура переменной длины...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 21.09.2006 (Чт) 22:45

SerialNumberLength as long
Result as long
Reserved0 as long
Reserved1 as long
Reserved2 as long
SerialNumberData as byte
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 21.09.2006 (Чт) 22:45

GSerg
Почему?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.09.2006 (Чт) 23:01

Как думаешь, какой смысл объявлять один байт как массив из одного байта?
Только тот, чтобы сишный компилятор позволял обращаться к нему как к массиву по любому индексу. За этим байтом - произвольной величины буфер, а начало буфера, да, совпадает со структурой...
Удобную работу с такими структурами см. в статье про SAFEARRAY.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2006 (Пт) 3:19

ANDLL писал(а):Reserved2 as long

Ну-ну.

GSerg писал(а):Как думаешь, какой смысл объявлять один байт как массив из одного байта?

И давно это UCHAR SerialNumberData[0] стал массивом из одного байта?
Изображение

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Ку ... а точнее Ку-Ку :-)

Сообщение xenomorph » 22.09.2006 (Пт) 7:29

ЭЭЭэээ ... я ЛОХ! :-).
--
Ниф-И-Ка не понимаю :roll: !
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 22.09.2006 (Пт) 8:05

Вернись сюда
Весь мир матрица, а мы в нем потоки байтов!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.09.2006 (Пт) 10:37

tyomitch писал(а):И давно это UCHAR SerialNumberData[0] стал массивом из одного байта?

А кем же он стал?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2006 (Пт) 10:50

Массивом из нуля байт, естественно.

Кстати, стандартом Сей такое вроде бы не позволяется. Это какие-то компилер-специфичные штучки.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.09.2006 (Пт) 10:52

Э... ну да :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Re

Сообщение xenomorph » 22.09.2006 (Пт) 15:22

Привет всем!

Если честно, созерцая ответы Гур :-),
я только догадываюсь о том что:
-> the truth is out there

Занимаюсь исследованием получения серийного номера
драйва путём DeviceIoControl + IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER.

Очень хочется получить серийник USB Flash Drive.
Достаточно неплохая защита получиться.

Achtung!
1. (ногами чур не пинать! - топик для обхаивания данного метода
сделаю опосля - если кто захочет)
2. Просьба интим, WMI, поиск по гуглу или другой изврат НЕ предлагать! :-P.
Я ВСЁ уже перепробовал окромя этого.

Я что-то не так обявил!
Посмотрите пожалуйста!
'+++++++++++++++++++++++++
'Вот тут _типа_ проблема ...
status = DeviceIoControl(hDrive, _
IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER, _
ByVal 0, _
ByVal 0, _
gmt, _
10, _
returned, _
ByVal 0)

tb_M = gmt.SerialNumberData

'это работает, но это НЕ ТА Структура :-(
'status = DeviceIoControl(hDrive, _
IOCTL_STORAGE_GET_MEDIA_TYPES_EX, _
mynull, _
0, _
gmt, _
2048, _
returned, _
ByVal 0)
'+++++++++++++++++++++++++

Тестовый проэкт прилагаеться!
--
Заранее огромное спасибо за Ваши время и усилия!
Вложения
Test.rar
(3.27 Кб) Скачиваний: 100
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 22.09.2006 (Пт) 17:02

xenomorph
Просто выделяй блок, скажем 255 байт и передавай в io его адрес. Затем по первым четырем байтам и нехитрому вычисленомму смещению можно будет легко узнать серийный номер.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Сообщение NashRus » 22.09.2006 (Пт) 17:21

а ты этот номер чем-то вообще видишь ?
у меня например на флешке:

Код: Выделить всё
**** STORAGE_DEVICE_DESCRIPTOR for drive 6 ****
Vendor Id = Kingston
Product Id = DataTraveler II+
Product Revision = 1.13
Serial Number =

DeviceIOControl IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER error =
              The request is not supported for this device.

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 22.09.2006 (Пт) 17:24

Привет Всем!

Вызов происходит если объявлено так:

Private Type MEDIA_SERIAL_NUMBER_DATA
SerialNumberLength As Long
Result As Long
Reserved As Long
SerialNumberData(100) As Byte
End Type

Но результат DeviceIoControl = 0
НЕ РАБОТАЕТ - имхо из-за НЕПРАВИЛЬНОЙ декларации
этой структуры ...

Вызов же DeviceIoControl c параметром IOCTL_STORAGE_GET_MEDIA_TYPES_EX
проходит на УРА и даёт еденицу ...

При изменении структуры на Массив байтов: (да я подозреваю что тут я извращенец,
но я типа ТАК это понял (?)...)

Dim MEDIA_SERIAL_NUMBER_DATA(100) As Byte

Получаем Bad Dll Calling Convention ...

2ANDLL:

Как правильно стучать в бубен в этом случае штоб шаманство удалось? :-)
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 22.09.2006 (Пт) 17:30

2 NashRus Ж-)

Ух ты ж какой шустрый Ж-))))

Ты мене код дай КАК ты это получил:

Код: Выделить всё
**** STORAGE_DEVICE_DESCRIPTOR for drive 6 ****
Vendor Id = Kingston
Product Id = DataTraveler II+
Product Revision = 1.13
Serial Number =

DeviceIOControl IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER error =
              The request is not supported for this device.


А я на своих флешках протестю ...

Я это тему недавно но сильно копать начал ...
По WMI нету UID-ов за которые можно зацепиться ...
(хотя инфы - туева хуча ...)
Инфы по нету немного ...
Говорят на некоторых флешках UID-ы \ серийники есть а на некоторых нет ...
я сначала за PnP UID зацепиться хотел ... не удалось *-).
Пока шаманю ...
--
Запость код плиз - проведу тестинг! Ж-)
--
Заранее Спасибо!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 22.09.2006 (Пт) 18:10

Как правильно стучать в бубен в этом случае штоб шаманство удалось
Как правильно что? Выделить память, передать в функцию, или обработать ее возврат? И вообще, ты говориш она тебе 0 возвращает? А что говорит LastDllEror?

ЗЫ. Ты в каком универе учишся?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Re

Сообщение xenomorph » 22.09.2006 (Пт) 20:22

2 Andll:

1. LocalAlloc
2. Передаём резалт от 1.
3. Со считыванием памяти по адресу полезу в свои архивы на вскидку не скажу ...

Запупыренский Государственный Университет. ИнЯз. Закончил Магистратуру 2 года назад. 3 диплома, из них 2 красные. Англ\Дойтч. Образования по программингу нет. ВООБЩЕ. Папа сделал неудачную весТчь - купил комп ... и понеслась ... 8-).
--
^^^ история моей жизни *-).
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 22.09.2006 (Пт) 20:41

xenomorph
Это форум русских программистов. Я не понял, что значит "Передаём резалт от 1" и я не понял, какой тут содержится вопрос.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Сообщение NashRus » 22.09.2006 (Пт) 23:35

ну млин. хотел посмотреть как эта функция в принципе должна отработать на моем железе. юзая 2 ключевых слова из этого тестового проекта (ПОНЯТНО КАКИХ ?) и гугл дает всего 2 ссылки. одна из них - прям exe правда с исходниками. вот ее и запускал.
мое резюме - не все то серийник что флеш.
а так видно функция вполне работоспособная для поддерживающего это железо и XP+. Правда не знаю какое должно быть прям железо если моя флешка прям бренд и не имеет серийника.

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Re

Сообщение xenomorph » 25.09.2006 (Пн) 18:53

2 NashRus
diskid32.cpp?

Не могу откомпилировать *-((((( ...

Можешь запостить здеся?

Поооооожжжжааааааалуууйстаааа!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Сообщение NashRus » 25.09.2006 (Пн) 21:07

так там же на сайте уже есть компиленный! см. внимательней.

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Re

Сообщение xenomorph » 25.09.2006 (Пн) 21:43

2 NashRus
Пасиб! Глядел не там.

Не суДьба серийник на флэшке найти ...
у меня те же резалты на всех 5 (!) флэшках ...

:-(.

Всем спасибо! Тему считать закрытой!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 113

    TopList