如何通过ReadFile函数与内核层实现长尾词通信的驱动开发?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1765个文字,预计阅读时间需要8分钟。
驱动与应用程序之间的通信是必不可少的,内核执行代码后需要将动态显示给应用层。但驱动程序与应用层不在同一地址空间,为实现在内核与应用层的数据交互,必须有通信机制。
驱动与应用程序的通信是非常有必要的,内核中执行代码后需要将其动态显示给应用层,但驱动程序与应用层毕竟不在一个地址空间内,为了实现内核与应用层数据交互则必须有通信的方法,微软为我们提供了三种通信方式,如下先来介绍通过ReadFile系列函数实现的通信模式。
长话短说,不说没用的概念,首先系统中支持的通信模式可以总结为三种。
- 缓冲区方式读写(DO_BUFFERED_IO)
- 直接方式读写(DO_DIRECT_IO)
- 其他方式读写
而通过ReadFile,WriteFile系列函数实现的通信机制则属于缓冲区通信模式,在该模式下操作系统会将应用层中的数据复制到内核中,此时应用层调用ReadFile,WriteFile函数进行读写时,在驱动内会自动触发IRP_MJ_READ与IRP_MJ_WRITE这两个派遣函数,在派遣函数内则可以对收到的数据进行各类处理。
本文共计1765个文字,预计阅读时间需要8分钟。
驱动与应用程序之间的通信是必不可少的,内核执行代码后需要将动态显示给应用层。但驱动程序与应用层不在同一地址空间,为实现在内核与应用层的数据交互,必须有通信机制。
驱动与应用程序的通信是非常有必要的,内核中执行代码后需要将其动态显示给应用层,但驱动程序与应用层毕竟不在一个地址空间内,为了实现内核与应用层数据交互则必须有通信的方法,微软为我们提供了三种通信方式,如下先来介绍通过ReadFile系列函数实现的通信模式。
长话短说,不说没用的概念,首先系统中支持的通信模式可以总结为三种。
- 缓冲区方式读写(DO_BUFFERED_IO)
- 直接方式读写(DO_DIRECT_IO)
- 其他方式读写
而通过ReadFile,WriteFile系列函数实现的通信机制则属于缓冲区通信模式,在该模式下操作系统会将应用层中的数据复制到内核中,此时应用层调用ReadFile,WriteFile函数进行读写时,在驱动内会自动触发IRP_MJ_READ与IRP_MJ_WRITE这两个派遣函数,在派遣函数内则可以对收到的数据进行各类处理。

