單片機(jī)USB設(shè)備登錄編輯器
在前幾章中,用戶已經(jīng)知道如何在設(shè)各管理器中看到所有已經(jīng)接上的usb設(shè)備的類型與格式。當(dāng)然,用戶也知道當(dāng)這些設(shè)各被拔離,再重新接上后,不用再重新安裝其驅(qū)動(dòng)程序。那么pc主機(jī)為什么知道其已安裝過,且了解其驅(qū)動(dòng)程序是什么呢? 這個(gè)答案是因?yàn)檫@些設(shè)各已經(jīng)完成了設(shè)各列舉的步驟,pc主機(jī)已經(jīng)知道其vid/pid碼,且能依此找到相對的驅(qū)動(dòng)程序,并已下載完畢。這個(gè)vid/pid碼即放在設(shè)各所含有的設(shè)各描述符中。也稱為操作系統(tǒng)中的機(jī)碼?! ≡趙indows 98與windows me操作系統(tǒng)中,這些vid/pid碼放置于hkey_local_machine\enum\usb與hkey_local_machine\system\currentcontrolset\services\class\usb。而在windows xp或2000的操作系統(tǒng)下,放的位置則為:hkey_local_machine\system\currentcontrolset\enum\usb。 因此,可以稍微做個(gè)區(qū)分,在windows 98與windows me以及windows xp與2000的操作系統(tǒng)版本對登錄編輯器的處理方式是有若干不同的?! ≈劣谌绾稳ゲ樵冞@些vid/pid碼呢?可由下列的步驟來取得(請?jiān)趙indows 98與windows me的操作系統(tǒng)下操作)。 ?、偃鐖D1所示,執(zhí)行windows應(yīng)用程序“執(zhí)行”,并輸入regedit.exe命令或在windows的目錄下,直接執(zhí)行regedit.exe執(zhí)行文件,進(jìn)人“登錄編輯器”窗口?! D1 執(zhí)行登錄編輯器的應(yīng)用程序 ?、谌缓笠缊D2所示,進(jìn)人usb的項(xiàng)目中,如箭頭指示的方式?! 、蹐D3顯示了除根集線(root_hub)外,也顯示了所有曾經(jīng)安裝過驅(qū)動(dòng)程序的設(shè)備的vid/pid碼。如圖中說明了此pc主機(jī)已經(jīng)設(shè)各列舉了多少類型的usb外圍設(shè)備。而用戶是否發(fā)覺到每一個(gè)vid/pid碼都是不同的呢? 這些不同的vid/pid碼即決定了哪些驅(qū)動(dòng)程序?qū)?huì)被加載?! 〕怯脩粢炎缘捻?xiàng)目刪除掉,windows都會(huì)記得哪些驅(qū)動(dòng)程序已加載過,且此設(shè)備再一次插人pc時(shí),就不會(huì)再檢測到有新的設(shè)備插入。也就是說,不論用戶插拔這些外圍設(shè)備多少次,都無須再重新安裝其驅(qū)動(dòng)程序了?! 《恳粋€(gè)設(shè)備中,如圖4所示,顯示了一些相關(guān)的信息?! ∪粢_(dá)到與完成這種登錄的工作,用戶就必須在設(shè)各一接上pc主機(jī)時(shí),執(zhí)行設(shè)備列舉的工作。換句話說,當(dāng)usb設(shè)各第一次連接到usb總線時(shí),usb主機(jī)就會(huì)對此設(shè)各做出列舉檢測的動(dòng)作。此時(shí),主機(jī)會(huì)負(fù)責(zé)檢測與設(shè)置所有連接至根集線器的設(shè)備,而識(shí)別與設(shè)置一個(gè)usb外圍設(shè)各的程序,稱之為設(shè)備列舉,也就是將所有的外圍設(shè)備一一識(shí)別并列舉出來?! D2 “登錄編輯器”窗口
圖3 在pc主機(jī)下曾經(jīng)安裝過的各種vid/pid碼圖4 每一個(gè)vid/pid碼中所列出此設(shè)備的相關(guān)信息 若以usb通信協(xié)議的觀點(diǎn)來看,設(shè)備列舉是通過一連串介于主機(jī)與設(shè)備之間的控制傳輸來辨識(shí)與設(shè)置一個(gè)剛接上的usb設(shè)各程序。而進(jìn)一步地解釋設(shè)各列舉,也即是操作系統(tǒng)可以辨識(shí)一個(gè)新的硬件設(shè)備連接上總線,以及決定其特定的需求。此時(shí),將會(huì)加載適當(dāng)?shù)尿?qū)動(dòng)程序,并且給予新的硬件設(shè)備一個(gè)新的地址。每當(dāng)甩戶重新插拔設(shè)各或重新激活windows時(shí),就會(huì)再一次地執(zhí)行設(shè)各列舉的步驟?! ∮脩艨梢宰鰝€(gè)小實(shí)驗(yàn),試著刪減某個(gè)已經(jīng)列舉過的usb外圍設(shè)各,然后再插拔看看。此時(shí),用戶會(huì)發(fā)現(xiàn)pc主機(jī)將會(huì)發(fā)現(xiàn)一個(gè)新硬件插入,并會(huì)要求請?zhí)峁┢潋?qū)動(dòng)程序,用來重新安裝新的驅(qū)動(dòng)程序。也就是說,pc主機(jī)重新對此usb設(shè)各執(zhí)行設(shè)備列舉的步驟。在此,切勿刪除根集線器或其驅(qū)動(dòng)程序無法再取得的設(shè)各?! ‘?dāng)然,如果說在驅(qū)動(dòng)程序的安裝過程中,出了問題或要?jiǎng)h除某個(gè)usb設(shè)備,光是在設(shè)備管理器底下執(zhí)行刪除的動(dòng)作是不夠的。也就是說用戶須在登錄編輯器中,將已注冊的usb外圍設(shè)各的項(xiàng)目刪除掉,才可達(dá)到完全刪除的目的?! 〉诖隧毟脩粼俅握f明的是,以上的操作方式僅限于windows 98與me操作系統(tǒng)版本,在windows 2000與xp的環(huán)境下,是有所不同的。在這兩種的操作環(huán)境下,不能在登錄編輯器中任意地刪除設(shè)備的vid/pid碼。若要?jiǎng)h除這個(gè)設(shè)備,它會(huì)發(fā)生一個(gè)警告信息,如圖5所示。 那么到底如何才能刪除這個(gè)設(shè)各呢?用戶只能在設(shè)各管理器中,以右擊所要?jiǎng)h除的項(xiàng)目,然后在所彈出的選單中,選擇“刪除安裝”的功能,才能達(dá)到刪除設(shè)各功能的目的,如圖6所示。圖5 在windows 2000與xp下,刪除vid/pid碼所產(chǎn)生錯(cuò)誤的畫面
欲知詳情,請下載word文檔 下載文檔