久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4510|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

設(shè)備及驅(qū)動在系統(tǒng)中的安裝過程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:90014 發(fā)表于 2015-9-13 16:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我們?nèi)绾卧赪indows 系統(tǒng)中安裝一個設(shè)備以及對應(yīng)的驅(qū)動程序呢?請看MSDN /WDK 中對此部分的描述。
要清楚這個過程,需要先了解一下Windows設(shè)備安裝過程中所需的各個組件。
http://msdn.microsoft.com/en-us/library/ms791106.aspx


在這幅圖中,白底框由Windows操作系統(tǒng)提供,而灰色框則必須由設(shè)備供應(yīng)商提供。而其中的SetupAPI,DeviceManager等則是SetupApi.dll 以及Cfgmgr32.dll的功能。其余的驅(qū)動管理器等則是分別不同的sys驅(qū)動文件。
Windows的安裝類型
Windows 定義了2種類型的安裝過程:服務(wù)器端以及客戶端。因服務(wù)器端安裝不需要用戶干預(yù),應(yīng)盡可能選擇此安裝方式。
在以下情況下,可采用服務(wù)器端安裝
  • 總線驅(qū)動能夠檢測到此設(shè)備,并且能通知到PnP管理器。

  • PnP 管理器能夠找到包含與該設(shè)備硬件ID匹配的INF文件。
  • 設(shè)備的INF文件和所有驅(qū)動都經(jīng)過WHQL簽核。
  • SetupAPI 能夠在不提示用戶的情況下找到所有的設(shè)備驅(qū)動程序。意思是所有驅(qū)動都是系統(tǒng)預(yù)安裝的,或者此前安轉(zhuǎn)過。
  • 設(shè)備類安裝程序在安裝完成后不顯示任何屬性提示。
  • 設(shè)備的 INF 文件中沒有指定要求交互式操作。
  • 所有的一次性注冊條款都符合設(shè)備安裝中的規(guī)則。

服務(wù)器端安裝不顯示任何用戶接口,也不需要以管理員身份登陸。

客戶端安裝:
  • PnP 管理器無法找到包含設(shè)備硬件ID的 INF 文件。
  • PnP 管理器無法找到所需的驅(qū)動文件。
  • 設(shè)備的 INF 或驅(qū)動沒有經(jīng)過簽核。
  • 此時 SetupAPI 必須提示用戶輸入安裝介質(zhì)的位置。
  • 類安裝程序或協(xié)同安裝程序在安裝完成后顯示一些屬性頁面。
  • 設(shè)備,總線或總線驅(qū)動等不支持即插即用(PnP)。

客戶端安裝需要使用客戶端軟件,如添加硬件向?qū)?NewDev.dll),或設(shè)備供應(yīng)商提供的安裝程序。這些客戶端軟件通過調(diào)用SetupAPI完成安裝操作。從Windows Vista開始,設(shè)備安裝的核心都是非交互式的服務(wù)器端安裝方式,不再支持客戶端方式。但是設(shè)備類安裝程序及協(xié)同安裝程序依然可以顯示安裝完成后屬性或動作。

系統(tǒng)的安裝過程

用戶現(xiàn)在看到的很多安裝都是在系統(tǒng)正常運行后的安裝。其實主要的設(shè)備安裝在Windows初次安裝時已經(jīng)完成,客戶之后在系統(tǒng)運行后,再次補充特殊的,系統(tǒng)為提供標(biāo)準(zhǔn)驅(qū)動的設(shè)備的安裝過程。如新的顯卡,聲卡、網(wǎng)卡或其他USB設(shè)備等等。這個過程就是上圖中的灰色部分。實際的安裝過程有3類:文本模式的安裝(主要的安裝過程),需要再次啟動系統(tǒng)的安裝以及用戶模式下不需要啟動的安裝。下面對系統(tǒng)已經(jīng)運行后的安裝作一介紹。
  • 將設(shè)備插入系統(tǒng)
  • 如果設(shè)備和總線支持熱拔插,則自動啟動安裝過程。
  • 如果需要關(guān)機并打開機箱安裝設(shè)備,則設(shè)備安裝好以后,下次啟動系統(tǒng)即可識別。
  • 如果設(shè)備不支持即插即用(PnP),則需要人工啟動添加新設(shè)備向?qū)砼渲迷撛O(shè)備。
安裝過程示例
在下面的示例中,該設(shè)備支持熱拔插,并且提供了安裝文件的CD。

上圖中的主要操作要點:
  • 用戶將設(shè)備插入計算機。如果此設(shè)備支持熱拔插,則可以在系統(tǒng)正常運行是插入。如U盤。
  • 設(shè)備的枚舉過程 總線驅(qū)動接受到設(shè)備的熱拔插通知后,通過調(diào)用IoInvalidateDeviceRelations通知核心態(tài)的PnP管理器,告知該總線上的設(shè)備列表已經(jīng)發(fā)生變化。在本例中,這個變化是總線上出現(xiàn)了新的設(shè)備。
    核心態(tài)PnP管理器通過發(fā)送值為IRP_MN_QUERY_DEVICE_RELATIONS的IRP_MJ_PNP給總線驅(qū)動,以取得該總線上目前的設(shè)備列表。總線驅(qū)動則提供這個列表。核心態(tài)PnP管理器將此列表與此前的列表對照,從而確定總線上出現(xiàn)的新設(shè)備。
    核心態(tài)PnP管理器再次發(fā)送各種IRP給總線驅(qū)動,進一步取得該設(shè)備的其他信息,如設(shè)備硬件ID,兼容ID和設(shè)備能力描述等。這些請求包括 IRP_MN_QUERY_IDIRP_MN_QUERY_CAPABILITIES
  • 核心態(tài)PnP管理器通知用戶態(tài)PnP管理器要安裝新的設(shè)備。用戶態(tài)PnP管理器試圖完成信任模式安裝(服務(wù)器端安裝)。但此例中無法完成,必須顯示一個提示,要求用戶提供安裝盤。
  • 用戶態(tài)PnP管理器創(chuàng)建一個新的RunDll32進程,啟動新設(shè)備管理程序newdev.dll,開始安裝設(shè)備。
  • 新設(shè)備管理程序調(diào)用設(shè)備安裝函數(shù) (SetupAPI)和即插即用管理函數(shù) (CfgMgr API)來完成此安裝任務(wù)。 新設(shè)備安裝程序首先調(diào)用 SetupDiBuildDriverInfoList 創(chuàng)建該設(shè)備可能的驅(qū)動列表。此例中,在系統(tǒng)的INF列表中,沒有與之對應(yīng)的驅(qū)動,則返回一個空的列表。新設(shè)備安裝程序顯示發(fā)現(xiàn)新硬件向?qū)В脩籼峁?qū)動文件的位置,如軟盤,CD或微軟在線升級等。此例中,驅(qū)動文件在CD上,則用戶必須裝入CD,然后點擊"下一步"繼續(xù)后續(xù)安裝。新設(shè)備安裝程序繼續(xù)調(diào)用 SetupDiBuildDriverInfoList,此時已經(jīng)有用戶提供的CD上的文件列表。
    (注意:如果此前已經(jīng)安裝過此設(shè)備,但是未能成功,則此設(shè)備會被當(dāng)作未知設(shè)備,而不會顯示以上安裝向?qū)А?
  • 類安裝程序以及協(xié)同安裝程序開始參與安裝過程,處理DIF請求。例如,新設(shè)備安裝程序調(diào)用 SetupDiCallClassInstaller,發(fā)送 DIF_SELECTBESTCOMPATDRV 安裝需求。SetupDiCallClassInstaller 發(fā)送 DIF 需求給所有的類安裝程序及協(xié)同安裝程序。
    新設(shè)備安裝程序發(fā)送一系列DIF代碼,包括DIF_SELECTBESTCOMPATDRV, DIF_ALLOW_INSTALL, DIF_INSTALLDEVICEFILES, DIF_REGISTER_COINSTALLERS, DIF_INSTALLINTERFACES, 和 DIF_INSTALLDEVICE. 由類安裝程序予以處理。
    安裝過程使用INF文件中的class以及ClassGUID 項目確定設(shè)備的安裝類。安裝類確定了該設(shè)備的類的安裝程序及協(xié)同安裝程序。如果需要協(xié)同安裝程序,則在INF文件的 INF DDInstall.Coinstallers 部分列出。
  • 安裝程序?qū)⒖刂妻D(zhuǎn)移到核心模式,開始裝載驅(qū)動并且啟動設(shè)備。安裝程序選定該設(shè)備的最佳驅(qū)動后,復(fù)制所需要的支持文件,注冊該設(shè)備特定的協(xié)同安裝程序以及設(shè)備接口,然后由核心模式裝載驅(qū)動并且啟動設(shè)備。此時發(fā)送相關(guān)的配置管理CfgMgr函數(shù)給用戶態(tài)PnP管理器,并經(jīng)過用戶態(tài)PnP管理器轉(zhuǎn)發(fā)給核心臺PnP管理器。
  • PnP加載相關(guān)的驅(qū)動以及該設(shè)備可選的過濾驅(qū)動。PnP管理器首先調(diào)用尚未安裝的驅(qū)動的DriverEntry,然后為每一個設(shè)備調(diào)用AddDevice,啟動底端過濾器,此后是功能驅(qū)動,最后是高端過濾器驅(qū)動。如果有需要,PnP管理器給該設(shè)備分配資源,并且給設(shè)備驅(qū)動程序發(fā)送 IRP_MN_START_DEVICE信息。
  • 安裝程序可以提供安裝后向?qū)ы撁妫淖冊O(shè)備設(shè)置或安裝應(yīng)用軟件。在顯示標(biāo)準(zhǔn)的安裝完成頁面前,安裝程序發(fā)出 DIF_NEWDEVICEWIZARD_FINISHINSTALL 。這樣就允許安裝客戶定制的頁面,以便更改設(shè)備的設(shè)置或作其他。
  • 從Windows Vista開始,安裝程序可以提供安裝完成后操作來安裝應(yīng)用軟件,即在所有安裝操作都完成之后,發(fā)送 DIF_FINISHINSTALL_ACTION 給安裝程序。
以上過程是設(shè)備安裝的大致過程。                                                                                                                    
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜影院 | 精品久久久久久亚洲精品 | 欧美精品一区在线 | 一区二区三区在线 | 亚洲午夜av | 成人欧美一区二区三区黑人孕妇 | 女同videos另类 | 另类视频在线 | 国产精品免费一区二区 | 91视频一区二区 | 亚洲综合第一页 | 日韩中文字幕在线免费 | 国产激情视频在线观看 | 欧美成人精品欧美一级 | 国产福利在线 | 日韩色视频 | 国产一级片一区二区三区 | 欧美色专区| 亚洲视频三区 | 日本欧美在线 | 亚洲精品粉嫩美女一区 | 亚洲高清视频一区二区 | 久久久精品网站 | 国产高清免费 | 夜夜爽99久久国产综合精品女不卡 | 一区二区三区四区在线 | 亚洲精品91 | 99国产精品视频免费观看一公开 | 麻豆视频在线免费观看 | 成人在线一区二区三区 | 欧美一级黄视频 | 免费激情网站 | 国产免费一级一级 | 欧美男人天堂 | 亚洲一区中文字幕 | 国产日韩精品一区二区三区 | 91在线免费视频 | 天天干天天插 | 国产视频1区2区 | 九九热这里只有精品在线观看 | 日韩成人免费在线视频 |