HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
阅读:4790回复:1

心情故事,关于RC_INVOKED

楼主#
更多 发布于:2002-12-07 15:00
我花费了两天时间困惑于一个垃圾问题。
就是我发现我在a驱动程序调用iocalldriver到b驱动的时候,
b驱动程序取出来的irpstack->parameters的指针多偏移了
4个字节。在汇编级上跟踪了也找不到什么错误。

通常这种错误出现在字节对齐上面。可是我仔细检查了这方面
的问题,似乎也不存在。然后我仔细检查两个驱动程序是否连接
的同一个头文件,还是没有问题。

今天下午我突然发现原来我的b驱动中定义了RC_INVOKED,我
对当时为什么要加上这个定义印象已经非常模糊,然后我赶紧
到头文件中看了看,发现原来如此!!!

这个问题带来的教训是,当不知道某个定义到底是什么意思的
时候,决不要因为加上这个定义就可以编译通过而冒然加上。

每个细节的错误都会浪费n个工作日的时间。

此外,经过仔细研究,发现internal_ioctl和ioctl的内部实现
细节非常不同,以前没有意识到,只是用了,而且也能用,这次
查错仔细查了一遍ddk和汇编码,算是这次倒霉时间的一个收获吧。
不再回忆从前,我已经生活在幸福当中。
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-07 15:19
同感。

顺便问一句:如何区分一个协议在注册时候用的是PNDIS_PROTOCOL_CHARACTERISTICS还是POLD_NDIS_PROTOCOL_CHARACTERISTICS?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
游客

返回顶部