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. 内核模式下的字符串操作

    1)ASCII字符串和宽字符串    在应用程序中使用两种字符: a) char型字符串,负责记录ANSI字符集,它是指向一个char数组的指针,每个char型变量大小是一个字节,字符串是以0标志字符 ...

  2. 内核模式下的文件操作

    1.文件的创建 对文件的创建或者打开都是通过内核函数ZwCreateFile实现的.和Windows API类似,这个内核函数返回一个文件句柄,文件的所有操作都是依靠这个句柄进行操作的.在文件操作完毕 ...

  3. c语言windows驱动编程入门,Windows驱动开发技术详解 PDF扫描版[175MB]

    Windows驱动开发技术详解由浅入深.循序渐进地介绍了windows驱动程序的开发方法与调试技巧.本书共分23章,内容涵盖了windows操作系统的基本原理.nt驱动程序与wdm驱动程序的构造.驱动 ...

  4. Windows驱动开发学习笔记(七)—— 多核同步内核重载

    Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...

  5. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础

    Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...

  6. 关于《竹林蹊径 深入浅出Windows驱动开发》第一个例子在Win7下蓝屏

    在尝试运行<竹林蹊径 深入浅出Windows驱动开发>的第一个例子-HelloDRIVER时,在XP下没有问题,但在Win7下却发生蓝屏,蓝屏发生点在于卸载函数DriverUnload. ...

  7. Windows驱动开发学习笔记(三)—— 内核空间内核模块

    Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...

  8. 在windows内核模式下隐藏进程

    进程隐藏之内核实现 1.在内核模式下,系统为每个进程维护了一个EPROCESS结构体,系统所有的进程是通过EPROCESS结构体中的一个ActiveProcessLinks指向的双端链表连接起来的,通 ...

  9. Windows驱动开发 - 设备对象初步学习

    新建一个myhellodevice.c: 代码如下:makefile和sources如前文: #include <ntddk.h>#define NTDEVICE_NAME_STRING ...

最新文章

  1. 2019编程语言最新排行榜!Python蝉联第一
  2. centos刻录工具_centos u盘引导制作工具下载|
  3. 你知道SQL的这些错误用法吗?
  4. SQL Server 中使用 Try Catch 处理异常
  5. 降低前端业务复杂度新视角:状态机范式
  6. 奉献一个窗口置顶的小工具
  7. 回归模型分类(自回归AR模型、向量自回归VAR模型等)
  8. 用DISM修复Win10系统文件教程
  9. DE10-Nano Kit
  10. 计算机硬件故障视频,电脑提示“没有视频硬件”怎么办
  11. aligned内存对齐
  12. (转)一些个人感悟(2008)
  13. 移动端APP测试总结
  14. 实战PyQt5: 141-QChart图表之箱形图
  15. 【信息安全】工具篇--子域名收集
  16. 智慧矿山无人驾驶模块
  17. HTML、CSS中雪碧图的使用
  18. 学习 Python 之 Pygame 开发魂斗罗(四)
  19. java程序流程控制
  20. 植物大战僵尸android版手机版,植物大战僵尸95版手机版

热门文章

  1. Hystrix 熔断器02 —— hystrix 案例之高并发测试
  2. java构造函数经典详解
  3. Unity学习笔记5 unity的js转c#
  4. Appium 移动端自动化 - Android SDK的安装与配置,使用安卓SDK连接手机实例演示
  5. Linux CentOS各大网站镜像资源地址展示,各种rpm资源包下载地址,rpm安装包大全
  6. Python 技巧篇 - 英文单词首字母大小写转换功能实例演示,字符串切片实现
  7. Window下git生成SSH Key以及格式转换
  8. Altium designer 操作笔记
  9. CTFshow 命令执行 web51
  10. 【UVA624 01背包中的路径问题】