利用 devcon.exe實現自動安裝驅動(轉)

http://blog.csdn.net/u012814201/article/details/44919125 網絡

工做的緣由打算經過devcon.exe實現自動打包的功能,因爲以前一直在Linux那個神奇的世界裏遨遊,初到Windows這個世界真是茫然失措,
開始以前公司一哥們告訴我想實現什麼功能,大概瞭解一下後就開始了,無奈菜鳥一枚就找度娘解決吧,遨遊了兩天找各類資料去了解相關
的概念,可算知道一點了,好了,到重點了:函數


 因爲提供了相應的.inf和.sys文件,在Windows自帶的設備管理器中能夠正常安裝,但!!!在devcon中卻安裝出來了兩個驅動文件,
屬於菜鳥的我就在網上一頓神找啊,找到的結果就是安裝命令  devcon -r install D:dbg\PKU_umal.inf   "PCI\VEN_100B&DEV_FF2F"
D:dbg\PKU_umal.inf 是個人目錄下文件, "PCI\VEN_100B&DEV_FF2F"設備ID
用這種方法安裝出來會出現兩個驅動,一個好使,一個帶黃色感嘆號;怎麼update也很差使。鬱悶啊!!!又自學了.inf的原理,一步步
跟下來也沒有錯誤,想是否是國產平臺不行?最後驗證是能夠的。用這種方法安裝後只能重啓後再安(個人有C盤保護,要不我得哭),
不重啓只會出現一個帶黃色感嘆號的驅動。
 網上找了好多資料也解決不了,終於在今天早上,看了聖經中的一句話,「你若能信,在信的人,凡是都能」,中午沒有午休就找出緣由了,
根據源碼慢慢分析發現,在執行devcon -r D:dbg\PKU_umal.inf   "PCI\VEN_100B&DEV_FF2F"命令時,是分兩步進行的,第一步執行cmdinstall()
函數進行安裝,在cmdinstall()函數中結尾處又調用了cmdupdate()函數,這個是重點!!!!!cmdupdate()函數會再次安裝設備驅動,這就
致使出現了兩個設備驅動的現象,而且還有一個是帶黃色感嘆號的,原來緣由就是出如今了cmdupdate()函數中;cmdupdate()函數是由update
命令進行調用的,但只是解決了一半,怎麼作???不知道。不知道怎麼來了靈感本身組合修改命令,終於試出來啦!.net


///////////////////////////////////////////////////////////////////////////
 devcon -r rescan D:dbg\PKU_umal.inf   "PCI\VEN_100B&DEV_FF2F"
 devcon -r update D:dbg\PKU_umal.inf   "PCI\VEN_100B&DEV_FF2F"
///////////////////////////////////////////////////////////////////////////blog


devcon -r rescan D:dbg\PKU_umal.inf   "PCI\VEN_100B&DEV_FF2F"會掃描與ID號相關的設備驅動,即便把網絡控制器刪除也能更新出來
就是這麼牛!這個功能至關於設備管理器發現新硬件的功能。cmd

devcon -r update D:dbg\PKU_umal.inf   "PCI\VEN_100B&DEV_FF2F"
這句命令折磨了我很久,更新就刷新一下唄!這麼理解就錯了,其實主要實現的是具備安裝功能的刷新!
到此爲止個人自動驅動安裝還沒出現BUG!源碼

 

總結一下,有能力仍是多看源碼,英文手冊,真的頗有用。
「你若能信,在信的人,凡是都能」原理

相關文章
相關標籤/搜索