阅读:4981回复:1
心情故事,关于RC_INVOKED
我花费了两天时间困惑于一个垃圾问题。
就是我发现我在a驱动程序调用iocalldriver到b驱动的时候, b驱动程序取出来的irpstack->parameters的指针多偏移了 4个字节。在汇编级上跟踪了也找不到什么错误。 通常这种错误出现在字节对齐上面。可是我仔细检查了这方面 的问题,似乎也不存在。然后我仔细检查两个驱动程序是否连接 的同一个头文件,还是没有问题。 今天下午我突然发现原来我的b驱动中定义了RC_INVOKED,我 对当时为什么要加上这个定义印象已经非常模糊,然后我赶紧 到头文件中看了看,发现原来如此!!! 这个问题带来的教训是,当不知道某个定义到底是什么意思的 时候,决不要因为加上这个定义就可以编译通过而冒然加上。 每个细节的错误都会浪费n个工作日的时间。 此外,经过仔细研究,发现internal_ioctl和ioctl的内部实现 细节非常不同,以前没有意识到,只是用了,而且也能用,这次 查错仔细查了一遍ddk和汇编码,算是这次倒霉时间的一个收获吧。 |
|
|
沙发#
发布于:2002-12-07 15:19
同感。
顺便问一句:如何区分一个协议在注册时候用的是PNDIS_PROTOCOL_CHARACTERISTICS还是POLD_NDIS_PROTOCOL_CHARACTERISTICS? |
|
|