主题 : 为什么我的驱动里面的iotcl函数不被调用,但是open函数可以被调用 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 42196
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
综合积分: 4 分
注册时间: 2011-04-05
最后登录: 2011-05-23
楼主  发表于: 2011-05-22 13:43

 为什么我的驱动里面的iotcl函数不被调用,但是open函数可以被调用

在应用程序里,调用fopen打开一个已经存在的文件,返回成功,而且在驱动程序里,也打印出了表示成功信息,同样调用驱动程序里的dev_read和dev_write也都成功,但是在应用程序里调用ioctl时,驱动程序里的dev_ioctl函数就是不被调用。而且在应用程序里调用iotcl时,返回的又不是负数。想了好久没想通。高手指点一下啊。程序在附件中。谢谢了
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2011-05-22 16:38
一般用最底层的open才可以吧,fopen主要是针对块设备的?
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 42196
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
综合积分: 4 分
注册时间: 2011-04-05
最后登录: 2011-05-23
2楼  发表于: 2011-05-22 17:21
谢谢版主的回答,不仅要改为open打开,而且参数也要改,改成open("xxx",O_RDWR);就可以正常调用了。至于其他的办法还有没有,我就没试过了。哈哈,晕了我好久