Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
check_error();
IN_P_W(a,HD_DATA);
buff[i++] = a;
} while(hd_data_request());
Считываем последние 4 байта и выходим:
IN_P_W(a,HD_DATA);
buff[i++] = a;
IN_P_W(a,HD_DATA);
buff[i] = a;
return;
}
Рассмотрим главную функцию:
int main ()
{
Определим необходимые структуры и переменные:
struct hd_driveid hd;
int out;
unsigned short N = 1;
unsigned int sect, cyl, head, lba;
/*
* N – число секторов для чтения
* sect – номер сектора
* cyl – номер цилиндра
* head – номер головки
* lba – номер логического блока
*/
unsigned short buff[0x100*N];
memset(buff,0,0x100*N);
memset(&hd,0,sizeof(struct hd_driveid));
Чтобы не схлопотать Segmentation fault, запросим у системы разрешение доступа к портам в диапазоне 0x1f0 – 0x1f7:
ioperm(0x1f0,8,1);
Вызовем функцию получения информации идентификации. Результат будет помещен в структуру struct hd_driveid hd:
get_hd_identity(&hd);
Отобразим результаты:
printf("Серийный номер – %s ",hd.serial_no);
printf("Модель – %s ",hd.model);
printf("Число цилиндров - %d ",hd.cur_cyls);