新人学习疑惑求大佬
根据TA的学习文件,学到这一步。发现直接改变string1就蓝屏,请问下各位大佬说下是什么情况?//(1)用RtlInitAnsiString初始化字符串CHAR *
{
ANSI_STRINGAnsiString1;
CHAR * string1= "hello";
//初始化ANSI_STRING字符串
RtlInitAnsiString(&AnsiString1,string1);
DbgPrint("AnsiString1:%Z\n",&AnsiString1);//打印hello
string1='H';
string1='E';
string1='L';
string1='L';
string1='O';
//改变string1,AnsiString1同样会导致变化
DbgPrint("AnsiString1:%Z\n",&AnsiString1);//打印HELLO
}
使用的环境是VS2019+WDK10.0.19041.0 “直接改变string1就蓝屏”,不知你如何“直接改变”? 多半是编译器把字符串丢进了只读区了,定义string1那行换成
char string1[]="hello";
大概就行了。 tangptr@126.com 发表于 2020-10-8 22:33
多半是编译器把字符串丢进了只读区了,定义string1那行换成
大概就行了。 ...
我知道这样改,但是改变了这个还是没办法改变ansistring的值,后来,试了一下unicodestring这样操作字符不会蓝屏 Tesla.Angela 发表于 2020-10-7 04:10
“直接改变string1就蓝屏”,不知你如何“直接改变”?
贴出来的代码那样操作,也是大佬你发的那个教程里的代码。后来我试了一下UNICODESTRING字符串不会蓝屏,运行了一下教程里的成品sys文件也把hello改变成HELLO
页:
[1]