一、分发函数的功能
学过用WinMain写窗口框架的人,一定了解窗口消息循环的原理。那么驱动程序又是如何相应的呢?答案是“请求分发”
前面文章提到先来看看“请求”是什么样的,它是应用程序通过API函数的接口发出的,发送给对应的驱动程序,但是又有一个问题,请求是有各种各样的类型,有的要求读,有的要求写,那么它们就要被分类后,分发到对应的自己编写的处理函数,这些函数叫做“分发函数”,也有翻译为“派遣函数”
讲完了原理,那程序是如何实现的呢?
它分为三个部分:
1.在入口函数的驱动对象成员pDriver->MajorFunction[i]的所有指针指向,负责请求分配的IRPRoutin();
2.在函数IRPRoutin()将各种IRP_MJ_XXX请求对应分发到分发函数
3.编写对应分发函数的具体实现
二、分发函数的基本形态举例
//关于创建的分发函数,以IRP_MJ_CREATE请求为例
NTSTTUS CreateRoutin(PDEVICE_OBJECT pDriver,PIRP pIrp)
{
NTSTATUS status=STATUS_SUCCESS;
处理.......
//以下为收尾工作