• <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]設備對象種類

             

            一個驅動程序為它所控制的每個設備產(chǎn)生設備對象,設備對象代表驅動程序的設備。從PnP的角度看有三種設備對象:

            物理設備對象(PDO---代表一個總線驅動程序的總線上的設備

            功能設備對象(FDO---代表一個功能驅動程序的設備

            過濾程序設備對象(Filter DO---代表一個過濾器驅動程序的設備

            這三種設備對象都是DEVICE_OBJECT類型,但是使用方式不同并有不同的設備擴展。

            通過產(chǎn)生一設備對象(IoCreateDevice)并將其附著到設備堆棧(IoAttachDeviceToDevice_Stack),驅動程序將其本身添加到處理設備的I/O驅動程序堆棧,IoAttachDeviceToDeviceStack決定設備堆棧當前的頂層和附著新的設備對象到設備堆棧的頂層。

            1.7給出了設備對象的可能種類,該設備對象可附著于設備堆棧里,表示處理一個設備的I/O請求的驅動程序。

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

            開始于圖1.7的底部:

            總線驅動程序為總線上它所枚舉的每個設備產(chǎn)生PDO

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

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

            一個設備其他的驅動程序附著于PDO頂端的設備對象,但是PDO一直在設備堆棧的底端。

            可選擇的總線過濾器驅動程序為它們過濾的每個設備產(chǎn)生過濾程序DO

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

            可選擇的,低層過濾器驅動程序為它們過濾的每個設備產(chǎn)生過濾程序DO

            如果一可選擇的低層過濾器驅動程序由于這個設備的原因而存在,PnP管理器確信在總線驅動程序和任何總線過濾器驅動程序之后裝載了這樣的驅動程序。PnP管理器調用過濾器驅動程序的AddDevice例程,在它的AddDevice例程里,低層的過濾器驅動程序為設備產(chǎn)生一個過濾程序DO且附著它到設備堆棧里。如果不止一個低層過濾器驅動程序存在,每個這樣的驅動程序將產(chǎn)生并附著它自己的過濾程序DO

            功能驅動程序為設備產(chǎn)生一個FDO

            PnP管理器確信已安裝了設備的功能驅動程序并調用功能驅動程序的AddDevice例程,功能驅動程序產(chǎn)生一個FDO并附著它到設備堆棧里。

            可選擇的,頂層過濾器驅動程序為它們過濾的每個設備產(chǎn)生過濾程序DO

            如果任何可選擇的,頂層過濾器驅動程序為設備而存在,PnP管理器確信在功能驅動程序調用它們的AddDevice例程之后被安裝,每個這樣的過濾器驅動程序附著它的設備對象到設備堆棧。

            總之,設備堆棧包括每一驅動程序的設備對象,該驅動程序參與了特定設備的I/O處理。父總線驅動程序有一個PDO,功能驅動程序有一個FDO,每一個可選擇的過濾器驅動程序有一個過濾程序DO

            注意到所有的設備---總線適配器/控制器設備和非總線設備---在它們的設備堆棧里有一個PDOFDO。總線適配器/控制器的PDO由父總線的總線驅動程序產(chǎn)生。例如,如果一個SCSI適配器插入一個PCI總線,PCI總線驅動程序為SCSI適配器產(chǎn)生一個PDO

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

            要獲取哪一個驅動程序例程負責產(chǎn)生和附著設備對象的信息,參看第2章。

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

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

            導航

            統(tǒng)計

            留言簿(13)

            隨筆分類(287)

            隨筆檔案(289)

            漏洞

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            思思久久精品在热线热| 久久久九九有精品国产| 午夜精品久久久久久久无码| 久久九九青青国产精品| 精品久久久久久国产牛牛app| 久久九九久精品国产| 久久无码AV一区二区三区| 2021久久国自产拍精品| 国产亚洲成人久久| 亚洲中文字幕无码久久精品1 | 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 国产一区二区久久久| 久久精品国产亚洲AV不卡| 亚洲欧美精品一区久久中文字幕 | 91久久九九无码成人网站| 香蕉久久影院| segui久久国产精品| 狠狠色婷婷久久综合频道日韩| 国产精品久久久久影院嫩草| 中文字幕无码av激情不卡久久| 狠狠色噜噜狠狠狠狠狠色综合久久| 要久久爱在线免费观看| 久久天堂电影网| 久久精品国产亚洲AV电影| 国产69精品久久久久观看软件 | 久久精品无码一区二区三区日韩| 亚洲成色WWW久久网站| 久久国产精品免费| 色综合久久天天综合| 国产精品美女久久久久| 亚洲va久久久噜噜噜久久狠狠 | 国产精品久久网| 国产成年无码久久久久毛片| 久久精品一本到99热免费| 亚洲国产成人久久一区久久| 国产69精品久久久久99| 亚洲国产天堂久久综合网站| 97精品伊人久久大香线蕉app| 国产精品久久久久jk制服| 97久久久精品综合88久久| 国产成人综合久久综合|