RtlFreeUnicodeString误用引起驱动程序错误

驱动学习笔记(二)打印字符串 打印字符串:工具:debugview.exeWDM驱动程序可以使用4种格式的字符串: 1.                  空结尾的字符串,你可以用普通得C语法表示字符串常量1) DbgPrint(“Hello World!”); //直接打印字符串。2) char variable_string[] = “Hello World”;   DbgPrint(“%s”,variab 阅读详情

这几天一直在调一个驱动程序,今天终于调出来了,发现原来是RtlFreeUnicodeString函数引起的。先写一段小程序来做一个测试:

编译这个驱动程序是没有错误的,加载之后就立即蓝屏,问题就出在RtlFreeUnicodeString这个函数的使用上。

去DDK的文档中我们就可以看到这个函数的用法:RtlFreeUnicodeString函数是用来释放由RtlAnsiStringToUnicodeString和RtlUpcaseUnicodeString申请的内存空间的。而在我的这个测试程序中,我并没有用这个两个函数来申请空间,我用的是宏RTL_CONSTANT_STRING,生成的是一个常量字符串,所以RtlFreeUnicodeString最后释放的时候就会出现问题,从而导致蓝屏。

这个问题虽然很小,但是当程序的长度增加之后极其容易忽略,在平时写程序时一定要谨慎!

Win64 驱动内核编程-4.内核里操作字符串 内核里操作字符串 字符串本质上就是一段内存,之所以和内存使用分开讲,是因为内核里的字符串太有花 样了,细数下来竟然有 4 种字符串!这四种字符串,分别是:CHAR*、WCHAR*、ANSI_STRING、UNICODE_STRING。当然,内核里使用频率最多的是 UNICODE_STRING,其次是 WCHAR*,再次是 CHAR*,而 ANSI_STRING,则几乎没见过有什么内核函数使用。 阅读详情

相关推荐

codemirror6 制作markdown编辑器(源码模式)

总体上感觉能用,但是不怎么友好,官方文档有点散乱,而且关键字高亮功能是独立出去的,去官方文档找半天,也没找到怎么改。EditorView.theme可以往EditorView模块中修改CSS的样式,从而影响编辑器的样式展示。"### 测试\n\n```javascript\nlet x = 'y'\n```"这个插件中的markdown语法的高亮样式。//这里指定markdown中代码块使用的解析扩展。开头的class样式,并且还需要在选择器前面添加。//markdown语言解析扩展。

qq_43203949的博客 1782

RtlFreeUnicodeString

RtlFreeUnicodeString函数是用来释放由RtlAnsiStringToUnicodeString和RtlUpcaseUnicodeString申请的内存空间的。

xuemao1230的专栏 881

ISO15118-20证书结构关系解读(7.3.2.1)

本文主要讲述ISO15118-20:2022标准所有证书结构的关联关系,目的是为后续基于ISO15118-20车桩通讯及PNC充电等提供基础支撑。 本文所有的证书关系图全部来源于ISO15118-20:2022标准规范,在后续的讲解过程会将图的摘取出处给提供出来,便于后期文章和标准对应起来解读。

weixin_40900932的博客 3180

[Win驱动4]Windows内核态字符串操作

1. 内核的字符串操作

輚至消亡 1102

AI量化投资开源平台——Qlib(微矿)的学习使用笔记(随缘更新)

Qlib 涵盖了量化投资的全过程,为用户的 AI 算法提供了高性能的底层基础架构,从框架设计上让用户可以更容易地应用 AI 算法来辅助解决量化投资的各个关键问题(例如 Alpha 预测,风险预测,市场动态性建模)。本文旨在记录一些面向初学者的基础内容。

in_void的博客 3133

算法面试八股文『 基础知识篇 』

个人整理的算法面试基础知识八股文,内容较详细。

SG_teresa's blog 4336

Windows内核函数(1) - 字符串处理函数

1.ASCII字符串和宽字符串打印一个ASCII字符串:CHAR* string = “Hello”;KdPrint((“%s/n”, string));        //s为小写打印一个宽字符字符串WCHAR* string = L”Hello”;KdPrint((“%S/n”,string));         //s为大写2.ANSI_STRING字符串与UNICODE_STRING字符串ANSI_STRING:typedef struct _STRING {  USHORT  Length;  U

期待下集是个可爱梦儿 1064

【应用】什么是Azure?一文读懂微软云的核心逻辑与全球版图

作为微软的核心云计算服务平台,Azure不仅是数字化转型的引擎,更是全球企业在构建、扩展与优化IT基础设施时的首选平台。在这篇文章中,我们将深入探讨Azure云服务平台的各个方面,涵盖其核心优势、架构、功能、应用场景以及未来发展趋势。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1946

RtlFreeUnicodeString routine

RtlFreeUnicodeString routine RtlFreeUnicodeString 释放由RtlAnsiStringToUnicodeString 或者 RtlUpcaseUnicodeString申请的储存空间。 Syntax   VOID RtlFreeUnicodeString( _Inout_ PUNICODE_STRING UnicodeString );

死胖子的博客 1243

【3D Slicer】的小白入门使用指南一

3D Slicer 是一个免费的开源软件平台,用于医学、生物医学和其他 3D 图像的可视化、处理、分割、配准和分析。Slicer 的功能包括:读/写。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 5553

软考高级网络规划设计师教程(第3版)

"本书是由工业和信息化部教育与考试中心组织编写的考试用书,依据《网络规划设计师考试大纲》(2026年审定通过)编写。本书分为两篇:第一篇为网络规划与设计综合知识,其中第1章介绍计算机网络基础知识,第2章介绍网络互连与互联网,第3章介绍网络规划与设计的知识和方法,第4章介绍网络资源设备,第5章介绍网络安全技术,第6章介绍标准化和网络安全法规;第二篇为案例实践,其中第7章介绍网络规划案例,第8章介绍网络故障分析与处理案例,第9章介绍网络安全部署案例,第10章介绍网络规划与设计论文写作的指导思想和写作技巧。

鹿鸣天涯 3931

Windows内核函数 - ANSI_STRIN字符串与UNICODE_STRING字符串相互转换

Windows内核函数 - ANSI_STRIN字符串与UNICODE_STRING字符串相互转换

wendyWJGU的博客 436

Ardupilot chibios主函数学习(1)

目录 文章目录目录摘要第一部分chibios主函数**(1)主回调函数入口****(2)主回调函数入口****(3)主回调函数入口****(4)主回调函数入口**1.函数hal.scheduler->init()分析 摘要 本节主要记录自己学习Ardupilot的 chibios代码过程,欢迎批评指正。 第一部分chibios主函数 (1)主回调函数入口 AP_HAL_MAIN_...

陌城烟雨 4243

RtlInitAnsiString RtlInitUnicodeString RtlAnsiStringToUnicodeString RtlFreeUnicodeString

RtlInitAnsiString函数初始化ANSI_STRING字符串。 RtlInitUnicodeString函数初始化UNICODE_STRING字符串。 RtlAnsiStringToUnicodeString函数把ANSI_STRING转化成UNICODE_STRING。 RtlFreeUnicodeString函数释放给字符串动态分配的内存。 RtlInitAnsiStr

收集学习过程中对自己有帮助的牛人文章 2295

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ZwLoadDriver加载驱动

建议用SCM加载驱动,这种是正常加载方式,稳定些,不容易bsod #include #include typedef struct _LSA_UNICODE_STRING {      USHORT Length;      USHORT MaximumLength

blackbean的专栏 2713

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【转】内核打印字符串 DbgPrint

空结尾的字符串,你可以用普通得C语法表示字符串常量 1) DbgPrint(“Hello World!”); //直接打印字符串。 2) char variable_string[] = “Hello World”;    DbgPrint(“%s”,variable_string); 空结尾的宽字符串(WCHAR类型) WCHAR    string_w[] = L“Hello Wo

勿在浮沙筑高台 1787

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RtlAnsiStringToUnicodeString function

RtlAnsiStringToUnicodeString function RtlAnsiStringToUnicodeString 转换给定的ANSI 源字符串为一个Unicode字符串。 Syntax   NTSTATUS RtlAnsiStringToUnicodeString( _Inout_ PUNICODE_STRING DestinationString, _In

死胖子的博客 2609

错用RtlFreeUnicodeString引发BAD_POOL_CALL蓝屏

<br />extern "C" NTSTATUS __stdcall DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) { //........................................ // 创建调试记录文件 OBJECT_ATTRIBUTES Obj_ = {0}; RtlInitUnicodeString(&UseData.Unicode, L"//??//Z://L

Rprop 8270

UNICODE_STRING详解及注意事项

UNICODE_STRING

DontBeProud 8484

驱动开发之 UNICODE_STRING 总结

UNICODE_STRING: typedef struct _UNICODE_STRING {   USHORT  Length;     //UNICODE占用的内存字节数,个数*2;   USHORT  MaximumLength;   PWSTR  Buffer; } UNICODE_STRING ,*PUNICODE_STRING; 参数定义: Length

Lydia的博客 3876

call ntdll.RtlUnicodeStringToAnsiString

前言要模拟GetModuleFileNameA中Unicode串转Ansi串的实现, 用OD看到核心函数调用是ntdll.RtlUnicodeStringToAnsiString代码片段// hw.cpp : Defines the entry point for the console application. //#include "stdafx.h" #include <windows.h>

博客标题不能为空 1251

xbox acc驱动程序错误解决方法

本文提供xbox手柄使用无线适配器时却无法连接,无法正确安装驱动的解决办法。

m0_73964392的博客 1万+

Unicode_String Ansi_String 内核字符串操作

typedef struct _UNICODE_STRING { USHORT Length;//字节数,不是字符数 一定要* sizeof(WCHAR) USHORT MaximumLength;//字节数,不是字符数 一定要* sizeof(WCHAR) PWSTR Buffer;//非零结尾,中间也可能含有零 } UNICODE_STRING, *PUNICODE_STRI

zhuhuibeishadiao 8279

得到进程路径方法之汇总,需要的直接cp吧

//依据EPROCESS得到进程全路径 extern VOID GetFullPathByEprocess( ULONG eprocess,PCHAR ProcessImageName ); //得到当前调用函数的进程信息 extern VOID GetCurrentProcess(PULONG pid, PCHAR name, PCHAR path); //路径解析出子进程名 extern VO

关注互联网安全的小虾米一枚 4733

用Visual studio11在Windows8上开发驱动实现注册表监控和过滤

在Windows NT中,80386保护模式的“保护”比Windows 95中更坚固,这个“镀金的笼子”更加结实,更加难以打破。在Windows 95中,至少应用程序I/O操作是不受限制的,而在Windows NT中,我们的应用程序连这点权限都被剥夺了。在NT中几乎不太可能进入真正的ring0层。在Windows NT中,存在三种Device Driver: 1.“Virtual devi...

weixin_30432179的博客 200

ANSI 和 Unicode 字符串函数补充

操作 ANSI串函数 Unicode串函数 Length strlen wcslen Concatena

ClassFree(自由魔方)的Blog 1251
上一篇: [转载]Windows系统错误代码大全
下一篇: 驱动程序内存分配
lambert_s
博客等级 码龄17年 31粉丝 16原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值