工作的原因打算通過devcon.exe實現(xiàn)自動打包的功能,由于之前一直在Linux那個神奇的世界里遨游,初到Windows這個世界真是茫然失措,
開始之前公司一哥們告訴我想實現(xiàn)什么功能,大概了解一下后就開始了,無奈菜鳥一枚就找度娘解決吧,遨游了兩天找各種資料去了解相關
的概念,可算知道一點了,好了,到重點了:
由于提供了相應的.inf和.sys文件,在Windows自帶的設備管理器中可以正常安裝,但!!!在devcon中卻安裝出來了兩個驅(qū)動文件,
屬于菜鳥的我就在網(wǎng)上一頓神找啊,找到的結(jié)果就是安裝命令 devcon -r install D:dbg/PKU_umal.inf "PCI/VEN_100B&DEV_FF2F"
D:dbg/PKU_umal.inf 是我的目錄下文件, "PCI/VEN_100B&DEV_FF2F"設備ID
用這種方法安裝出來會出現(xiàn)兩個驅(qū)動,一個好使,一個帶黃色感嘆號;怎么update也不好使。郁悶啊!!!又自學了.inf的原理,一步步
跟下來也沒有錯誤,想是不是國產(chǎn)平臺不行?最后驗證是可以的。用這種方法安裝后只能重啟后再安(我的有C盤保護,要不我得哭),
不重啟只會出現(xiàn)一個帶黃色感嘆號的驅(qū)動。
網(wǎng)上找了好多資料也解決不了,終于在今天早上,看了圣經(jīng)中的一句話,“你若能信,在信的人,凡是都能”,中午沒有午休就找出原因了,
根據(jù)源碼慢慢分析發(fā)現(xiàn),在執(zhí)行devcon -r D:dbg/PKU_umal.inf "PCI/VEN_100B&DEV_FF2F"命令時,是分兩步進行的,第一步執(zhí)行cmdinstall()
函數(shù)進行安裝,在cmdinstall()函數(shù)中結(jié)尾處又調(diào)用了cmdupdate()函數(shù),這個是重點!!!!!cmdupdate()函數(shù)會再次安裝設備驅(qū)動,這就
導致出現(xiàn)了兩個設備驅(qū)動的現(xiàn)象,并且還有一個是帶黃色感嘆號的,原來原因就是出現(xiàn)在了cmdupdate()函數(shù)中;cmdupdate()函數(shù)是由update
命令進行調(diào)用的,但只是解決了一半,怎么做???不知道。不知道怎么來了靈感自己組合修改命令,終于試出來啦!
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"
devcon -r rescan D:dbg/PKU_umal.inf "PCI/VEN_100B&DEV_FF2F"會掃描與ID號相關的設備驅(qū)動,即使把網(wǎng)絡控制器刪除也能更新出來
就是這么牛!這個功能相當于設備管理器發(fā)現(xiàn)新硬件的功能。
devcon -r update D:dbg/PKU_umal.inf "PCI/VEN_100B&DEV_FF2F"
這句命令折磨了我好久,更新就刷新一下唄!這么理解就錯了,其實主要實現(xiàn)的是具有安裝功能的刷新!
到此為止我的自動驅(qū)動安裝還沒出現(xiàn)BUG!
總結(jié)一下,有能力還是多看源碼,英文手冊,真的很有用。
“你若能信,在信的人,凡是都能”
新聞熱點
疑難解答
圖片精選