内核编程常用API函数

编写内核程序的时候,尽量使用内核API,虽然类似于wcscpy、memcpy等函数也可以用,但这些函数没有长度的检查,很容易发生溢出错误,应该避免使用。

内核编程常用API函数

主要的函数前缀有:Rtl-, Io-, Ke-, Zw-, Nt-, Ps-等。

有以下几类:

Ex系列--分配内存,获取互斥体等:
  ExAllocatePool,分配内存
  ExFreePool,释放内存
  ExAcquireFastMutex获取一个快速互斥体
  ExReleaseFastMutex释放一个快速互斥体
  ExRaiseStatus抛出异常

 

内核编程常用API函数

 

    Zw--Nt系列文件操作函数:
  ZwCreateFile--创建文件
  ZwWriteFile--写文件
  ZwReadFile--读取文件
  ZwQueryDirectoryFile--查询目录
  ZwDeviceIoControlFile--发出设备控制请求
  ZwCreateKey--打开一个注册表键
  ZwQueryValueKey--读取一个注册表键

内核编程常用API函数

    Rtl系列字符串操作函数:
  RtlInitUnicodeString--初始化一个Unicode字符串
  RtlCopyUnicode--拷贝字符串
  RtlAppendUnicodeToString--追加字符串到另一个字符串
  RtlStringCbPrintf--将字符打印到字符串中,相当于格式化字符串
  RtlCopyMemory--拷贝内存
  RtlMoveMemory--移动内存数据块
  RtlZeroMemory--内存数据块清零
  RtlCompareMemory--比较内存
  RtlGetVersion--得到当前windows版本

内核编程常用API函数

   Io开头的IO管理函数:
  IoCreateFile--打开文件,比ZwCreateFile函数更加底层
  IoCreateDevice--生成一个设备对象
  IoCallDriver发送请求
  IoCompleteRequest--完成IRP请求
  IoCopyCurrentIrpStackLocationToNext--讲当前IRP栈空间拷贝到下一个栈空间
  IoSkipCurrentIrpStackLocationToNext--跳过当前IRP栈空间
  IoGetCurrentIrpStackLocation--得到当前IRP栈空间。

内核编程常用API函数

对于详细的说明可以查看WDK的帮助文档,API很多,我们不肯能全都记住,常使用,常动手,常查帮助,是很好的学习方法。见一个学一个,不记得就立即查帮助。相关的结构也可以直接查看WDK的头文件,这里可以查到帮助文档中没有的一些信息哦!!