驱动中调用wcsstr崩溃分析
来源:互联网 发布:股票自动交易软件 编辑:程序博客网 时间:2024/04/27 16:59
驱动中如下代码,有时候会在wcsstr行蓝屏
if (wcsstr(file_obj->FileName.Buffer,L"abc.db"))
{
DbgPrint("open abc.db/n");
}
其中file_obj->FileName为Unicode_String类型,经分析,应该是FileName.Buffer并非以0结尾的字符串。所以改用自己实现的以下替代函数
#include "wchar.h"
//search string's substring
//str: Buffer to search from
//nLength: the character length of str
//returns a pointer to the first occurrence of strSearch in str.
//
char* __stdcall FindSubStringA(const char *str,int nLength,const char *strSearch)
{
char *cp=(char *)str;
char *s1, *s2;
if(!*strSearch)
return ((char *)str);
while(nLength && *cp )
{
s1 = cp;
s2 = (char*)strSearch;
while(*s1 && *s2 && !(*s1-*s2))
s1++, s2++;
if(!*s2)
return(cp);
cp++;
nLength--;
}
return (NULL);
}
wchar_t* __stdcall FindSubStringW(const wchar_t *str,int nLength,const wchar_t *strSearch)
{
wchar_t *cp=(wchar_t *)str;
wchar_t *s1, *s2;
if(!*strSearch)
return ((wchar_t *)str);
while(nLength && *cp )
{
s1 = cp;
s2 = (wchar_t*)strSearch;
while(*s1 && *s2 && !(*s1-*s2))
s1++, s2++;
if(!*s2)
return(cp);
cp++;
nLength--;
}
return(NULL);
}
代码改成如下后,蓝屏不再出现。
if (FindSubString(file_obj->FileName.Buffer,file_obj->FileName.Length/2,L"abc.db"))
{
DbgPrint("open abc.db/n");
}
- 驱动中调用wcsstr崩溃分析
- WDK驱动开发中WCSSTR导致的蓝屏
- wcsstr
- uboot中mmc驱动调用分析
- Dll中调用Domodal崩溃
- Linux 获取并分析程序崩溃时的调用堆栈
- NDK调用三方库崩溃--【事件记录及分析】
- Linux 获取并分析程序崩溃时的调用堆栈
- 崩溃分析
- USB驱动Suspend&Resume 调用流程分析
- iOS中 iOS10 调用相机相册等权限崩溃问题
- android中HttpURLConnection调用getResponseCode()时崩溃 解决方法
- VS2010解决调用BPA中swnt.exe崩溃问题
- Qt5.9中关于QWebEngineView调用load()软件崩溃
- wcsstr()的实现
- wcsstr引出蓝屏
- 驱动中id_table的分析
- 驱动中ioctl参数分析
- 我的与编程思想相关的文章
- sqlhelper中文资料(转载)
- IUnknown IClassFactory IDispatch
- 八个有趣实用的Bash提示符
- C++ 误区五:检查 new 的返回值
- 驱动中调用wcsstr崩溃分析
- IBM MQ 使用指南
- 感慨
- 性能改善
- 关于javabean
- 教你分清PV、UV、IP三大网站统计参数
- Apparently wrong driver class specified for URL
- 基础护肤
- socket的编程所遇到的问题