1、 内核中字符串的用法
在Windows内核环境不要使用printf之类的字符串处理函数,一定要是使用内核已经定义了相应API的函数来处理。
// Step1
WCHAR wName[32];
UNICODE_STRING strName;
ULONG id = 1;
// Step2 初始化WCHAR STRING
status = RtlStringCchPrintfW(
wName,
32*sizeof(WCHAR),
L"\\Device\\Serial%d",
id);
// Step3 将初始化完了的WCHAR 赋值到UNICODE_STRING中
RtlInitUnicodeString(&strName, wName);
按照上述三步初始化一个UNICODE_STRING,这是一个结构体,可以从MSDN中查它的相关结构,由于驱动相关的书籍并不是很多,所以需要多查MSDN,有问题多想一下。如果上述三步没有看明白,那就把C语言处理字符串相关的章节看看。
2、 内核驱动的架构
通过前两篇我们看见了过滤驱动可以截取对应功能驱动的内容,但是为什么可以截取,这个和Windows驱动的架构是有关系的,如下图