IRP与派遣函数

本文详细介绍了在Windows驱动程序中,派遣函数(Dispatch Function)的重要角色,它是处理I/O请求的主要场所。IRP(I/O请求包)作为驱动程序与用户模式通信的关键数据结构,其MajorFunction和MinorFunction属性决定IRP被派送到相应的派遣函数。驱动程序通过MajorFunction数组处理不同类型的IRP,如DO_BUFFER_IO和DO_DIRECT_IO。DeviceIoControl函数则提供了另一种与驱动程序通信的方式,通过IRP_MJ_DEVICE_CONTROL类型IRP进行控制操作。此外,IO_STACK_LOCATION记录了IRP在设备栈中的操作历史。
摘要由CSDN通过智能技术生成

1.派遣函数是WINDOWS驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求时在派遣函数中处理的。


2.用户模式下所有驱动程序的I/O请求,全部由操作系统化为一个叫做IRP的数据结构,不同的IRP数据会被“派遣”到不同的派遣函数(Dispatch Functin )中,这也是派遣函数名字的由来。


3.IRP的处理机制类似Windows应用程序的“消息处理”机制,驱动程序接收到不同的类型的IRP后,会进入不同的派遣函数,在派遣函数中IRP得到处理。


4.IRP是一个很复杂的数据结构,IRP两个基本的属性,一个是MajorFunction,另一个是MinorFunction,分别记录IRP的主类型和子类型。操作系统根据MajorFunction将IRP“派遣”到不同的派遣函数中,在派遣函数中还可以这个IRP属于哪种MinorFunction


5.DriverEntry有个函数指针数组MajorFunction.都是派遣函数地址。对于没有设置IRP类型,系统默认这些IRP类型与_IopInvalidDeviceRequest函数关联。还有些IRP是由系统的某个组件创建的。


6.下表列出了IRP的类型,并对其产生的来源做了说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值