Windows驱动开发 - 内核模式下的字符串操作
1 ASCII字符串和宽字符串
char型,记录ansi字符集。每个字符一个字节。以0标志结束。在KdPrint中用%s输出。
宽字符型,wchar_t,描述unicode字符集的字符串,每个字符两个字节,以0标志结束。通过L来体现。在KdPrint中用%S输出。
CHAR *string = "Hello";
WCHAR *string2 = L"hello";
KdPrint("%s\n", string);
KdPrint("%S\n", string2);
2 ANSI_STRING字符串和UNICODE_STRING字符串
DDK不鼓励用 1 中所示的C语言字符串,因为C的字符串处理函数易导致缓冲区溢出等错误(如忘记对长度进行检查)。而鼓励用DDK自己定义的字符串。
typedef struct _STRING {
USHORT Length; //字符的长度
USHORT MaximumLength;//整个字符缓冲区的最大长度
PCHAR Buffer; //缓冲区的指针
} ANSI_STRING *PANSI_STRING;
注意STRING不是以0结束的。
typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING *PUNICODE_STRING;
用%Z输出 ANSI_STRING字符串,用%wZ输出 UNICODE_STRING
UNICODE_STRING uniString;
KdPrint("%wZ", &uniString);
3 字符串初始化与销毁
使用DDK提供的相应函数
VOID RtlInitAnsiString(),VOID RtlInitUnicodeString(),ExAllocatePool(),wcslen(),RtlCopyMemory(),ExFreePool(),RtlFreeAnsiString(),RtlFreeUnicodeString();
4 字符串复制
使用DDK提供的相应函数
RtlCopyString(),RtlCopyUnicodeString();
5 字符串比较
使用DDK提供的相应函数
RtlCompareString(),RtlCompareUnicodeString(),RtlEqualString(),RtlEqualUnicodeString();
6 字符串转换为大写
RtlUpperString(),RtlUpcaseUnicodeString();
7 字符串与整型互转
RtlUnicodeStringToInteger(),RtlIntegerToUnicodeString();
8 ANSI_STRING字符串与UNICODE_STRING字符串相互转换
RtlUnicodeStringToAnsiString(),RtlAnsiStringToUnicodeString();
Windows驱动开发 - 内核模式下的字符串操作相关推荐
- 内核模式下的字符串操作
1)ASCII字符串和宽字符串 在应用程序中使用两种字符: a) char型字符串,负责记录ANSI字符集,它是指向一个char数组的指针,每个char型变量大小是一个字节,字符串是以0标志字符 ...
- 内核模式下的文件操作
1.文件的创建 对文件的创建或者打开都是通过内核函数ZwCreateFile实现的.和Windows API类似,这个内核函数返回一个文件句柄,文件的所有操作都是依靠这个句柄进行操作的.在文件操作完毕 ...
- c语言windows驱动编程入门,Windows驱动开发技术详解 PDF扫描版[175MB]
Windows驱动开发技术详解由浅入深.循序渐进地介绍了windows驱动程序的开发方法与调试技巧.本书共分23章,内容涵盖了windows操作系统的基本原理.nt驱动程序与wdm驱动程序的构造.驱动 ...
- Windows驱动开发学习笔记(七)—— 多核同步内核重载
Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...
- Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...
- 关于《竹林蹊径 深入浅出Windows驱动开发》第一个例子在Win7下蓝屏
在尝试运行<竹林蹊径 深入浅出Windows驱动开发>的第一个例子-HelloDRIVER时,在XP下没有问题,但在Win7下却发生蓝屏,蓝屏发生点在于卸载函数DriverUnload. ...
- Windows驱动开发学习笔记(三)—— 内核空间内核模块
Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...
- 在windows内核模式下隐藏进程
进程隐藏之内核实现 1.在内核模式下,系统为每个进程维护了一个EPROCESS结构体,系统所有的进程是通过EPROCESS结构体中的一个ActiveProcessLinks指向的双端链表连接起来的,通 ...
- Windows驱动开发 - 设备对象初步学习
新建一个myhellodevice.c: 代码如下:makefile和sources如前文: #include <ntddk.h>#define NTDEVICE_NAME_STRING ...
最新文章
- 2019编程语言最新排行榜!Python蝉联第一
- centos刻录工具_centos u盘引导制作工具下载|
- 你知道SQL的这些错误用法吗?
- SQL Server 中使用 Try Catch 处理异常
- 降低前端业务复杂度新视角:状态机范式
- 奉献一个窗口置顶的小工具
- 回归模型分类(自回归AR模型、向量自回归VAR模型等)
- 用DISM修复Win10系统文件教程
- DE10-Nano Kit
- 计算机硬件故障视频,电脑提示“没有视频硬件”怎么办
- aligned内存对齐
- (转)一些个人感悟(2008)
- 移动端APP测试总结
- 实战PyQt5: 141-QChart图表之箱形图
- 【信息安全】工具篇--子域名收集
- 智慧矿山无人驾驶模块
- HTML、CSS中雪碧图的使用
- 学习 Python 之 Pygame 开发魂斗罗(四)
- java程序流程控制
- 植物大战僵尸android版手机版,植物大战僵尸95版手机版