现在的位置: 首页 > 综合 > 正文

FileDisk 线程方式进行IRP序列化

2013年08月11日 ⁄ 综合 ⁄ 共 4772字 ⁄ 字号 评论关闭

      刚看完FileDisk代码,感受颇多,其中采用线程的方式进行IRP序列化更是让人觉得新鲜.在DDK中一般采用StartIo来进行IRP的序列话,其中在入口函数中加入pDriverObject->DriverStartUp = XXXStartIO即可, 当然也没这么简单,其中还要做写处理.

      FileDisk采用了另外一种方法,先来看看代码;

 

    这里可以看出,将FileDisk将IRP包保存在List_head当中,方便于在FileDiskThread线程直接进行处理.接下来看看FileDiskThread线程代码如何实现;

     不得不看看WRITE和READ IRP是怎么处理的,代码如下;

     从上面的代码可以方便的看出FileDisk驱动的IRP序列化的实现过程,方法很简单,将IRP包保存在List_head连表中,同时把与之相对应的自反锁保存在list_lock当中,在利用request_event事件通知驱动处理IRP.

抱歉!评论已关闭.