WINCE 流驱动访问应用层的回调函数跑飞 问题

一介布衣萧萧 2013-11-19 02:58:07
最近在尝试把应用层的回调函数设置到流驱动中。
当流驱动中处理完毕之后,调用应用层的回调函数,把参数传递上去。
在实际测试中发现,驱动可以正常的进入到回调函数,但进去之后就跑飞了。应用层对应的回调函数并没有
被驱动层调用。
然,在驱动中调用其他驱动的回调函数,是正常的。
为什么驱动调用应用层的回调函数就无法正常访问呢?

我在驱动调用应用层回调函数的前后添加了调试信息,前面的调试信息出来了,执行了调用回调函数之后,后面的调试信息没有出来。回调函数的实现那里也没有被调用,说明跑飞了。

莫非这个跟内核态和应用态有关?

有谁这样试过吗?

回调函数是通过XXX_IOControl接口把函数地址传递到驱动中的。
...全文
130 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
跨进程回调函数还能直接这样调用吗?是否驱动调用地址不合法?
一介布衣萧萧 2013-11-20
  • 打赏
  • 举报
回复
鉴于内核态和应用态的问题,这个回调还是不能直接调用的。 后来,我采用了其他迂回的方式来实现,其中也采用了事件通知然后主动获取的 谢谢各位啦!结贴散分~~
一介布衣萧萧 2013-11-20
  • 打赏
  • 举报
回复
引用 3 楼 accessysq 的回复:
跨进程回调函数还能直接这样调用吗?是否驱动调用地址不合法?
驱动与驱动之间是OK的,应用层和应用层之间也是OK的,这个我已经测试过。 但是驱动和应用层之间就是不OK的,一调用直接就飞了,应该可以说是地址不合法。我仔细对比过驱动调用应用层回调函数的地址和应用层调用应用层回调函数的地址,地址都是一样的。
一介布衣萧萧 2013-11-19
  • 打赏
  • 举报
回复
引用 1 楼 hudaweikevin 的回复:
我觉得应该是内核态和应用态的关系,你可以采用事件的方法告诉应用层,应用层再去取得到的参数
这是一个办法。 一开始我也想用事件,不过后来考虑到这样子转了个圈,效率就变低了,所以就没采用。就使用了回调函数的方法,看看能否行得通
David_Hu 2013-11-19
  • 打赏
  • 举报
回复
我觉得应该是内核态和应用态的关系,你可以采用事件的方法告诉应用层,应用层再去取得到的参数

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧