读书人

ioctl(fd, HDIO_GET_IDENTITY, amp;id)时

发布时间: 2013-11-01 14:43:02 作者: rapoo

ioctl(fd, HDIO_GET_IDENTITY, &id)时出错

#include <stdio.h>
#include <fcntl.h>
#include <linux/hdreg.h>
#include <sys/ioctl.h>
#include <string.h>

static void dump_identity (const struct hd_driveid *id);

int main(void){
int fd = 0;
fd = open("/dev/sda",O_RDONLY);
static struct hd_driveid id;

if (!ioctl(fd, HDIO_GET_IDENTITY, &id))
{
dump_identity(&id);
}
else
printf(" HDIO_GET_IDENTITY failed\n");
perror("ioctl:");
return 0;
}
static void dump_identity (const struct hd_driveid *id)
{
const unsigned short int *id_regs= (const void*) id;
printf("Model=%.40s, FwRev=%.8s, SerialNo=%.20s\n",
id->model, id->fw_rev, id->serial_no);
}
运行时出现ioctl:: Invalid argument,求大神解答
[解决办法]
确定你的文件是否正确打开,检查下fd;
提示错误是无效参数,该设备驱动不支持此参数。

[解决办法]
man 3p ioctl

读书人网 >C语言

热点推荐