lost
22-10-2003, 10:21
Hallo,
ich beschäftige mich gerade mit ATA/ATAPI Programmierung unter Linux.
int fd, i;
unsigned char args[4+512] = {WIN_READ,1,0,1};
unsigned char a;
if ((fd = open("/dev/hdd", O_RDWR | O_NONBLOCK)) == -1)
{
perror("Can't open device /dev/hdd");
return(1);
}
if ((ioctl(fd, HDIO_DRIVE_CMD, &args)) == -1)
perror("READ SECTOR failed");
Das klappt auch so halbwegs. Hab mir mal /usr/include/linux/hdreg.h angesehen und mir ist folgendes augefallen:
typedef unsigned char task_ioreg_t;
struct hd_drive_cmd_hdr {
task_ioreg_t command;
task_ioreg_t sector_number;
task_ioreg_t feature;
task_ioreg_t sector_count;
};
Wenn ich das richig sehe sind alle vier Werte nur jeweils ein Byte gross. Wie adressiere ich Sektoren die grösser sind als 255 ??
Vielen Dank,
Bernd
ich beschäftige mich gerade mit ATA/ATAPI Programmierung unter Linux.
int fd, i;
unsigned char args[4+512] = {WIN_READ,1,0,1};
unsigned char a;
if ((fd = open("/dev/hdd", O_RDWR | O_NONBLOCK)) == -1)
{
perror("Can't open device /dev/hdd");
return(1);
}
if ((ioctl(fd, HDIO_DRIVE_CMD, &args)) == -1)
perror("READ SECTOR failed");
Das klappt auch so halbwegs. Hab mir mal /usr/include/linux/hdreg.h angesehen und mir ist folgendes augefallen:
typedef unsigned char task_ioreg_t;
struct hd_drive_cmd_hdr {
task_ioreg_t command;
task_ioreg_t sector_number;
task_ioreg_t feature;
task_ioreg_t sector_count;
};
Wenn ich das richig sehe sind alle vier Werte nur jeweils ein Byte gross. Wie adressiere ich Sektoren die grösser sind als 255 ??
Vielen Dank,
Bernd