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