
Ubuntu日本語フォーラム

ログインしていません。
以下のようなプログラムをC言語自前で組んでHDDのSMARTのSTATUS情報を取得しているのですが、
Ubuntu12.04では上手く動作するのですが、Ubuntu13.04にOSバージョンをあげた場合、
ioctl関数(Input/output error)でエラーが発生して上手く動作しません。
ATAコマンドの仕様についてUbuntu13.04からかわってしまったのでしょうか?
何か知っている方は、ご教授をよろしくお願いします。
-----------プログラム------------------------------
int fd = 0;
unsigned char cmd_str[512+16];
//Device Open
fd = open("/dev/sda", O_RDONLY);
//Get SMART STATUS
memset(cmd_str, 0, sizeof(cmd_str));
cmd_str[0] = WIN_SMART; //0xB0
cmd_str[1] = SMART_STATUS; //0xDA
cmd_str[4] = SMART_LCYL_PASS; //0x4F
cmd_str[5] = SMART_HCYL_PASS; //0xC2
if(ioctl(fd, HDIO_DRIVE_TASK, cmd_str) != 0)
{
printf("ioctl error");
}
:
:
省略
オフライン