當 插入乙個裝置到系統,插入裝置的匯流排檢測出這個裝置的「裝置識別符號」,並通知管理中心新增了這個裝置。這個「裝置識別符號」是作為一類裝置的區別其他型別設 備的特徵,必須根據它去檢測是否有合適的驅動。驅動的安裝資訊是由inf檔案控制,在inf檔案中有乙個域標識出驅動適合的裝置的「裝置識別符號」,因此搜 索過程也就是搜尋符合條件的inf檔案。
在搜尋的時候,系統會給每個符合條件的驅動進行匹配度排名,最後排名最前的驅動就被選擇。至於如何進行排名,這裡就不贅述,可以參考 。
如果在上面的過程中搜尋不到合適的安裝inf檔案,系統就會彈出「找到新的硬體裝置嚮導」頁面,需要使用者選擇驅動所在的位置。如果搜尋到合適的inf檔案,系統會選擇排名最前的驅動進行安裝,到此,整個搜尋和選擇過程就完成了。
下面以插入乙個未安裝驅動的裝置後,系統搜尋和選擇驅動的過程為例,從程式設計師的角度去分析這個過程。
1、當使用者態pnp管理中心接收到新裝置的驅動安裝命令後,建立乙個新的程序並呼叫newdev.dll進行驅動安裝;
2、newdev.dll呼叫setupdibuilddriverinfolist建立乙個裝置驅動鏈,就進行驅動搜尋並找到所有可能的驅動,這就是上面所說的驅動搜尋過程。由於是第一次安裝,會返回乙個空的驅動鏈,因此newdev.dll會彈出「找到新的裝置嚮導」,要求使用者選擇驅動所在的路徑,使用者選擇完畢,再次呼叫setupdibuilddriverinfolist建立新的裝置驅動鏈。
3、newdev.dll呼叫setupdicallclassinstaller傳送一系列的dif請求,包括:dif_selectbestcompatdrv
, dif_allow_install
, dif_installdevicefiles
, dif_register_coinstallers
, dif_installinte***ces
, dif_installdevice
.。從命令可以看出處理dif_selectbestcompatdrv
請求就是選擇最匹配驅動的過程,呼叫setupdienumdriverinfo和setupdigetdriverinstallparams分別例舉驅動及其引數,並呼叫setupdisetselecteddriver選擇驅動。
cuda(含GPU卡驅動)安裝過程
os ubuntu 12.04 amd64 基本工具集 aptitude install binutils ia32 libs gcc make automake autoconf libtool g g 4.6 gawk gfortran freeglut3 dev build essential...
ros語音識別功能庫安裝過程總結
移植思路 1.完成pocketsphinx continuous命令的安裝和測試。apt get安裝方式不靠譜,因此參考教程進行原始碼方式安裝。2.使用pocketsphinx自帶的語言模型和聲學模型只能適用於英文的識別。對於中文就麼辦法了。需要自己訓練語言模型庫和聲學模型庫,因此引申出來後面的工作...
tripwire安裝過程
在as4上測試通過。找到twinstall.sh檔案所在的位置 我安裝的時候找到http download1.csdn.net down3 20070523 23220246809.rpm的是twinstall.sh.in 拷貝到 etc tripwire目錄下,並修改檔案,設定好twadmin檔案...