使用DpInst安裝驅動程式

2021-07-23 03:39:28 字數 1699 閱讀 9587

dpinst.exe工具位於ddk目錄redist\difx\dpinst\engmui下,同時m$在src\setup\dpinst目錄下提供了定製dpinst驅動安裝包的樣例。乙個基本的驅動安裝包至少要包含cat,sys(已簽名,測試簽名也可以,為cat和sys做測試簽名的方法可以參考這裡)和inf這些檔案,除此之外可能需要dll(cointall)檔案。dpinst安裝這樣的驅動包後,控制面板-程式和功能面板中會出現一項,如下圖是我安裝toaster後在程式和功能面板中多出的項:

注重程式外表的人(反正我不是)可能不滿足這樣的圖示,一定要自己定製乙個圖示,這就可以參考src\setup\dpinst:提供乙個dpin.xml,裡面指定需要定製的圖示檔案等。

dpinst安裝驅動包後,會在c:\windows\system32\drvstore目錄下產生乙個形如"驅動程式名_***x"(圖2)的資料夾,裡面包含了cat/sys/inf等檔案(圖3)。

當系統檢測到有新裝置插入時,pnp管理器會到這個目錄匹配hdiw,如果hwid和inf檔案中指定的hwid恰能匹配,則為新裝置安裝驅動。

怎樣,是不是覺得dpinst是乙個方便的驅動安裝工具?開始時,我的確這樣覺得,但在測試中我發現了一些不足:沒法為已存在的裝置棧再安裝過濾驅動。仍然以toaster驅動為例:用dpinst安裝如下的兩個驅動包:1.toaster功能驅動驅動包(******.inf/toaster.sys/toaster.cat);2.filter過濾驅動驅動包(filter.inf/devupper.sys/toaster.cat)。雖然dpinst都能成功安裝驅動,但最多只有功能驅動能正常工作,如圖4

(圖4)

從圖中可以看到drvstore目錄下的確已經存在兩個驅動包,但是模擬裝置插入後僅安裝了******.inf指定的裝置。另外,登錄檔資訊也反應了toaster裝置堆疊上並沒有插入過濾驅動:

(圖5)

如果將dpinst替換為熟悉的devcon.exe工具,倒可以將過濾驅動安裝到裝置棧中,如圖5:

(圖5)

(圖6)

雖然devcon需要通過install/update的一系列複雜動作才能把過濾驅動裝到裝置棧中,但至少比dpinst裝不了第三方驅動要好點,為此我問過日本同事dpinst為什麼不能做到安裝第三方過濾驅動的原因,他的解釋是pnp管理器在drvstore目錄中匹配到了符合條件的hwid(******驅動包),因此就不會再安裝filter過濾驅動包。當然,我們也可以通過用setupdi介面將過濾驅動安裝到合適的位置。

Linux驅動程式安裝步驟

一.pc機上ubuntu9.10系統下 1.驅動程式原始碼及makefile如下 源程式 include include static int init hello init init 使hello init 函式放到初始化 段裡 static int exit hello exit module ...

linux 驅動程式 高階字元驅動程式

ioctl方法 驅動程式的原型實現 int ioctl struct inode inode,struct file filp,unsigned int cmd,unsigned long arg ioctl 命令選擇 位段結構 number direction ioc read ioc write...

使用VC 編譯驅動程式

4,修改工程屬性。選擇 project setting 或者直接按下alt f7鍵,彈出 project settings 在對話方塊中,選擇 general 選項卡。將intermediate files和output files都改為 mydriver check.注 此處資料夾名稱可根據自己需...