个处理IRP的模型.pptVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
个处理IRP的模型

8個處理IRP的模型 sigang@mti.xidian.edu.cn 一.設置完成例程然後向下發送 從其它的組件或者驅動程式得到一個IRP,需要低層驅動程式先進行處理,然後自己還需要處理。如下頁圖︰ 使用時的必備條件︰1.從其它的組件或者驅動程式得到一個IRP,而不是自己創建的。2.這個IRP在DISPATCH_LEVEL 上獲得或者在一個任意的上下文環境下處理,因此在底層處理這個IRP時不能夠阻塞。3.后期的處理代碼可以營運在DISPATCH_LEVEL上,因為有些完成例程在DISPATCH_LEVEL級執行。 設置完成例程然後向下傳送 可能的分發例程和完成函數代碼架構都差不多。 例如︰IRP處理.doc 二.直接向下發送 從其它的組件或者驅動程式得到一個IRP,需要低層驅動程式進行處理,不關心低層驅動程式的處理結果。如下頁圖︰ 使用時的必備條件︰ 1.從其它的組件或者驅動程式得到一個IRP,而不是自己創建的 2.自己不關心這個IRP,不需要進行后期處理 說明 上面這種模型使用做多的情況就是在過濾驅動程式裡面,通常過濾驅動程式在處理不關心的IRP時使用上面的模型,有些WMI和PNP以及電源請求的處理也採用這種模型。 通常可以寫一個輔助函數來實現這種模型︰IRP處理.doc 三.直接在分發例程裡面完成 從其它的組件或者驅動程式得到一個IRP,直接在分發例程裡面完成這個IRP,如下頁圖 使用時的必備條件︰ 1.從其它的組件或者驅動程式得到一個IRP,而不是自己創建的。2.可以在分發例程裡面立刻完成,比如取得簡單的訊息。3.這個IRP出現了錯誤,這時立刻以錯誤狀態返回。 IRP處理.doc 四.排隊IRP,后面處理 從其它的組件或者驅動程式得到一個IRP,需要排隊(標準模型或者自己的隊列),后面進行處理。如下頁圖 使用時的必備條件︰ 1.從其它的組件或者驅動程式得到一個IRP,而不是自己創建的 2.不知道是立即處理還是排隊,這通常發生在需要串行訪問硬體的情況。 通常的程式框架如下︰IRP處理.doc 五.自己創建的異步IRP 自己創建異步IRP,並且向某個驅動程式發送。如下頁圖 使用時的必備條件︰1.需要某個驅動程式替自己實現某個功能。2.自己在任意線程上下文,或者在DISPATCH_LEVEL ,這些都使得我們不能阻塞這個線程。 IRP處理.doc 六.自己創建的同步IRP 自己創建同步IRP,並且向某個驅動程式發送。如下頁圖 使用時的必備條件︰ 1.需要某個驅動程式替自己實現某個功能。2.在繼續之前,必須等待操作完成,也就是說是一個同步的請求。3.代碼營運在一個非任意線程上下文,並且代碼的IRQL為PASSIVE_LEVEL 。 IRP處理.doc 同步向下發送 從其它的組件或者驅動程式得到一個IRP,同步的發送到低層驅動程式進行處理,然後繼續處理。如下頁圖 使用時的必備條件︰ 1.從其它的組件或者驅動程式得到一個IRP,而不是自己創建的 2.代碼營運在一個非任意線程上下文,並且代碼的IRQL為PASSIVE_LEVEL 。3.后面對IRP的處理必須也在PASSIVE_LEVEL級 IRP處理.doc 八.同步處理異步IRP 自己創建異步IRP,並且向某個驅動程式發送,然後等待請求的完成。如下頁圖 使用時的必備條件︰ 1.需要某個驅動程式替自己實現某個功能。2.在繼續之前,必須等待操作完成。3.代碼營運在一個非任意線程上下文,並且代碼的IRQL為APC_LEVEL IRP處理.doc * * *

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档