这只是一篇读书笔记。
1. 对文件的操作
驱动程序开发中,经常会用到对文件的操作。DDK提供了一整套对文件的操作函数。其实现是:
- 用ZwCreateFile 打开(ZwOpenFile)或者创建一个文件。
- 通过OBJECT_ATTRIBUTES指定文件名,这个结构体通过InitializeObjectAttributes设置。这里需要注意的一点就是符号链接的概念。比如我们要写“c:\1.log”, 则必须写成“\??\c:”,windows 内核会把它替换成设备名”\Device\HarddiskVolume1”
- 利用ZwSetInformationFile 获取或者修改文件属性。
- 用ZwWriteFile 和ZwReadFile写和读文件。
2. 对注册表的操作
DDK 提供了一套操作注册表的函数。
首先明确几个概念
其对注册表的操作和对文件的操作就类似了:
- ZwCreatekey
- ZwSetValuekey 添加或者修改注册表键值。
- ZwQueryValueKey 对注册表项进行查询
- ZwQueryKey 和ZwEnumerateKey枚举子项或者枚举子键。
- ZwDeleteKey 删除子项
为了简化操作, DDK 提供了一系列以Rtl开头的运行时函数, 这些函数把上述函数进行了封装。
函数名 | 描述 |
RtlCreateRegistryKey | 创建注册表 |
RtlCheckRegistryKey | 看某注册表项是不是存在 |
RtlWriteRegistryValue | 写注册表 |
RtlDeleteRegistryValue | 删除注册表的子键 |