在VMWARE调试驱动,有时会蓝屏。使用WINDBG查看崩溃日志CASH文件
发现错误是在
if (wcsstr(nameInfo->Name.Buffer, L"XXX.EXE") > 0) {
这行,原来wcsstr是根据最后一个字符是否为NULL判断字符串是否完成的,而nameInfo->Name.Buffer是UNICODE_STRING,并不是应用层开发意义上的字符串,也不是以NULL结束。
所以改成用RtlStringCbCopyNW把nameInfo->Name.Buffer复制到一个wchar_t数组中,然后再用wcsstr就没问题。
本文介绍在VMWARE环境下调试驱动程序遇到的蓝屏问题及解决方法。通过分析发现,问题出现在使用wcsstr处理未以NULL结尾的UNICODE_STRING类型变量上。最终通过将数据复制到wchar_t数组中解决了该问题。
593

被折叠的 条评论
为什么被折叠?



