C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как считать информацию о железе?
creater
  Отправлено: 30.09.2003, 19:15


Станционный диспетчер

Группа: Участник
Сообщений: 120



Народ, подскажите как проделать сие?

А то все мои поиски в инете не ушли дальше WinAPI-функций
GetCurrentHwProfile
GetKeyboardType
GetSysColor
GetSystemInfo
GetSystemMetrics
GetThreadDesktop
GetVersionEx
IsProcessorFeaturePresent
SystemParametersInfo

и то из всего этого удалось найти во всех хэлпах по винАпи только GetKeyboardType (ну может еще чего по интерфейсу, короче не то что нужно).

Хотелось бы узнать, как например считать серийник винта, инфу о материнке и тэ дэ и тэ пэ и хттпэ.

Заране большое спасибо. smile.gif
creater
Отправлено: 02.10.2003, 17:40


Станционный диспетчер

Группа: Участник
Сообщений: 120



Всем спасибо за ответы. Ответы найдены cool.gif

ЗЫ: Кто ищет, тот всегда найдет ...
creater
Отправлено: 03.10.2003, 21:37


Станционный диспетчер

Группа: Участник
Сообщений: 120



И все-таки как же считать, допустим, заводской серийник винта???
cool.gif
creater
Отправлено: 03.10.2003, 21:44


Станционный диспетчер

Группа: Участник
Сообщений: 120



И все-таки как же считать, допустим, заводской серийник винта???
cool.gif
sanatoliy
  Отправлено: 06.10.2003, 16:01


Не зарегистрирован







узнать номер HDD

char VolumeName[255], FileSystem[255];
unsigned long SerialNumber, MCLength, SystemFlags;
AnsiString VolumeSerial;

if (GetVolumeInformation("C:\\", VolumeName, 254, &SerialNumber, &MCLength, &SystemFlags, FileSystem, 254))
{
VolumeSerial = AnsiString(SerialNumber);
}

Удачи. smile.gif
Георгий
Отправлено: 06.10.2003, 18:25


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



Нет — это не заводской номер HDD. Это номер раздела, который присвоен ему при форматировании. Проверить это очень легко — у всех разделов одного физического жёткого диска он (серийный номер) должен быть одинаковым, а простая проверка на моих 4-х разделах даёт следующие номера: 209016355, 423762401, 4161613667, 1467389760, что совпадает с теми номерами томов (разделов) которые выводит AIDA32. При этом заводской номер (выводимый AIDA32) VH46T1702S9A.

PS. тема как определить заводской номер HDD некоторое время назад поднималась, но было обнаружено, что или надо использовать специальные компоненты или работать с портами ATA HDD контроллера и посылать соответствующую команду. Правда возможно ли узнать эту информацию от драйвера HDD никто так и не сказал.

Отредактировано Георгий — 13/10/2003, 18:01
Иван
Отправлено: 08.10.2003, 15:26


Машинист паровоза

Группа: Участник
Сообщений: 207



А информацию о модеме, кто-то знает как достать?
Asher
Отправлено: 09.10.2003, 08:15


Мастер участка

Группа: Модератор
Сообщений: 550



C модемом проще всего. АТ команды на СОМ-порт давай и смотри что отвечает.
В окошке свойств модема в винде можно посмотреть весь протокол обмена, даже с командами biggrin.gif
Иван
Отправлено: 10.10.2003, 16:38


Машинист паровоза

Группа: Участник
Сообщений: 207



Никогда с железом не работал ,поэтому если можно по-подробнее:
что за команды такие — АТ,и как их на COM порт
QUOTE
давать...
smile.gif
Может есть пример какой — нибудь.
creater
Отправлено: 13.10.2003, 09:01


Станционный диспетчер

Группа: Участник
Сообщений: 120



QUOTE (Георгий @ 06/10/2003, 19:27)
Нет — это не заводской номер HDD. Это номер раздела, который присвоен ему при форманировании. Проверить это очень легко — у всех разделов одного физического жёткого диска он (серийный номер) должен быть одинаковым, а простая проверка на моих 4-х разделах даёт следующие номера: 209016355, 423762401, 4161613667, 1467389760, что совпадает с теми номерами томов (разделов) которые выводит AIDA32. При этом заводской номер (выводимый AIDA32) VH46T1702S9A.

PS. тема как определить заводской номер HDD некоторое время назад поднималась, но было обнаружено, что или надо использовать специальные компоненты или работать с портами ATA HDD контроллера и посылать соответствующую команду. Правда возможно ли узнать эту информацию от драйвера HDD никто так и не сказал.

Да, действительно, номера разделов Я давно прочитал ...

А вот относительно использования специальных компонент или работы с портами ATA HDD контроллера и посылки соответствующей команды. Есть ли какая-либо более подробная информация по этим вопросам? cool.gif
Георгий
Отправлено: 13.10.2003, 09:27


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



ATA-2 команды есть в Михаиле Гуке — энциклопедия "Аппаратные средства IBM PC" — в издании от 1999 года это на странице 607 — даже так и называется — 8.5.2 "система команд".
Соответственно находим компонент для работы с портами ввода/вывода и насилуем свой любимый HDD, с помощью набора этих команд.

А ещё я видел коммерческий компонент (цена 300$), который мог сам говорить серийник винта, но мне цена не понравилась.
creater
Отправлено: 13.10.2003, 10:19


Станционный диспетчер

Группа: Участник
Сообщений: 120



QUOTE (Георгий @ 13/10/2003, 10:29)
ATA-2 команды есть в Михаиле Гуке — энциклопедия "Аппаратные средства IBM PC" — в издании от 1999 года это на странице 607 — даже так и называется — 8.5.2 "система команд".
Соответственно находим компонент для работы с портами ввода/вывода и насилуем свой любимый HDD, с помощью набора этих команд.

А ещё я видел коммерческий компонент (цена 300$), который мог сам говорить серийник винта, но мне цена не понравилась.

Если Вас не задруднит, можно как-нибудь получить скриншот этой замечательной странички 607?
cool.gif
Георгий
Отправлено: 13.10.2003, 16:58


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



Издеваешся??

В принципе в книжном магазине не плохие скиншоты можно делать smile.gif, главное, что бы злобные вирусы не мешали...

команда:
IDENTIFY DEVICE
код:
ECh
протокол:
PI

после чего из hdd надо считать 256 слов где слова # 10 — 19 серийный номер, если слово 10 не нулевое, иначе специфичная информация

чтобы записать эту команду надо поуправлять контроллером HDC.

канал 1 cs0 1F0-1F7 cs1 3F6-3F7 irq 14
канал 2 cs0 170-177 cs1 376-377 irq 15 или 10
канал 3 cs0 1E8-1EF cs1 3EE-3EF irq 12 или 11
канал 4 cs0 168-16F cs1 36E-36F irq 10 или 9

регистры контроллера HDC AT:
1F0 RW : регистр данных
1F1 R : регистр ошибок
бит 7: 1 = bad block — признак дефектного блока
бит 6: 1 = ECC error — неисправимая ошибка данных
бит 5: = 0
бит 4: 1 = сектор не найден
бит 3: = 0
бит 2: 1 = команда отвергнута
бит 1: 1 = ошибка поиска нулевого сектора
бит 0: 1 = адресный маркер данных не найден
1F7 W : регистр команд
1F7 R : регистр состояниия
бит 7: 1 = занято — выполянется команда
бит 6: 1 = готов к чтению/записи/поиску
бит 5: 1 = ошибка записи
бит 4: 1 = поиск завершён
бит 3: 1 = запрос данных
бит 2: 1 = исправлена ошибка данных
бит 1: 1 = датчик индексного отверстия
бит 0: 1 = ошибка завершения предыдущей команды

PS. думаю, что книжку купить было бы проще...

Вернуться в Вопросы программирования в C++Builder