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的类型,并对其产生的来源做了说明。