【转】从INF文件认识驱动
在工控機安裝xp操作系統時,由于工控機的集成顯卡驅動只支持win7,之前沒接觸過windows驅動相關內容,折騰了半天。下載的驅動是exe的,雙擊安裝就提示安裝失敗(未簽名)
上圖是網上隨便找的,現象是一樣的。最后解決辦法是運行exe安裝文件后,在temp目錄下找的它解壓后的文件,然后在設備驅動選擇手動指定安裝目錄,指定為這個目錄進行強制安裝。最后安裝成功。
網上搜了下windows設備驅動inf文件介紹,對windows設備驅動有個初步了解。
相信朋友們對驅動程序的作用和安裝應該不會陌生,但INF文件與驅動程序究竟有何關系呢?其實,INF是Device Information File(設備信息文件)的簡稱,設備管理器通過讀取相應的INF文件來安裝驅動程序,其中記錄了驅動程序安裝的所有操作,包括復制文件到指定路徑、添加或修改注冊表、加載系統服務等,而實際的驅動程序則存放在sys、dll、vxd等文件中。
INF文件的構成
在C:Windows下有一個名為INF的隱藏文件夾,我們可以找到很多??.INF、??.pnf格式的文件,前者即所謂的設備信息文件,后者是預編譯信息文件。用記事本可以打開INF文件,其中記錄了必要的硬件安裝信息,包括設備類型、設備生產廠商名稱、適用產品等信息,Windows可以據此自動安裝驅動程序。如圖1所示,這是CPU的INF文件,筆者以此為例介紹主要構成部分:
1. [version]:版本信息
Signature="WINDOWS NT":這表示驅動程序適用于Windows 2000/XP操作系統,如果是Windows 9x/Me則應該是“CHICAGO”。
Class:設備類型,這里的“Processor”表示中央處理器,即我們通常所說的CPU。如果是顯卡設備的INF文件,這里會顯示為“Display”,光驅設備是“CD-ROM”,顯示器是“Monitor”,聲卡等多媒體設備是“Media”,網卡是“Net”,打印機是“Print”,攝像頭是“Image”。
DriverVer:設備驅動程序的版本和發布日期
2. [Manufacturer]:生產廠商信息
3. [DestinationDirs]:驅動程序安裝路徑
DefaultDestDir = 12:這里的“12”表示將驅動程序文件安裝到Windows文件夾下,如果是“11”則表示將驅動程序文件安裝到C:WindowsSystem32文件夾下。
4. [Processor_Calss_Addreg]:向注冊表中添加的鍵值
安裝INF文件
通常情況下,硬件廠商已經將驅動程序打包為一個安裝程序或自解壓程序,我們只需直接執行Setup.exe或??.exe即可,不過筆者建議還是安裝INF文件為好,這樣不會同時安裝一些無用的垃圾文件。
第一步:解壓縮驅動程序
如果下載回來的驅動程序是一個ZIP格式的壓縮包,首先將其解壓縮;如果下載回來的驅動程序是一個EXE格式的自解壓文件,請使用WinRAR或WinZIP釋放到一個臨時文件夾中,然后查找到其中的INF文件。
第二步:安裝INF
在“我的電腦”或“資源管理器”中右擊剛才找到的INF文件,執行“安裝”命令就可以了。這是因為微軟在Windows中提供了Setup API,驅動程序開發人員不需要考慮接口、安裝等事情。
INF高級應用實例
利用INF文件,我們可以完成很多意想不到的操作,這里通過幾個實例進行說明:
實例一:完全刪除驅動程序
很多情況下,當我們將不需要的硬件設備從系統拔出或取消連接后,其驅動程序并未從系統中真正刪除,系統中仍然保留了這些設備的驅動程序文件和信息,時間一長,不僅會導致系統越來越龐大,而且這些頑固的驅動程序可能會影響新設備的安裝,因為Windows會自動記憶曾安裝過驅動程序的設備的INF文件信息,當我們再次安裝同類型硬件時,系統會自作聰明的自動安裝舊硬件的驅動程序,而拒絕接受新的驅動程序。
例如筆者所使用的筆記本電腦,雖然提供了IEEE 1394接口,但由于平時并不使用相應設備,于是打算將其從系統中徹底卸載。首先從“控制面板”打開“設備管理器”窗口,在“IEEE 1394總線主控制器”下選擇“Texas Instruments OHCI Compliant IEEE 1394 Host Controller設備”,右擊后切換到“驅動程序文件詳細信息”窗口,如圖2所示,這里清楚地列出了該設備所對應的全部驅動程序文件的詳細路徑,請記錄下來一一刪除即可。對于未能正確顯示驅動程序文件信息的設備,我們可以用記事本打開相應的INF文件,在[SourceDisksFiles]小節查找所有的??.dll、??.vxd、??.drv、??.exe、??.ini等類型的文件名,記錄下來后手動刪除。
接下來,我們還需要進入C:WindowsINF文件夾,這里找到了1394.INF、1394vdbg.INF兩個文件,將其全部刪除就可以了。
實例二:未通過WHQL認證的設備驅動程序的INF文件
對于未通過微軟WHQL認證(微軟數字簽名認證)的設備驅動程序,安裝后你可能無法找到其對應的INF文件,它們的位置在哪里呢?
原來,Windows對于那些未通過WHQL認證的設備驅動程序,安裝時并未直接將相應的INF文件復制到C:WindowsINF文件夾中,而是進行了重新命名,以便系統識別和管理,當然這些文件的位置并未改變。它們的文件名以oem*開頭,這里的“*”代表具體的數字,從0開始,其內容構成與普通的INF文件沒有什么區別。
實例三:讓Windows 98自動安裝驅動程序
由于諸多原因,現在仍有部分朋友在使用Windows 98,由于發布較早,Windows 98對新硬件的識別不是很好,例如對目前熱門的USB閃存盤就無法做到即插即用,而且插入的網卡通常也需要安裝驅動程序,否則將無法正常使用。
在Windows 98安裝光盤的ToolsreskitINFinst文件夾中提供了一個名為INFinst.exe的硬件信息安裝程序文件,我們可以利用這個程序將相應設備的驅動程序手動集成至Windows 98的安裝文件,以后在安裝操作系統時,安裝程序會自動檢測所有已連接的硬件設備,并自動安裝相應的驅動程序。
實例四:讓Windows認識改造硬件
Analog Device公司為板載聲卡提供了配套的SoundMAX驅動程序,通過安裝在主板上的Codec與預告加載的音頻渲染軟件結合在一起,提供了廣受歡迎的Yamaha DLSbyXG音色庫和Sensaura 5.1 Virtual Theater環繞聲,并且支持所有主流游戲音頻技術,可惜的是只支持AD188x、AD189x、AD198x等有限的芯片。如果你的板載聲卡使用了其他公司的芯片,在安裝時將無法繼續。
不過,通過某些技術手段,我們可以讓非AD1985芯片的板載聲卡安裝SoundMAX驅動程序,這自然又要用到INF文件了。首先,從http://www.mydrivers.com/dir105/d42111.htm下載5.12.5243 WDM版本的SoundMAX驅動程序,下載時請注意對應相應的操作系統版本,將下載回來的文件解壓縮,在“SMAXWDMW2K_XP”文件夾有三個INF文件,其中smwdmCH4.inf文件對應的是Intel系列的ICH4芯片,smwdmCH6.INF對應的是Intel系列的IC6芯片,由于筆者使用的是VIA系列的芯片組,因此這里選擇了smwdmCH5.inf,用記事本打開后定位到[AnalogDevices]小節的最后一行,按照固定的格式將板載聲卡的ID號添加過來。
板載聲卡的ID號,可以在“DirectX診斷工具→聲音”窗口中查看到,例如“PCIVEN_1106DEV_3058SUBSYS_001214C0REV”,添加時請注意使用相同的格式,另外必須將兩個“&&”符號補充在相應的位置,以保證足夠的字符個數,否則安裝時仍然會無法通過。接下來,我們就可以順利安裝SoundMAX驅動程序了。
轉自http://diybbs.zol.com.cn/12/86_118938.html
總結
以上是生活随笔為你收集整理的【转】从INF文件认识驱动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue中登录模块
- 下一篇: 通信与网络安全之网络连接