首页
社区
课程
招聘
[求助]驱动字符串处理 出现蓝屏 求指点
发表于: 2014-1-26 21:17 3893

[求助]驱动字符串处理 出现蓝屏 求指点

2014-1-26 21:17
3893
VOID AnsiStringTest()
{
	KdPrint(("******************************************************\n"));
	KdPrint(("                    ANSI_STRING测试\n"));			
	//ANSI_STRING
	ANSI_STRING AnsiStringTest;
	RtlInitAnsiString(&AnsiStringTest, "ANSI_STRING测试");		
	KdPrint(("AnsiString初始化测试:%Z\n", &AnsiStringTest));

	//ANSI_STRING复制测试
	ANSI_STRING AnsiStringCopyTest;
	RtlInitAnsiString(&AnsiStringCopyTest, "ANSI_STRING复制测试");
	KdPrint(("AnsiString复制测试(复制前):%Z\n", &AnsiStringTest));
	RtlCopyString(&AnsiStringTest, &AnsiStringCopyTest);
	KdPrint(("AnsiString复制测试(复制后):%Z\n", &AnsiStringTest));


	//ANSI_STRING小写转大写测试
	RtlInitAnsiString(&AnsiStringTest, "abCdEFFGG!13");
	KdPrint(("小写转大写测试(未转换):%Z\n", &AnsiStringTest));
[COLOR="Red"]                //在这个地方下去的几句代码加上去就出错了。。
           //小生看不出错误。。
           //难道AnsiStringUpperTest 这个变量要先初始化?或者什么[/COLOR]
	ANSI_STRING AnsiStringUpperTest;
	RtlUpperString(&AnsiStringUpperTest, &AnsiStringTest);
	KdPrint(("小写转大写测试(已转换):%Z\n", &AnsiStringUpperTest));
	RtlFreeAnsiString(&AnsiStringUpperTest);
	KdPrint(("******************************************************\n"));
}


难道这段代码有错?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 107
活跃值: (73)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
RtlUpperString(IN PSTRING DestinationString, IN const STRING *SourceString):

The MaximumLength and Buffer members of DestinationString are not modified by this routine.
The number of bytes copied from SourceString is either the Length of SourceString or the MaximumLength of DestinationString, whichever is smaller.

其实很明白了:
函数不会帮你申请内存用于存储UpperString,需要你自己初始化维护;
因而你的RtlUpperString(&AnsiStringUpperTest, &AnsiStringTest);就会直接导致蓝屏;
2014-1-26 21:30
0
雪    币: 77
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
复制之前,要检测目的地址是否可写,如果不能写,你还往里强行写入肯定要蓝屏。
2014-1-27 09:20
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢 已经了解
2014-2-6 12:01
0
游客
登录 | 注册 方可回帖
返回
//