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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение информации о HDD программно, необходимо получить всю инфу о хдд 
:(
    Опции темы
Geniebal
  Дата 18.5.2010, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте! Вопрос такой: как программно получить название хдд от производителя, его серийный номер, количество и имена разделов на хдд (т.е. метка тома или другими словами имена логических дисков в системе).
Обращаю Ваше внимание, что информация нужна именно о HDD, т.е. о самом железном накопителе, что стоит у Вас в системном блоке, а не о логических дисках, что показывает Вам система, типа "логический диск (D)" и тд.

З.Ы. Если есть у кого исходники - скинте плз, попробую разобраться.
PM MAIL   Вверх
bartram
Дата 18.5.2010, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

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





--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Geniebal
Дата 18.5.2010, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Уважаемый bartram! Я не зря написал "Обращаю Ваше внимание, что информация нужна именно о HDD, т.е. о самом железном накопителе, что стоит у Вас в системном блоке, а не о логических дисках, что показывает Вам система, типа "логический диск (D)" и тд.", т.кю в приведенном Вами примере описывается именно о ЛОГИЧЕСКИХ дисках. Список физических дисков я получаю следующим образом:
Код

function TForm1.FindPhisicalDisk: boolean; // вывод всех физ дисков в ComboBox
Var
i: integer;
hDrive: THandle;

DiskGeometry: TDiskGeometry;
junk: DWord;
TotalSize, TotalSectors: int64;   //Общий размер
begin
 for i := 0 to 255 do
    begin
      hDrive := CreateFile(PChar('\\.\PHYSICALDRIVE' + IntToStr(i)), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0) ;
      if hDrive <> INVALID_HANDLE_VALUE then
        begin
            Result := DeviceIoControl(hDrive,IOCTL_DISK_GET_DRIVE_GEOMETRY,nil,0,
    @DiskGeometry,SizeOf(TDiskGeometry),junk,nil) and (junk = SizeOf(TDiskGeometry));
           if Result then
            begin
            TotalSize := DiskGeometry.TracksPerCylinder * DiskGeometry.SectorsPerTrack * DiskGeometry.Cylinders * DiskGeometry.BytesPerSector ;
            DriveComboBox.Items.Add(IntToStr(i)+ ' [' + IntToStr(TotalSize div 1073741824)+',' +IntToStr(TotalSize mod 1073741824) +' Гб]') ;
            TotalSectors:=DiskGeometry.Cylinders*DiskGeometry.TracksPerCylinder*DiskGeometry.SectorsPerTrack;
             end;
        end
        else
            break ;
     CloseHandle(hDrive) ;
    end ;
end;


Эта функция выводит как раз все HDD. Но как мне достать информацию о названии диска я так и не разобрался. 

З.Ы. Чтоб было понятнее что я хочу : панель управления -> администрирование -> управление компьютером -> запоминающие устройства -> управление дисками. 
PM MAIL   Вверх
bartram
Дата 18.5.2010, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

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



Geniebal, вам нужна информация из S.M.A.R.T?


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Geniebal
Дата 18.5.2010, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



насколько я понял, smart работает с ide дисками. а если например raid-массив то уже не пашет. возможно я ошибаюсь. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.

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


 




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


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

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