KungFu
驱动大牛
驱动大牛
  • 注册日期2001-09-27
  • 最后登录2008-04-08
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望24点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
阅读:2778回复:16

IoCallDriver的返回值?

楼主#
更多 发布于:2001-11-22 16:39
IoCallDriver的返回值总是pending,能是什么原因?我晕菜了好几天了。帮忙

[编辑 -  11/26/01 作者: KungFu]

最新喜欢:

jmzz003jmzz00...
我不写驱动好多年
KDriver
驱动中牛
驱动中牛
  • 注册日期2001-06-09
  • 最后登录2008-09-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2000-01-11 04:00
returned STATUS_PENDING just means the lower driver quued your IRP and will handle it after a while.

what you should do is waiting there in your code by using

KeWaitForSingleObject





===================================

My English is poor, but my system
is English-version, I can\'t input
Chinese, so forgive me.

===================================
“萎软”,是Microsoft的小名!
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-11-22 20:45
IoCallDriver的返回值总是pending,能是什么原因?我晕菜了好几天了。帮忙


你在什么情况下得到的这个值,说清楚。

一般来讲,用SOFTICE跟踪,使得不到这个值的!
KungFu
驱动大牛
驱动大牛
  • 注册日期2001-09-27
  • 最后登录2008-04-08
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望24点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-11-23 08:40
我恰恰是在softice中得到的,我只是简单的将IRP转到LOW_LEVEL DEVICE而已,但是,总是PENDING,晕!
我不写驱动好多年
KDriver
驱动中牛
驱动中牛
  • 注册日期2001-06-09
  • 最后登录2008-09-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-11-23 16:18
我恰恰是在softice中得到的,我只是简单的将IRP转到LOW_LEVEL DEVICE而已,但是,总是PENDING,晕!


what kind of return code are you expecting?

Some lower-level driver return STATUS_PENDING simply in its dispatch routine, and defer the processing.
“萎软”,是Microsoft的小名!
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-11-24 11:18
得到pending很正常呀!
你要在IoCallDriver之前设置一事件为非信号状态然后在IcCallDriver之后,如是Pending就等候此事件。
KungFu
驱动大牛
驱动大牛
  • 注册日期2001-09-27
  • 最后登录2008-04-08
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望24点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-11-26 08:51
多谢几位了!
我只是简单的将IRP转到LOW_LEVEL DEVICE,如果status是pending,岂不是,我的LOW_LEVEL DEVICE没有收到或者是处理完数据???
我不写驱动好多年
KungFu
驱动大牛
驱动大牛
  • 注册日期2001-09-27
  • 最后登录2008-04-08
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望24点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-11-26 15:15
returned STATUS_PENDING just means the lower driver quued your IRP and will handle it after a while.

what you should do is waiting there in your code by using

KeWaitForSingleObject





===================================

My English is poor, but my system
is English-version, I can\'t input
Chinese, so forgive me.

===================================



Thank you,sir!
I called KeWaitForSingleObject after calling IoCallDriver,but我等到花儿都谢了,结果--还是在等。
能是什么原因让我等的这么久?
我不写驱动好多年
KDriver
驱动中牛
驱动中牛
  • 注册日期2001-06-09
  • 最后登录2008-09-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-11-26 15:29
只能说是硬件有问题。或者你在调用前设置得参数有问题。如果,lower driver是由你自己写的话,那它也可能有问题,你发段代码来好吗?

yuan3rd@21cn.com
“萎软”,是Microsoft的小名!
KDriver
驱动中牛
驱动中牛
  • 注册日期2001-06-09
  • 最后登录2008-09-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-11-26 15:30
只能说是硬件有问题。或者你在调用前设置得参数有问题。如果,lower driver是由你自己写的话,那它也可能有问题,你发段代码来好吗?

yuan3rd@21cn.com
“萎软”,是Microsoft的小名!
KungFu
驱动大牛
驱动大牛
  • 注册日期2001-09-27
  • 最后登录2008-04-08
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望24点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2001-11-26 15:45
只能说是硬件有问题。或者你在调用前设置得参数有问题。如果,lower driver是由你自己写的话,那它也可能有问题,你发段代码来好吗?

yuan3rd@21cn.com


我的low device是serial port driver与我有关系吗?
也就是我建立一个Irp发到了serial port,但是一调用KeWaitForSingleObject就跳出softice,并且程序停止。
我不写驱动好多年
KDriver
驱动中牛
驱动中牛
  • 注册日期2001-06-09
  • 最后登录2008-09-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2001-11-26 16:28
我一点不明白了,你用了IoBuildDeviceIoControlRequest 生成了一个irp,那有为什么在后面使用
IrpNextStack->MajorFunction = IRP_MJ_WRITE;
IrpNextStack->Parameters.Write.Length = RequestBufferLength;
            IrpNextStack->Parameters.Write.ByteOffset.QuadPart = 0;

你把这两句去掉先,再试一下。
“萎软”,是Microsoft的小名!
KungFu
驱动大牛
驱动大牛
  • 注册日期2001-09-27
  • 最后登录2008-04-08
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望24点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2001-11-26 16:45
去掉了,结果是iocalldriver的返回值是:STATUS_INVALID_PARAMETER,意思是:An invalid parameter was passed to a service or function.
我不写驱动好多年
KDriver
驱动中牛
驱动中牛
  • 注册日期2001-06-09
  • 最后登录2008-09-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2001-11-26 16:55
lower driver是谁写的?如果是系统提供的,ControlCode又是什么,是定义好的嘛?
“萎软”,是Microsoft的小名!
KungFu
驱动大牛
驱动大牛
  • 注册日期2001-09-27
  • 最后登录2008-04-08
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望24点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2001-11-27 08:16
low driver是系统自己的,controlcode是我自己定义的。
我不写驱动好多年
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2001-11-27 09:12
你向下层驱动发送的IoControlCode也应该是下层驱动自己的,否则会出现STATUS_INVALID_PARAMETER,如果要向下层驱动发送IRP_MJ_WRITE,你应该调用IoBuildSynchronousFsdRequest。

关于使用串口的例子,你可以参考2kddk的mouser,里面讲的特详细!
祝好运!
KungFu
驱动大牛
驱动大牛
  • 注册日期2001-09-27
  • 最后登录2008-04-08
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望24点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2001-11-27 09:21
你向下层驱动发送的IoControlCode也应该是下层驱动自己的,否则会出现STATUS_INVALID_PARAMETER,如果要向下层驱动发送IRP_MJ_WRITE,你应该调用IoBuildSynchronousFsdRequest。

关于使用串口的例子,你可以参考2kddk的mouser,里面讲的特详细!
祝好运!


多谢老兄了!
我不写驱动好多年
游客

返回顶部