skylgl
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1648回复:5

DeviceIoControl的奇怪问题,望大家帮忙(80分)

楼主#
更多 发布于:2003-05-08 11:09
我在使用DeviceIoControl想驱动传数据的时候,第一次可以成功,而且,我在Dispatch中也检查了这个参数,传入的数据(包含地址)都是正确的,但DeviceIoControl的返回值是1,但我用GetLastError中可以看到其CODE为183,但DeviceIoControl却完成了。
当我发第二个IOCTL的时候,发现下面没有收到通过InputBuffer传下去的指针(是一个应用层的指针)在下面没有收到,但其它的参数都收到了的(比如Buffersize和functioncode),而且也是正确的。
我不知道我是在那里做错了,但感觉没有这个问题。
我查了ErrorCode 为183的错误,是说的一个句柄已经被打开,我想知道驱动的设备是不是不允许被多次打开呢?
很急!!!望大家支持
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-08 15:19
我在使用DeviceIoControl想驱动传数据的时候,第一次可以成功,而且,我在Dispatch中也检查了这个参数,传入的数据(包含地址)都是正确的,但DeviceIoControl的返回值是1,但我用GetLastError中可以看到其CODE为183,但DeviceIoControl却完成了。
当我发第二个IOCTL的时候,发现下面没有收到通过InputBuffer传下去的指针(是一个应用层的指针)在下面没有收到,但其它的参数都收到了的(比如Buffersize和functioncode),而且也是正确的。
我不知道我是在那里做错了,但感觉没有这个问题。
我查了ErrorCode 为183的错误,是说的一个句柄已经被打开,我想知道驱动的设备是不是不允许被多次打开呢?
很急!!!望大家支持

可以多次打开的, 但是打开一次后再打开就会出现你那种情况了(返回非零值)
多次打开应该不会影响数据的传递, 我姑计是你传递的参数有问题.
不要拒绝我... 哈!哈! 给分!
skylgl
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-09 09:32
shrimp,谢谢你的回答,刚才已经试过,单独只是传一个指针下去是不会遭的,比如,我就只是传一个进程句柄。在下面能够看到。
你的意思是即使它返回值是非0的也是正确的????
但如果我传一个比较的数据,大概有100多个字节,就会出现所描述的情况,不明白是什么意思??
有没有比较详细的将DeviceIoControl调用后的IRP的过程的资料,如果可以看到系统的操作,就比较简单了
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-09 10:51
shrimp,谢谢你的回答,刚才已经试过,单独只是传一个指针下去是不会遭的,比如,我就只是传一个进程句柄。在下面能够看到。
你的意思是即使它返回值是非0的也是正确的????
但如果我传一个比较的数据,大概有100多个字节,就会出现所描述的情况,不明白是什么意思??
有没有比较详细的将DeviceIoControl调用后的IRP的过程的资料,如果可以看到系统的操作,就比较简单了  


1、该不会是你CreateFile,没有CloseHandle吧?
2、DeviceIoControl正确返回值就是1呀。
3、不必考虑系统关于IRP的调用过程。肯定是自己的程序出现了问题。
skylgl
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-09 12:10
问题已经解决了,谢谢大家,
希望大家注意CTL的定义,如果你是自己定义的话,还有定义的传输方式跟内核的处理的影响
再次感谢大家的关注
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-09 15:17
刚有空上来!看到你已经解决了!也可以互相学习。
不要拒绝我... 哈!哈! 给分!
游客

返回顶部