内核模式下的文件操作

    这只是一篇读书笔记。

1. 对文件的操作

    驱动程序开发中,经常会用到对文件的操作。DDK提供了一整套对文件的操作函数。其实现是:

  1. 用ZwCreateFile 打开(ZwOpenFile)或者创建一个文件。
  2. 通过OBJECT_ATTRIBUTES指定文件名,这个结构体通过InitializeObjectAttributes设置。这里需要注意的一点就是符号链接的概念。比如我们要写“c:\1.log”, 则必须写成“\??\c:”,windows 内核会把它替换成设备名”\Device\HarddiskVolume1”
  3. 利用ZwSetInformationFile 获取或者修改文件属性。
  4. 用ZwWriteFile 和ZwReadFile写和读文件。

2. 对注册表的操作

    DDK 提供了一套操作注册表的函数。

首先明确几个概念

windows 注册表的几个概念

其对注册表的操作和对文件的操作就类似了:

  1. ZwCreatekey
  2. ZwSetValuekey 添加或者修改注册表键值。
  3. ZwQueryValueKey 对注册表项进行查询
  4. ZwQueryKey 和ZwEnumerateKey枚举子项或者枚举子键。
  5. ZwDeleteKey 删除子项

为了简化操作, DDK 提供了一系列以Rtl开头的运行时函数, 这些函数把上述函数进行了封装。

函数名 描述
RtlCreateRegistryKey 创建注册表
RtlCheckRegistryKey 看某注册表项是不是存在
RtlWriteRegistryValue 写注册表
RtlDeleteRegistryValue 删除注册表的子键
原文地址:https://www.cnblogs.com/sld666666/p/1936441.html