个处理IRP的模型

上传人:枫** 文档编号:573376894 上传时间:2024-08-14 格式:PPT 页数:19 大小:224KB
返回 下载 相关 举报
个处理IRP的模型_第1页
第1页 / 共19页
个处理IRP的模型_第2页
第2页 / 共19页
个处理IRP的模型_第3页
第3页 / 共19页
个处理IRP的模型_第4页
第4页 / 共19页
个处理IRP的模型_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《个处理IRP的模型》由会员分享,可在线阅读,更多相关《个处理IRP的模型(19页珍藏版)》请在金锄头文库上搜索。

1、个处理IRP的模型Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望一一. .設置完成例程然後向下發送設置完成例程然後向下發送n n從其它的組件或者驅動程式得到一個從其它的組件或者驅動程式得到一個IRPIRP,需要低,需要低層驅動程式先進行處理,然後自己還需要處理。層驅動程式先進行處理,然後自己還需要處理。如下頁圖如下頁圖n n使用時的必備條件使用時的必備條件1. 1.從其它的組件或者驅動程從其它的組件或者驅動程式得到一個式得到一個IRPIRP,而不是自己創建的。,而不是自己創建的。2

2、. 2.這個這個IRPIRP在在DISPATCH_LEVEL DISPATCH_LEVEL 上獲得或者在一個任意的上下上獲得或者在一個任意的上下文環境下處理,因此在底層處理這個文環境下處理,因此在底層處理這個IRPIRP時不能夠時不能夠阻塞。阻塞。3. 3.后期的處理代碼可以營運在后期的處理代碼可以營運在DISPATCH_LEVELDISPATCH_LEVEL上,因為有些完成例程在上,因為有些完成例程在DISPATCH_LEVELDISPATCH_LEVEL級執行。級執行。設置完成例程然後向下傳送設置完成例程然後向下傳送n n可能的分發例程和完成函數代碼架構都差不多。n n例如IRP處理.do

3、c二二. .直接向下發送直接向下發送n n從其它的組件或者驅動程式得到一個IRP,需要低層驅動程式進行處理,不關心低層驅動程式的處理結果。如下頁圖n n使用時的必備條件 1.從其它的組件或者驅動程式得到一個IRP,而不是自己創建的 n n 2.自己不關心這個IRP,不需要進行后期處理說明說明n n上面這種模型使用做多的情況就是在過濾驅動程式裡面,通常過濾驅動程式在處理不關心的IRP時使用上面的模型,有些WMI和PNP以及電源請求的處理也採用這種模型。n n通常可以寫一個輔助函數來實現這種模型IRP處理.doc三三. .直接在分發例程裡面完成直接在分發例程裡面完成n n從其它的組件或者驅動程式得

4、到一個IRP,直接在分發例程裡面完成這個IRP,如下頁圖n n使用時的必備條件 1.從其它的組件或者驅動程式得到一個IRP,而不是自己創建的。2.可以在分發例程裡面立刻完成,比如取得簡單的訊息。3.這個IRP出現了錯誤,這時立刻以錯誤狀態返回。n nIRP處理.doc四四. .排隊排隊IRPIRP,后面處理,后面處理n n從其它的組件或者驅動程式得到一個IRP,需要排隊(標準模型或者自己的隊列),后面進行處理。如下頁圖n n使用時的必備條件 1.從其它的組件或者驅動程式得到一個IRP,而不是自己創建的n n 2.不知道是立即處理還是排隊,這通常發生在需要串行訪問硬體的情況。n n通常的程式框架

5、如下IRP處理.doc五五. .自己創建的異步自己創建的異步IRPIRPn n自己創建異步IRP,並且向某個驅動程式發送。如下頁圖n n使用時的必備條件1.需要某個驅動程式替自己實現某個功能。2.自己在任意線程上下文,或者在DISPATCH_LEVEL ,這些都使得我們不能阻塞這個線程。n nIRP處理.doc六六. .自己創建的同步自己創建的同步IRPIRPn n自己創建同步IRP,並且向某個驅動程式發送。如下頁圖n n使用時的必備條件 1.需要某個驅動程式替自己實現某個功能。2.在繼續之前,必須等待操作完成,也就是說是一個同步的請求。3.代碼營運在一個非任意線程上下文,並且代碼的IRQL為

6、PASSIVE_LEVEL 。n nIRP處理.doc同步向下發送同步向下發送n n從其它的組件或者驅動程式得到一個IRP,同步的發送到低層驅動程式進行處理,然後繼續處理。如下頁圖n n使用時的必備條件 1.從其它的組件或者驅動程式得到一個IRP,而不是自己創建的 2.代碼營運在一個非任意線程上下文,並且代碼的IRQL為PASSIVE_LEVEL 。3.后面對IRP的處理必須也在PASSIVE_LEVEL級n nIRP處理.doc八八. .同步處理異步同步處理異步IRPIRPn n自己創建異步IRP,並且向某個驅動程式發送,然後等待請求的完成。如下頁圖n n使用時的必備條件 1.需要某個驅動程式替自己實現某個功能。2.在繼續之前,必須等待操作完成。3.代碼營運在一個非任意線程上下文,並且代碼的IRQL為APC_LEVEL n nIRP處理.doc

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号