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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Информация о HDD 
:(
    Опции темы
byravchik
Дата 6.3.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток...
Помогите, пожалуйста, с такой проблемкой...
Как можно реализовать следующую задачу в дельфи:
Необходимо определить наличие в системе физических жестких дисков, их количество, тип интерфейса подключения(IDE или SATA), вывести  информацию о модели и объеме... и для каждого из этих дисков вывести данные о их температуре. smile 
PM MAIL   Вверх
Virtuals
Дата 6.3.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



byravchik, температура есть в SMART секторе, соответственно читай его, и смотри подсказку форума внизу страници
А здесь смотрели? smile
PM MAIL ICQ   Вверх
byravchik
Дата 6.3.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я бы не стал писать, если бы нашел информацию...
С температурой я более или менее разобрался...
В тех ссылках которые ты  привел размер жесткого определяться по томам, а мне необходимо определить размер всего жесткого... Так же там ничего не говориться о определении типа интерфейса подключения жесткого...:(
PM MAIL   Вверх
Virtuals
Дата 6.3.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



byravchik, 
а я бы не давал таких советов, непроверив!
http://forum.vingrad.ru/topic-40650.html

раз научился получать температуру, то наверное заметил что получение smart 2х сектоов по 512б и получение ID 1 сектор, есть одно и то же, только функция разная для винта. 
(и там и там используется прямой доступ к контроллеру винта, и подача ему комманд 
  IDE_ID_FUNCTION         = $EC;    // Returns ID sector for ATA.
  IDE_EXECUTE_SMART_FUNCTION = $B0;    // Performs SMART cmd.
) 
вот те структура

Код

  TIDEInfo = Record
    Config,             {General configuration bit-significant information}
    Cyls,               {Number of logical cylinders}
    Unused,             {Reserved}
    Heads,              {Number of logical heads}
    BPT,                {Number of unformatted bytes per track}
    BPS,                {Number of unformatted bytes per sector}
    SPT      : Word;    {Number of logical sectors per logical track}
    Vendor   : Array [0..2] of Word;       {Vendor specific}
    Serial   : Array [1..20] of Char;      {Serial number. 20 ASCii characters, 0000H=not specified}
    BufType,  {Buffer type}
    BufSize,  {Buffer size in 512 byte increments. 0000H=not specified}
    ECC      : Word; {# of ECC bytes avail on read/write long cmds. 0000H=not spec.}
    Revision : Array [1..8] of Char;  {Firmware revision. 8 ASCii characters. 0000H=not specified}
    Model    : Array [1..40] of Char; {Model number. 40 ASCii characters. 0000H=not specified}
    Features : Word;                  {Features information}
    DwordIO  : Word;                  {0001H=Can perform doubleword I/O}
    Capabil  : Word;                  {Capabilities}
    Reserved : Word;                  {Reserved}
    PIO      : Word;                  {PIO data transfer information}
    DMA      : Word;                  {DMA data transfer information}
    ExtValid : Word;                  {Extended data validation information}
    CurrCyls,                         {Number of current logical cylinders}
    CurrHeads,                        {Number of current logical heads}
    CurrSect : Word;                  {Number of current logical sectors per track}
    Capacity : LongInt;               {Current capacity in sectors}
    BlockMode : Word;     {Multiple sectors transfer information}
    LBACapacity : LongInt; {Total number of user addressable sectors. LBA mode only}
    SingleDMA : Word;      {Single word DMA transfer information}
    MultiDMA  : Word;      {Multiword DMA transfer information}
    AdvancedPIO : Word;    {Advanced PIO Transfer information}
    MinDMACycle : Word;    {Minimum Multiword DMA Transfer Cycle Time Per Word in nsecs}
    RecDMACycle : Word;    {Manufacturer Recommended Multiword DMA Transfer Cycle Time}
    MinPIOCycle : Word;    {Minimum PIO Transfer Cycle Time Without Flow Control in nsecs}
    MinIORDYPIOCycle : Word; {Minimum PIO Transfer Cycle Time With IORDY Flow Control in nsecs}
  end;


в примере это выглядело так
Код

TIdSector = packed record 
   wGenConfig : Word; 
   wNumCyls : Word; 
   wReserved : Word; 
   wNumHeads : Word; 
   wBytesPerTrack : Word; 
   wBytesPerSector : Word; 
   wSectorsPerTrack : Word; 
   wVendorUnique : Array[0..2] of Word; 
   sSerialNumber : Array[0..19] of Char; 
   wBufferType : Word; 
   wBufferSize : Word; 
   wECCSize : Word; 
   sFirmwareRev : Array[0..7] of Char; 
   sModelNumber : Array[0..39] of Char; 
   wMoreVendorUnique : Word; 
   wDoubleWordIO : Word; 
   wCapabilities : Word; 
   wReserved1 : Word; 
   wPIOTiming : Word; 
   wDMATiming : Word; 
   wBS : Word; 
   wNumCurrentCyls : Word; 
   wNumCurrentHeads : Word; 
   wNumCurrentSectorsPerTrack : Word; 
   ulCurrentSectorCapacity : ULONG; 
   wMultSectorStuff : Word; 
   ulTotalAddressableSectors : ULONG; 
   wSingleWordDMA : Word; 
   wMultiWordDMA : Word; 
   bReserved : Array[0..127] of Byte; 
 end;

на какие нить мысли наводит?
а если попробуеш для себя понять что SATA и PATA это не прсто набор букФ, а АТА- это достаточно стандартизированная спецификация ;) да найдеш себе пдф хотя-бы на ата5 (по всему инету валяется), думаю понимания добавит.

ЗЫ обрати внимание хотябы на это LBACapacity : LongInt; {Total number of user addressable sectors. LBA mode only}

Добавлено через 5 минут и 31 секунду

или тебе обязательно нужно, чтоб был текст
"размер винта можно взять из служебного сектора ID методом LBACapacity*512= сколько байтов в винте" smile 
PM MAIL 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.

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


 




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


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

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