- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UNICODE_STRING 总结
UNICODE_STRING 总结
UNICODE_STRING:
typedef struct _UNICODE_STRING {? USHORT? Length;???? //UNICODE占用的内存字*2;? USHORT? MaximumLength;? PWSTR? Buffer;} UNICODE_STRING ,*PUNICODE_STRING;
参数定Lengthbuffer的字“NULL”MaximumLengthbuffer的的Up to MaximumLength bytes may be written into the??????????????????buffer without trampling memory.BufferPointer to a wide-character string指向ANSI_STRING:
typedef struct _STRING {? USHORT? Length;? USHORT? MaximumLength;? PCHAR? Buffer;} STRING, *PANSI_STRING;
WCAHR temp[] = LHello World!;?? //定
UNICODE_STRING str ;
str.Buffer = temp;
str.Length??= wcslen(temp)*sizeof(WCHAR)?? //这个长度为UNICODE字符串所占用的字 字符个数*2 ;?
??? 当使用UNICODE_STRING 要手UNICODE_STRING?的Length和MaximumLength 成Buffer后,Length和MaximumLength 成Buffer被自UNICODE_STRING作Length和MaximumLength 成
?当ANSI,所以在ANSI_STRING,然后再使用RtlAnsiStringToUnicodeString 将其UNICODE_STRING,作。例:
ANSI_STRING? str_a;
UNICODE_STRING? str_u;
WCHAR buf_u[1024] = L;
str_a.Buffer = InputBuffer ;? //InputBuffer
str_a.Length = str_a.MaximumLength = strlen(InputBuffer);
//开辟UNICODE内存空
str_u.Buffer = buf_u;
str_u.Length = str_u.MaximumLength = strlen(InputBuffer) * sizeof(WCHAR);
RtlAnsiStringToUnicodeString(str_u, str_a , TRUE);
//当RtlAnsiStringToUnicodeString第三个参数TRUE时,要用RtlFreeUnicodeString释放临时的UNICODE_STRING
RtlFreeUnicodeString(str_u);
拼接UNICODE_STRING
? 当拼接UNICODE_STRING UNICODE的LengthUNICODE中存
WCHAR str1[] = L12345;
UNICODE_STRING str2;
str2.Buffer = ExAllocatePool(NonPagedPool, wcslen(str1)*sizeof(WCHAR))
str2.Length = 0;
str2.MaximumLength = wcslen(str1)*sizeof(WCHAR);
?RtlAppendUnicodeToString(str2, str1);
?UNICODE 和 ExAllocatePool
?? 内核在UNICODE拼接或其他ExAllocatePool动态分配UNICODE的Buffer,
UNICODE_STRING str;
str.Buffer = ExAllocatePool(NonPagedPool, 50*sizeof(WCHAR));
str.Length = 0;
str.MaximumLength = 50*sizeof(WCHAR);
但若是定UNICODE的指UNICODE ??
PUNICODE_STRING pStr;
因NonPagedPool),pStr指向
pStr = ExAllocatePool(NonPagedPool, 50*sizeof(WCHAR));
接着初始化成
pStr.Length = 0;
pStr.MaximumLength = ???;
如何初始化Buffer
您可能关注的文档
- 创新设计外研社必修一第六单元.docx
- 长 度 换 算.doc
- 澳洲煤矿新星100万美元投资煤田 未采煤已赚5亿.doc
- 区域长度错误.doc
- 纤维长度分布.doc
- 纤维长度知识.doc
- 2014届高三新人教版英语一轮总复习质量过关检测 选修六 Units 1~2 Word版含详解.doc
- 第九章 长壁采煤法采煤系统.ppt
- 采矿英语20121297何茂坤、.docx
- 把立的长度,车架型号.doc
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)