找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 2890|回复: 5

新人学习疑惑求大佬

[复制链接]

1

主题

16

回帖

0

精华

铜牌会员

积分
48
发表于 2020-10-3 18:03:31 | 显示全部楼层 |阅读模式
根据TA的学习文件,学到这一步。发现直接改变string1就蓝屏,请问下各位大佬说下是什么情况?
//(1)用RtlInitAnsiString初始化字符串CHAR *
        {
        ANSI_STRING  AnsiString1;
        CHAR * string1= "hello";
        //初始化ANSI_STRING字符串
        RtlInitAnsiString(&AnsiString1,string1);
        DbgPrint("AnsiString1:%Z\n",&AnsiString1);//打印hello
        string1[0]='H';
        string1[1]='E';
        string1[2]='L';
        string1[3]='L';
        string1[4]='O';
        //改变string1,AnsiString1同样会导致变化
        DbgPrint("AnsiString1:%Z\n",&AnsiString1);//打印HELLO
        }

1

主题

16

回帖

0

精华

铜牌会员

积分
48
 楼主| 发表于 2020-10-3 19:10:37 | 显示全部楼层
使用的环境是VS2019+WDK10.0.19041.0

856

主题

2630

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36108
发表于 2020-10-7 04:10:25 | 显示全部楼层
“直接改变string1就蓝屏”,不知你如何“直接改变”?

77

主题

192

回帖

9

精华

贵宾会员

积分
15602
发表于 2020-10-8 22:33:12 | 显示全部楼层
多半是编译器把字符串丢进了只读区了,定义string1那行换成
  1. char string1[]="hello";
复制代码

大概就行了。

1

主题

16

回帖

0

精华

铜牌会员

积分
48
 楼主| 发表于 2020-10-10 00:30:30 | 显示全部楼层
tangptr@126.com 发表于 2020-10-8 22:33
多半是编译器把字符串丢进了只读区了,定义string1那行换成

大概就行了。 ...

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

1

主题

16

回帖

0

精华

铜牌会员

积分
48
 楼主| 发表于 2020-10-10 00:33:14 | 显示全部楼层
Tesla.Angela 发表于 2020-10-7 04:10
“直接改变string1就蓝屏”,不知你如何“直接改变”?

贴出来的代码那样操作,也是大佬你发的那个教程里的代码。后来我试了一下UNICODESTRING字符串不会蓝屏,运行了一下教程里的成品sys文件也把hello改变成HELLO
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表