关于RtlInitUnicodeString感想

01 VOID RtlInitUnicodeString (OUT PUNICODE_STRING DestinationString,IN PCWSTR SourceString OPTIONAL)
02 {
03     SIZE_T Length;
04     DestinationString->MaximumLength = 0;
05     DestinationString->Length = 0;
06     DestinationString->Buffer = (PWSTR)SourceString;
07     if (ARGUMENT_PRESENT(SourceString))
08     {
09         Length = wcslen(SourceString) * sizeof(WCHAR);
10         ASSERT(Length < MAX_USTRING);
11         if(Length >= MAX_USTRING)
12         {
13             Length = MAX_USTRING - sizeof(UNICODE_NULL);
14         }
15         DestinationString->Length = (USHORT)Length;
16         DestinationString->MaximumLength = (USHORT)(Length + sizeof(UNICODE_NULL));
17     }
18     return;
19 }
20  
21 NTSTATUS RtlInitUnicodeStringEx ( OUT PUNICODE_STRING DestinationString,IN PCWSTR SourceString OPTIONAL)
22 {
23     SIZE_T Length;
24     DestinationString->Length = 0;
25     DestinationString->MaximumLength = 0;
26     DestinationString->Buffer = (PWSTR)SourceString;
27     if (ARGUMENT_PRESENT(SourceString))
28     {
29         Length = wcslen(SourceString);
30         // We are actually limited to 32765 characters since we want to store a meaningful MaximumLength also.
31         if (Length > (UNICODE_STRING_MAX_CHARS - 1))
32         {
33             return STATUS_NAME_TOO_LONG;
34         }
35         Length *= sizeof(WCHAR);
36         DestinationString->Length = (USHORT)Length;
37         DestinationString->MaximumLength = (USHORT)(Length + sizeof(WCHAR));
38     }
39     return STATUS_SUCCESS;
40 }

从以上代码可见,这2个函数会将传入的字符串指针直接赋值给结构体,这样的话,如果传入的是栈字符串,那么UNICODE_STIRNG只能在当前域内使用,不能存储到其他生命周期更长的地方,否则栈恢复以后读取到不正确的数据,
然而传入一个全局字符串是可以的,例如:

UNICODE_STRING str1;
void func()
{
  WCHAR buf[]=L"lich";
  RtlInitUnicodeString(&str1,buf);
}
这是错误写法

https://www.0xaa55.com/forum.php?mod=viewthread&tid=1371&extra=page%3D6

时间: 2024-12-25 18:34:39

关于RtlInitUnicodeString感想的相关文章

读《平凡的世界》感想(一)

读<平凡的世界>感想(一) 平凡的世界是一本经典的书,一直想看,最近终于开始品读这部巨著."平凡的世 界"是路遥文集中份量最重的一部长篇,全景式地描写了中国现代城乡生活,通过复杂 的矛盾纠葛,以孙少平等人位代表刻画了社会各阶层普通人们的形象,人生的自尊.自 强与自信,人生的奋斗与拼搏,挫折与追求,痛苦与欢乐,纷繁地交织,读来令人荡气 回肠. 全书的主角是孙少平,他是一个平凡而普通的人,他没有过人的武艺或超群的智慧, 他也有世俗的攀比心和青年人的迷茫:那他凭什么成为一部文学巨

【软件工程】一个学期软件工程课的感想

软件工程课是个不错的课,因为教课老师嗓门很大,PPT做的很有意思,上课从来没有点过我的名字,万分荣幸. 软件工程课的脉络很清晰,就是个各种软件开发,个人软件开发,结对软件开发还有结组软件开发.针对这三种软件开发,各写了一个程序,就从这三个程序入手说起吧. 一.              查询一段英文短文中的单词出现的频度.说实话,遇到这样的题,我只想说一句:呵呵.这样的题网上肯定一大堆,随便百度一个就交差了.但是这是第一个程序,那么简单就直接放弃挣扎是不是太弱了,于是就自己写了一个,写了好久,但

读&lt;&lt;大数据时代&gt;&gt;的一些感想

第一次听说<<大数据时代>>这本书,是在网上看到的央视搞的一个2013中国好书评选活动推荐的25本"中国好书"的榜单中看到的.然后迅速上豆瓣上查看了一下对该书的评价,一看非常高,再加上央视的推荐是从2013在中国出版的40册图书中选出25本,可以说是精华了.果断定了一本,花了三天时间读完了.   大数据这个名词或者说概念从被提出开始,经过短短几年的发展,已经传的沸沸扬扬了,经常见诸媒体上.好像哪家媒体的科技板块每天不弄一些这样的新闻条,它就显得不够档次一样.这是

天翼杯大数据算法应用大赛感想

竞赛过去很久了,早就想写写感想与经历,可是一直拖着没写.今天终于有时间了,就写写吧. 竞赛题目是视频网站推荐,根据前七周每天用户对10个视频网站的访问次数数据以及其他上网行为,预测用户第八周对10个视频网站的访问量. 咋一看这是个时间序列预测问题,是啊,给出前49天用户访问数据,让你预测未来七天用户访问数据.这确实应该是个时间序列预测问题. 但我用时间预测算法模型Holt-Winter(3次指数平滑), ARIMA跑结果的时候,结果却并不是很好. 我后来分析了下数据,统计了七周每一周七天内用户对

Build To Win 读后感想

Build To Win感想 这学期我们上到了这门课,在还没上这门课之前,对于这本书完全没有感觉,正好是软件工程,感觉一定是枯燥乏味的内容. 就前几天,我们老师上课之前就给我们介绍了这本书.这本书如此收到好评,正是因为这本书改变了传统的软件工程的书本的一贯风格--枯燥乏味. 回去打开这本书,穿插着许多的故事,作者语言很幽默风趣,很吸引人去往下读这本书. 在这本书中,我感触比较深的就是团队合作,分配工作之类的. 第一,合理的工作分配非常重要,一个好的软件小组其管理者必须要将小组内每个成员的能力都要

项目感想 总纲-基于8051的数据采集系统

博文的内容是感想,是我在做一个小作品的时候记录下来的感想.现在将其整理好,分享出来. 我写博文的纲领是隐恶扬善,所以一些不好的事情,闭口不说.但别人对我的好,要尽力写出来. 虽然我不是大牛,感想有时显得有些幼稚,但是我依然希望你能通过我的感想得到一些启发,少走一些弯路.

本周软件工程课程感想

由于我们团队项目进行到一半,不便传上来代码.我就这周软件工程课程的内容写一点感想吧. 下面这是我们图形学课程实验的部分代码: /**********myInit**********/ void myInit() { pn = 0; glClearColor(1.0, 1.0, 1.0, 0.0); glColor3f(0.2f, 0.2f, 0.9f); glPointSize(5.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluOrth

结对编程的感想

感想 首先我觉得结对编程不适合所有人  因为有些程序员内向的还是比较多的 所以这些人可能更喜欢单独工作 而且单独工作成效更显著 但是难免不会遇到自己解决不了的问题 这时候结对编程是一个不错的选择 结对编程更适合团结协作喜欢在一起工作状态的人 如果一个水平好的程序员和一个水平不太好的人一起工作 那么水平不太好的那个更能受水平好的程序员影响学到新的东西 并且两个人一起工作能起到相互督促的作用 在疲惫的时候起到相互鼓励的作用 两个人的交流增加 关系也会变的融洽 不但在工作过程中增加了乐趣 而且达到了事

开发项目和所用时间 感想

开发项目和所用时间: 我通过上课的时间,利用了这段时间按照老师的要求编写加减乘除的程序,因所学的不是很好,所以里面有一些小的错误. 感想:通过这次上课所学的东西,我了解了自己在这个课程中的好多不足,以及自己在学习中的错误方法,知道了自己在以后的学习中应该更改自己的学习方法,让自己对这个课程更加了解认识,这次的作业虽然有很多小的错误,但是我们通过交流很快的解决了这些任务,顺利的完成了这项作业,让我懂得了自己与组员密不可分,应该时常交流,弥补自己的不足,自己不仅应该在日常的生活中阅读一些关于这个课程