подскажите , как привязать программу к аппартному обеспечению? если можно на примерах (как прочитать констрольную сумму биоса, серийник материнской платы, ID жесткого диска ... и т.д.)
Это серийник винта. Требуются права 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);
}
>Это серийник винта. Требуются права 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");И смысл данных манипуляций для __получения__ серийника винта?
>>Это серийник винта. Требуются права 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");
>
>И смысл данных манипуляций для __получения__ серийника винта?
Для получения серийника они не нужны.
>>> 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");
>>
>>И смысл данных манипуляций для __получения__ серийника винта?
>
>
>Для получения серийника они не нужны.Да это понятно - просто кусок кода из примера выдрал.
>Это серийник винта. Требуются права 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);
>}
спасибище.
А к серийник материнской платы как прочитать? Нет там случайно примеров ?