在驱动程序中,如何使用strstr函数?

njtlxm 2003-09-08 08:56:56
我在驱动程序中使用了strstr函数,目的是在一个长字符串中找出指定子串的开始位置.但是我发现有时系统会dump,用windbg分析,指出是使用strstr函数的这一行代码出错,为什么?
我在DDK中没有找到可以替代strstr的函数,有谁知道吗?

另外,在windbg中,如何查看一个变量的值?我想memory文件应该记录了当时的内存情况,所以变量的值应该也是记录了,但是不知道如何查看?
...全文
156 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
imquestion 2003-09-09
  • 打赏
  • 举报
回复
如果要自己写的话,这里,crt源码。

char * __cdecl strstr (
const char * str1,
const char * str2
)
{
char *cp = (char *) str1;
char *s1, *s2;

if ( !*str2 )
return((char *)str1);

while (*cp)
{
s1 = cp;
s2 = (char *) str2;

while ( *s1 && *s2 && !(*s1-*s2) )
s1++, s2++;

if (!*s2)
return(cp);

cp++;
}

return(NULL);

}
火焰射手 2003-09-09
  • 打赏
  • 举报
回复
老兄这个想法是个解决办法,在驱动里面使用Stream API本来就有危险,有可能你的驱动起来的时候这些API的库还没有加载,不过,模式匹配当然还是KMP算法比较好吧,呵呵。
xiaohedou 2003-09-09
  • 打赏
  • 举报
回复
如何查看一个变量的值?shift+F9::QuickWatch行吗?

可以自己编一个比较函数。大意如此:

bool strChecker( char *s1, char *s2)
{
while(*s1 && *s2) {
if(*s1 == *s2) then ...
s1++;
s2++;
...
}
return true;
}

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧