Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Вниз

Инфо по винту...   Найти похожие ветки 

 
DION   (2004-07-12 08:14) [0]

Народ, подскажите, как узнать имя винта...?


 
DC-AC   (2004-07-12 09:10) [1]

В смысле имя ? Как его мама при рождении назвала что ли ? Или логическое имя диска ? Или название производителя/модели ?
Вот видишь сколько вопросов...


 
DION   (2004-07-12 09:41) [2]

Мануфактуру...


 
DC-AC   (2004-07-12 10:50) [3]

Тебе Алекс Коншин нужен. К сожалению запамятовал его страничку, посмотри на этом сервере, может и есть ссылка. У него есть чудный модуль для работы с HDD, вот с помощью него и "вытянешь" из контроллера HDD его производителя. Если поиски не увенчаются успехом - напиши мне, скину исходники. Может правда не самые новые...


 
Alex Konshin ©   (2004-07-12 11:01) [4]

http://home.earthlink.net/~akonshin/index.htm


 
Aldor_   (2004-07-12 11:24) [5]

Alex Konshin ©   (12.07.04 11:01) [4]

 Уже давно хотел задать Вам вопрос: в Вашем примере первым аргументом функции CreateFile является "\\.\Scsi", но при этом совершенно корректно читается информация об IDE-винчестерах! Хотя я по наивности думал, что нужно использовать "\\.\PHYSICALDRIVEx".

 И еще: возможно я недочитал хелп, но почему используются такие пляски с DriveNumber: $A0 or ((DriveNumber and 1) shl 4)?

 И последнее, если позволите:

for iController := 0 to maxController do
 begin
   for iDrive := 0 to 4 do
   begin
     try
       Result := GetIdeDiskSerialNumber(iController,iDrive);
       if Result<>"" then Exit;
     except
       // ignore exceptions
     end;
   end;
 end;

Почему Вы останавливаетесь на первом же попавшемся устройстве? А если их несколько?

 Буду благодарен за ответы. С уважанием.


 
Alex Konshin ©   (2004-07-12 12:15) [6]

Так надо (c) Бриллиантовая рука :)

\\.\Scsi потому, что на самом деле тот Ioctl код, что я использую, работает не с драйвером винчестера, а с дравером контроллера. Другое дело, что он потом передает команду драйверу соответствующего устройства. А сделано так хитро потому, что это позволяет обойти запрет доступа к устройству, т.к. по умолчанию для дисков это может делать только администратор, а вот для контролеров почему-то все, кто угодно.

Почему $A0 or ((DriveNumber and 1) shl 4)? Вообще-то биты 7 и 5 obsolete, но вроде как желательно их установить (и не спрашивайте меня "почему?"). Бит 4 - номер девайса (т.к. для ATA их может быть всего два, то бита достаточно). Смотрите http://www.t13.org/docs2003/d1532v1r4.pdf

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


 
Aldor_   (2004-07-12 12:18) [7]

Большое спасибо.

 А вот это:
  > что это позволяет обойти запрет доступа к устройству
 действительно круто :))))


 
Alex Konshin ©   (2004-07-12 12:25) [8]

Aldor_   (12.07.04 12:18) [7]
Большое спасибо.
А вот это:
 > что это позволяет обойти запрет доступа к устройству
действительно круто :))))

Собственно, это и есть мое личное know how в том примере, остальное люди делали и знали раньше. А вот собственно для SCSI такой прием не проходит :(


 
DION   (2004-07-12 12:45) [9]

Всем пасиб...
Особенный респект to Alex Konshin...
Как раз то что нужно...



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.037 c
3-1091441978
46_55_41_44
2004-08-02 14:19
2004.08.22
Как создать БД Акцез программно?????


11-1079639734
KisaNetik
2004-03-18 22:55
2004.08.22
Как работать с SyntaxEditor


6-1087211397
Ivan K
2004-06-14 15:09
2004.08.22
Recv и синхронный режим


3-1091442034
rosl
2004-08-02 14:20
2004.08.22
interbase


14-1090874948
Викусик
2004-07-27 00:49
2004.08.22
Ночной дозор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский