Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение серийника USB, код как-то по странному работает 
:(
    Опции темы
dee63
Дата 3.5.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 14.12.2007
Где: Самара

Репутация: нет
Всего: нет



Всем привет!
Задача- прочитать серийник  флешки ( а вместе с тем и вендора и пр лабуду).

Делаю так:

Код

uses
 JwaWinIoctl;

function GetFlashSN:String;
var
    Dummy :DWord;
    FHandle :Cardinal; 
    RealPath :String; 
    dg :CHANGER_PRODUCT_DATA;
    Serial,venid,prodid,rev,devtype :String;
    i :byte;
begin
 RealPath:=string(form1.Edit1.text);
//открываем файл (из эдита получаем. использую \\.\G:)
 FHandle:=CreateFile(PChar(RealPath),GENERIC_READ,FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  
Memo1.lines.add('Сообщение CreateFile для '+realpath+' - '+#13+' '+SysErrorMessage(GetLastError)+#13+' '+Inttostr(GetLastError));
  
if  (DeviceIOControl(FHandle,IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER, nil, 0, @dg, sizeof(dg), dummy, nil)) then
begin
Serial:='';
venid:='';
prodid:='';
rev:='';
devtype:='';

for i:=0 to 7 do
venid:=venid+'-'+inttostr(dg.VendorId[i]);

for i:=0 to 15 do
prodid:=prodid+'-'+inttostr(dg.ProductId[i]);

for i:=0 to 3 do
rev:=rev+'-'+inttostr(dg.Revision[i]);

for i:=0 to 31 do
Serial:=Serial+'-'+IntToStr(dg.SerialNumber[i]);
      
devtype:=inttostr(dg.devicetype);
end;

  form1.memo1.lines.add('Vendor ID: '+venid);
  form1.memo1.lines.add('Product ID: '+prodid);
  form1.memo1.lines.add('Revision ID: '+rev);
  form1.memo1.lines.add('S\N: '+serial);
  form1.memo1.lines.add('Device Type: '+devType);
end;



Что получаю в итоге.
Вообще результата было 2:
1- первые пол часа проверки с 10 флешками- номера выдавалаись полностью уникальными, и начинались на 0370 и т.д.
2-вторые пол часа проверки (повторный запуск ТОГО ЖЕ кода) стали давать другие номера, и начинались с 0136 и т.д.

И третье-не результат, а просто пустота.

Вопрос-что я не так делаю?
По коду-открытие файла происходит без проблем (о чем свидетельствуетвывод инфы о действии).
А номера вот никакие не приходят ко мне в dg (именно в него и должно приходить все ето безобразие).

Помогите люди добрые-ткните пальцем где косяк
PM MAIL WWW ICQ   Вверх
Geniebal
Дата 6.5.2011, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 13.5.2010

Репутация: нет
Всего: нет



если я правильно тебя понял, то тебе нужна вся информация о флешке, как ее видит винда? так?
PM MAIL   Вверх
Riply
Дата 7.5.2011, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



dee63,  IOCTL_CHANGER_GET_PRODUCT_DATA <--> CHANGER_PRODUCT_DATA,
а  IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER <--> MEDIA_SERIAL_NUMBER_DATA.

Во всяком случае так MSND говорит smile
PM MAIL   Вверх
dee63
Дата 16.5.2011, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 14.12.2007
Где: Самара

Репутация: нет
Всего: нет



Спасибо за ответ!
Вообщем так ничего этим методом у меня не выщло.
Реализовал через wmi.
Там просто и более универсально в итоге.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0947 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.