驱动开发:运用Async模式实现反向通信.pdfVIP

  • 0
  • 0
  • 约2.06万字
  • 约 34页
  • 2026-05-28 发布于北京
  • 举报

驱动开发:运用Async模式实现反向通信.pdf

几篇文章中给大家具体解释了驱动与应用层之间正向通信的一些经典案例,本章将继续学习驱动通信,

不过这次我们学习的是通过运用Async异步模式实现的反向通信,反向通信机制在开发中时常被用到,

例如一个杀毒软件如果到有异常进程运行或有异常表被改写后,该驱动需要主动应用层进

程让其知道,这就需要用到驱动反向通信的相关知识点,如下将循序渐进的实现一个反向通信案例。

在开始学习Async反向通信之前先来研究一个Sync正向通信案例,不论是正向反向通信其在通信模式上与

《驱动开发:通过ReadFile与内核层通信》所介绍的通信模式基本一致,都是通过ReadFile触发驱动中的

IRP_MJ_READ派遣,唯一的区别是在传输数据时使用了MmGetSystemAddressForMdl方式,它将

给定MDL描述的页面映射到系统空间,并调用RtlCopyMemory()将全局字符串到这个空间内,

这样客户端就可以循环内核传出的数据。

我们来看驱动端代码是如何实现这个功能的。代码并没有什么特殊或难以理解的地方,只是需要注意我

们在驱动调用IoCreateDevice()时传入了第二个参数FILE_DEVICE_EXTENSION,该参数的作

用是,

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档