j90141355 发表于 2020-10-3 18:03:31

新人学习疑惑求大佬

根据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
        }

j90141355 发表于 2020-10-3 19:10:37

使用的环境是VS2019+WDK10.0.19041.0

Tesla.Angela 发表于 2020-10-7 04:10:25

“直接改变string1就蓝屏”,不知你如何“直接改变”?

tangptr@126.com 发表于 2020-10-8 22:33:12

多半是编译器把字符串丢进了只读区了,定义string1那行换成
char string1[]="hello";
大概就行了。

j90141355 发表于 2020-10-10 00:30:30

tangptr@126.com 发表于 2020-10-8 22:33
多半是编译器把字符串丢进了只读区了,定义string1那行换成

大概就行了。 ...

我知道这样改,但是改变了这个还是没办法改变ansistring的值,后来,试了一下unicodestring这样操作字符不会蓝屏

j90141355 发表于 2020-10-10 00:33:14

Tesla.Angela 发表于 2020-10-7 04:10
“直接改变string1就蓝屏”,不知你如何“直接改变”?

贴出来的代码那样操作,也是大佬你发的那个教程里的代码。后来我试了一下UNICODESTRING字符串不会蓝屏,运行了一下教程里的成品sys文件也把hello改变成HELLO
页: [1]
查看完整版本: 新人学习疑惑求大佬