Форум: "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.03 c