请问,为何小弟我用WDK开发的一个NT驱动生成文件大于9.5k时候蓝屏
请教,为何我用WDK开发的一个NT驱动生成文件大于9.5k时候蓝屏
开发环境:WDK(7600.16385.1) ,驱动为WinXP SP3 的NT类型驱动
我在学习驱动开发的过程中,做了一个Ring 0态判断操作系统版本的驱动
现在发现一个问题,就是在Check模式下生成的文件只要大于9.5k,注册服务正常,开始服务正常,然后不进行任何操作
只要一停止驱动,系统即蓝屏
驱动中的CreateDevice例程/Unload例程和派遣函数例程没有运行任何自定义的操作
并且我把我自己的模块(一些测试的KDprint,和一个自定义的判断操作系统版本函数)分离出来单独测试,都是没问题的,只要把这些代码组合起来生成的文件大于9.5k 即发生蓝屏
只要Check模式生成的文件大于9.5k,我再用Free模式生成文件(此时文件缩小为6K),同样也会蓝屏
只有67分了,大家能帮帮我想想问题所在么,谢谢!
------解决方案--------------------
这个没有必然联系。
------解决方案--------------------
主要还是代码的关系 和生成文件没有太大的关系
------解决方案--------------------
调试信息说的比较明白了
蓝屏是因为程序调用了已经释放的内存单元导致的
pNextObj = pNextObj->NextDevice前加个断言,生成check文件试试
也可能问题不在这句话上。
------解决方案--------------------
应该是IoDeleteSymbolicLink(&pLinkName);出错了。
752行,STRING类别的数据是不能这样赋值的。
开发环境:WDK(7600.16385.1) ,驱动为WinXP SP3 的NT类型驱动
我在学习驱动开发的过程中,做了一个Ring 0态判断操作系统版本的驱动
现在发现一个问题,就是在Check模式下生成的文件只要大于9.5k,注册服务正常,开始服务正常,然后不进行任何操作
只要一停止驱动,系统即蓝屏
驱动中的CreateDevice例程/Unload例程和派遣函数例程没有运行任何自定义的操作
并且我把我自己的模块(一些测试的KDprint,和一个自定义的判断操作系统版本函数)分离出来单独测试,都是没问题的,只要把这些代码组合起来生成的文件大于9.5k 即发生蓝屏
只要Check模式生成的文件大于9.5k,我再用Free模式生成文件(此时文件缩小为6K),同样也会蓝屏
只有67分了,大家能帮帮我想想问题所在么,谢谢!
------解决方案--------------------
这个没有必然联系。
------解决方案--------------------
主要还是代码的关系 和生成文件没有太大的关系
------解决方案--------------------
调试信息说的比较明白了
蓝屏是因为程序调用了已经释放的内存单元导致的
pNextObj = pNextObj->NextDevice前加个断言,生成check文件试试
也可能问题不在这句话上。
------解决方案--------------------
应该是IoDeleteSymbolicLink(&pLinkName);出错了。
752行,STRING类别的数据是不能这样赋值的。
- C/C++ code
752: UNICODE_STRING pLinkName = pDevExt->ustrSymLinkName; 753: IoDeleteSymbolicLink(&pLinkName);