Tag: ioctl

如何在Windows中向CD-ROM驱动器发出READ CD命令?

我正在开发一个需要向CD-ROM驱动器发出原始SCSI命令的应用程序。 目前,我正在努力向驱动器发送READ CD( 0xBE )命令并从CD的给定扇区获取数据。 请考虑以下代码: #include #include #include #include #include int main(void) { HANDLE fh; DWORD ioctl_bytes; BOOL ioctl_rv; const UCHAR cdb[] = { 0xBE, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0 }; UCHAR buf[2352]; struct sptd_with_sense { SCSI_PASS_THROUGH_DIRECT s; UCHAR sense[128]; } sptd; fh = CreateFile(“\\\\.\\E:”, GENERIC_READ | GENERIC_WRITE, […]

在C中使用ioctl()设置不可变标志

我试图创建一个创建文件的脚本,然后将其设置为不可变的,类似于linux的chattr +i命令。 脚本编译 (使用gcc), 运行并创建文件 。 但是文件本身不是不可变的,可以使用简单的rm -f 删除 。 我试图在chattr调用chattr地方找到一个名为ioctl的函数。 然后,我使用了我可以收集的一些小信息,并提出了我在下面的内容。 我从ext2_fs.h缩小了它,但它似乎不起作用。 我显然忽视了一些事情。 对上一个条目的更新 : 编译但在ioctl()函数上返回-1 。 perror()显示错误的地址 。 #include #include #include #include #include int main() { FILE *fp; char shovel[16] = “I have a shovel!”; fp = fopen(“/shovel.txt”, “w+”); fwrite(shovel, sizeof(shovel[0]), sizeof(shovel)/sizeof(shovel[0]), fp); ioctl(fileno(fp), FS_IOC_SETFLAGS, 0x00000010); fclose(fp); } 任何帮助赞赏。

如果cmd = 2,则不调用ioctl

我正在开发一个使用unlocked_ioctl的内核模块。 我用内核版本2.6.24-23-generic测试了它,它运行得很好。 现在我尝试使用内核版本3.3.1-1-ARCH并发生一些奇怪的事情:当请求值(cmd)为2时,不会执行ioctl函数。它返回0,但函数未执行。 为了检查它是否未执行,我执行了以下操作: static long midriver_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { printk(“Called with cmd = %d\n”, cmd); 我写了一个测试程序,从0到4096调用此设备的ioctl,我可以在dmesg中看到所有这些值的消息“用cmd = n调用”,除了“2”,唯一没有显示的值。 关于我做错了什么的线索? 先感谢您,

如何了解C中接口的IP地址?

假设我正在运行一个名为IpAddresses.c的程序。 我希望该程序根据每个接口获取此设备具有的所有IP地址。 就像ifconfig一样。 我怎样才能做到这一点? 我对ioctl了解不多,但我读到它可能会对我有所帮助。