日期:2014-05-17  浏览次数:20810 次

WDK驱动开发中WCSSTR导致的蓝屏

在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就没问题。