The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"привязка к железу"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"привязка к железу" 
Сообщение от greenetc Искать по авторуВ закладки(??) on 27-Дек-05, 20:07  (MSK)
подскажите , как привязать программу к аппартному обеспечению? если можно на примерах (как прочитать констрольную сумму биоса, серийник материнской платы, ID жесткого диска ... и т.д.)
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]

1. "привязка к железу" 
Сообщение от Hordi emailИскать по авторуВ закладки on 27-Дек-05, 21:50  (MSK)
Это серийник винта. Требуются права root

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <linux/hdreg.h>

int main()
{

    struct hd_driveid ide;
    int hda, sect;
    char sector[512];
    hda=open("/dev/hda",O_RDONLY);
    if(!hda) {
perror("hda");
    }

    sect=open("mbr",O_CREAT|O_RDWR,0600);
    if(!sect) {
perror("sect");
    }
    
    if(ioctl(hda,HDIO_GET_IDENTITY,&ide)) perror ("HDIO_GET_IDENTITY");
    
    static u_long dma=1, io32set=1, mult=16;
    if(ioctl(hda,HDIO_SET_32BIT,io32set)) perror("HDIO_SET_32BIT");
    if(ioctl(hda,HDIO_SET_DMA,dma)) perror("HDIO_SET_DMA");
    if(ioctl(hda,HDIO_SET_MULTCOUNT,mult)) perror("HDIO_SET_MULTCOUNT");
    
    printf("Serial number - %s\n",ide.serial_no);
    printf("Model - %s\n",ide.model);
    printf("Logic blocks - %d\n",ide.lba_capacity);
    
    read(hda,sector,sizeof(sector));
    write(sect,sector,sizeof(sector));

    close(hda);
    close(sect);

    return (0);
}

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "привязка к железу" 
Сообщение от chip emailИскать по авторуВ закладки(ok) on 27-Дек-05, 22:49  (MSK)
>Это серийник винта. Требуются права root

>    if(ioctl(hda,HDIO_SET_32BIT,io32set)) perror("HDIO_SET_32BIT");
>    if(ioctl(hda,HDIO_SET_DMA,dma)) perror("HDIO_SET_DMA");
>    if(ioctl(hda,HDIO_SET_MULTCOUNT,mult)) perror("HDIO_SET_MULTCOUNT");

И смысл данных манипуляций для __получения__ серийника винта?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "привязка к железу" 
Сообщение от Bob Искать по авторуВ закладки(??) on 28-Дек-05, 01:55  (MSK)
>>Это серийник винта. Требуются права root
>
>>    if(ioctl(hda,HDIO_SET_32BIT,io32set)) perror("HDIO_SET_32BIT");
>>    if(ioctl(hda,HDIO_SET_DMA,dma)) perror("HDIO_SET_DMA");
>>    if(ioctl(hda,HDIO_SET_MULTCOUNT,mult)) perror("HDIO_SET_MULTCOUNT");
>
>И смысл данных манипуляций для __получения__ серийника винта?


Для получения серийника они не нужны.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "привязка к железу" 
Сообщение от Hordi emailИскать по авторуВ закладки on 28-Дек-05, 09:59  (MSK)
>>>    if(ioctl(hda,HDIO_SET_32BIT,io32set)) perror("HDIO_SET_32BIT");
>>>    if(ioctl(hda,HDIO_SET_DMA,dma)) perror("HDIO_SET_DMA");
>>>    if(ioctl(hda,HDIO_SET_MULTCOUNT,mult)) perror("HDIO_SET_MULTCOUNT");
>>
>>И смысл данных манипуляций для __получения__ серийника винта?
>
>
>Для получения серийника они не нужны.

Да это понятно - просто кусок кода из примера выдрал.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "привязка к железу" 
Сообщение от greenetc Искать по авторуВ закладки(??) on 28-Дек-05, 18:05  (MSK)
>Это серийник винта. Требуются права root
>
>#include <stdio.h>
>#include <fcntl.h>
>#include <unistd.h>
>#include <sys/types.h>
>#include <errno.h>
>#include <linux/hdreg.h>
>
>int main()
>{
>
>    struct hd_driveid ide;
>    int hda, sect;
>    char sector[512];
>    hda=open("/dev/hda",O_RDONLY);
>    if(!hda) {
> perror("hda");
>    }
>
>    sect=open("mbr",O_CREAT|O_RDWR,0600);
>    if(!sect) {
> perror("sect");
>    }
>
>    if(ioctl(hda,HDIO_GET_IDENTITY,&ide)) perror ("HDIO_GET_IDENTITY");
>
>    static u_long dma=1, io32set=1, mult=16;
>    if(ioctl(hda,HDIO_SET_32BIT,io32set)) perror("HDIO_SET_32BIT");
>    if(ioctl(hda,HDIO_SET_DMA,dma)) perror("HDIO_SET_DMA");
>    if(ioctl(hda,HDIO_SET_MULTCOUNT,mult)) perror("HDIO_SET_MULTCOUNT");
>
>    printf("Serial number - %s\n",ide.serial_no);
>    printf("Model - %s\n",ide.model);
>    printf("Logic blocks - %d\n",ide.lba_capacity);
>
>    read(hda,sector,sizeof(sector));
>    write(sect,sector,sizeof(sector));
>
>    close(hda);
>    close(sect);
>
>    return (0);
>}


спасибище.
А к серийник материнской платы как прочитать? Нет там случайно примеров ?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру