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