• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            小默

            [zz]設(shè)備對(duì)象種類

             

            一個(gè)驅(qū)動(dòng)程序?yàn)樗刂频拿總€(gè)設(shè)備產(chǎn)生設(shè)備對(duì)象,設(shè)備對(duì)象代表驅(qū)動(dòng)程序的設(shè)備。從PnP的角度看有三種設(shè)備對(duì)象:

            物理設(shè)備對(duì)象(PDO---代表一個(gè)總線驅(qū)動(dòng)程序的總線上的設(shè)備

            功能設(shè)備對(duì)象(FDO---代表一個(gè)功能驅(qū)動(dòng)程序的設(shè)備

            過濾程序設(shè)備對(duì)象(Filter DO---代表一個(gè)過濾器驅(qū)動(dòng)程序的設(shè)備

            這三種設(shè)備對(duì)象都是DEVICE_OBJECT類型,但是使用方式不同并有不同的設(shè)備擴(kuò)展。

            通過產(chǎn)生一設(shè)備對(duì)象(IoCreateDevice)并將其附著到設(shè)備堆棧(IoAttachDeviceToDevice_Stack),驅(qū)動(dòng)程序?qū)⑵浔旧硖砑拥教幚碓O(shè)備的I/O驅(qū)動(dòng)程序堆棧,IoAttachDeviceToDeviceStack決定設(shè)備堆棧當(dāng)前的頂層和附著新的設(shè)備對(duì)象到設(shè)備堆棧的頂層。

            1.7給出了設(shè)備對(duì)象的可能種類,該設(shè)備對(duì)象可附著于設(shè)備堆棧里,表示處理一個(gè)設(shè)備的I/O請(qǐng)求的驅(qū)動(dòng)程序。

            這一部分描述了每一類的設(shè)備對(duì)象并注意到何時(shí)產(chǎn)生該類。參看第2章獲得關(guān)于在必要的PnP驅(qū)動(dòng)程序例程里產(chǎn)生設(shè)備對(duì)象的細(xì)節(jié)信息,要獲得PnP設(shè)備枚舉的更多信息,參見第2部分。

            開始于圖1.7的底部:

            總線驅(qū)動(dòng)程序?yàn)榭偩€上它所枚舉的每個(gè)設(shè)備產(chǎn)生PDO

            當(dāng)總線驅(qū)動(dòng)程序枚舉其設(shè)備時(shí),它為每個(gè)子設(shè)備產(chǎn)生PDO??偩€驅(qū)動(dòng)程序枚舉一設(shè)備為PnP管理器的BusRelations響應(yīng)一個(gè)IRP_MN_QUERY_DEVICE_RELATIONS請(qǐng)求。如果自從最近一次總線驅(qū)動(dòng)程序響應(yīng)BusRelations的查詢關(guān)系請(qǐng)求以來(或者這是機(jī)器被引導(dǎo)以來第一次查詢關(guān)系)設(shè)備已經(jīng)添加到總線上,則總線驅(qū)動(dòng)程序?yàn)槊總€(gè)子設(shè)備產(chǎn)生一個(gè)PDO

            PDO表示了總線驅(qū)動(dòng)程序的設(shè)備,其他內(nèi)核模式系統(tǒng)組件也和它一樣,如電源管理器、PnP管理器和I/O管理器。

            一個(gè)設(shè)備其他的驅(qū)動(dòng)程序附著于PDO頂端的設(shè)備對(duì)象,但是PDO一直在設(shè)備堆棧的底端。

            可選擇的總線過濾器驅(qū)動(dòng)程序?yàn)樗鼈冞^濾的每個(gè)設(shè)備產(chǎn)生過濾程序DO。

            當(dāng)PnP管理器在BusRelations列表里發(fā)現(xiàn)一個(gè)新設(shè)備時(shí),它決定是否有該設(shè)備的任何總線過濾器驅(qū)動(dòng)程序。如果是這樣的話,對(duì)每個(gè)這樣的驅(qū)動(dòng)程序PnP管理器確保它們被裝載(如果需要調(diào)用DriverEntry)并調(diào)用驅(qū)動(dòng)程序AddDevice例程。如果總線過濾器驅(qū)動(dòng)程序?yàn)檫@個(gè)設(shè)備過濾操作,過濾器驅(qū)動(dòng)程序產(chǎn)生一個(gè)設(shè)備對(duì)象并附著它到AddDevice例程里的設(shè)備堆棧上。如果不止一個(gè)總線過濾器驅(qū)動(dòng)程序存在,且與這個(gè)設(shè)備相關(guān),每個(gè)這樣的過濾器驅(qū)動(dòng)程序產(chǎn)生并附著于它自己的設(shè)備對(duì)象。

            可選擇的,低層過濾器驅(qū)動(dòng)程序?yàn)樗鼈冞^濾的每個(gè)設(shè)備產(chǎn)生過濾程序DO。

            如果一可選擇的低層過濾器驅(qū)動(dòng)程序由于這個(gè)設(shè)備的原因而存在,PnP管理器確信在總線驅(qū)動(dòng)程序和任何總線過濾器驅(qū)動(dòng)程序之后裝載了這樣的驅(qū)動(dòng)程序。PnP管理器調(diào)用過濾器驅(qū)動(dòng)程序的AddDevice例程,在它的AddDevice例程里,低層的過濾器驅(qū)動(dòng)程序?yàn)樵O(shè)備產(chǎn)生一個(gè)過濾程序DO且附著它到設(shè)備堆棧里。如果不止一個(gè)低層過濾器驅(qū)動(dòng)程序存在,每個(gè)這樣的驅(qū)動(dòng)程序?qū)a(chǎn)生并附著它自己的過濾程序DO。

            功能驅(qū)動(dòng)程序?yàn)樵O(shè)備產(chǎn)生一個(gè)FDO。

            PnP管理器確信已安裝了設(shè)備的功能驅(qū)動(dòng)程序并調(diào)用功能驅(qū)動(dòng)程序的AddDevice例程,功能驅(qū)動(dòng)程序產(chǎn)生一個(gè)FDO并附著它到設(shè)備堆棧里。

            可選擇的,頂層過濾器驅(qū)動(dòng)程序?yàn)樗鼈冞^濾的每個(gè)設(shè)備產(chǎn)生過濾程序DO。

            如果任何可選擇的,頂層過濾器驅(qū)動(dòng)程序?yàn)樵O(shè)備而存在,PnP管理器確信在功能驅(qū)動(dòng)程序調(diào)用它們的AddDevice例程之后被安裝,每個(gè)這樣的過濾器驅(qū)動(dòng)程序附著它的設(shè)備對(duì)象到設(shè)備堆棧。

            總之,設(shè)備堆棧包括每一驅(qū)動(dòng)程序的設(shè)備對(duì)象,該驅(qū)動(dòng)程序參與了特定設(shè)備的I/O處理。父總線驅(qū)動(dòng)程序有一個(gè)PDO,功能驅(qū)動(dòng)程序有一個(gè)FDO,每一個(gè)可選擇的過濾器驅(qū)動(dòng)程序有一個(gè)過濾程序DO。

            注意到所有的設(shè)備---總線適配器/控制器設(shè)備和非總線設(shè)備---在它們的設(shè)備堆棧里有一個(gè)PDOFDO。總線適配器/控制器的PDO由父總線的總線驅(qū)動(dòng)程序產(chǎn)生。例如,如果一個(gè)SCSI適配器插入一個(gè)PCI總線,PCI總線驅(qū)動(dòng)程序?yàn)?/span>SCSI適配器產(chǎn)生一個(gè)PDO

            如果一個(gè)設(shè)備正以原始模式使用,則沒有功能驅(qū)動(dòng)程序或過濾器驅(qū)動(dòng)程序(沒有FDO或過濾程序DO)。此時(shí)還有父總線驅(qū)動(dòng)程序的一個(gè)PDO和零個(gè)或更多總線過濾程序DO。

            要獲取哪一個(gè)驅(qū)動(dòng)程序例程負(fù)責(zé)產(chǎn)生和附著設(shè)備對(duì)象的信息,參看第2章。

            設(shè)備堆棧和一些額外信息構(gòu)成了一個(gè)devnode設(shè)備。在一個(gè)設(shè)備的devnode里,PnP管理器保留諸如是否設(shè)備已經(jīng)啟動(dòng)和哪一個(gè)驅(qū)動(dòng)程序,如有,登記通知設(shè)備上的改變。內(nèi)核調(diào)試程序!devnode命令顯示了關(guān)于一個(gè)devnode的信息。

            posted on 2010-02-03 16:17 小默 閱讀(732) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Windows

            導(dǎo)航

            統(tǒng)計(jì)

            留言簿(13)

            隨筆分類(287)

            隨筆檔案(289)

            漏洞

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            亚洲人AV永久一区二区三区久久 | 久久综合丁香激情久久| 久久精品免费全国观看国产| 99久久成人18免费网站| 曰曰摸天天摸人人看久久久| 国产精品久久久久jk制服| 久久精品亚洲AV久久久无码| 中文成人久久久久影院免费观看| 99久久伊人精品综合观看| 97精品伊人久久久大香线蕉 | 日韩精品国产自在久久现线拍| 久久久精品人妻一区二区三区四 | 超级碰碰碰碰97久久久久| 欧美一级久久久久久久大片| 亚洲国产精品一区二区三区久久 | 精品无码久久久久久久久久| 国产精品99久久久久久宅男| 国产精品美女久久久免费| 久久久久综合中文字幕| 波多野结衣久久一区二区 | 欧美亚洲另类久久综合婷婷| 国产亚洲精久久久久久无码77777| 亚洲va中文字幕无码久久| 69国产成人综合久久精品| 免费观看久久精彩视频| 一本色道久久88综合日韩精品| 久久人与动人物a级毛片| 久久久久亚洲av无码专区喷水| 精品精品国产自在久久高清| 久久久久婷婷| 久久99精品久久久久久久久久| 99精品久久久久久久婷婷| 色播久久人人爽人人爽人人片AV| 久久亚洲精品中文字幕| 久久久久亚洲av成人无码电影| 精品无码久久久久国产动漫3d| 91精品婷婷国产综合久久| 久久亚洲精品成人无码网站| 成人a毛片久久免费播放| 亚洲国产另类久久久精品黑人 | 麻豆久久|