專利名稱:外設(shè)設(shè)備接入狀態(tài)檢測方法
技術(shù)領(lǐng)域:
本發(fā)明涉及外設(shè)設(shè)備監(jiān)測技術(shù),尤其涉及一種計(jì)算機(jī)外設(shè)設(shè)備接入狀態(tài)檢 測方法。
背景技術(shù):
隨著計(jì)算機(jī)的日益普及,計(jì)算機(jī)外設(shè)設(shè)備也越來越多地被人們所接觸。移 動硬盤、調(diào)制解調(diào)器、優(yōu)盤等均是常用的計(jì)算機(jī)外設(shè)設(shè)備。外設(shè)設(shè)備與計(jì)算機(jī)的接口方式也非常靈活,常用的有PC機(jī)內(nèi)存卡國際聯(lián)合會(PCMCIA, Personal Computer Memory Card International Association) 4妻口、 USB 4妻口、才廣展卡 (Express Card)接口等。與PCMCIA接口相比,Express Card接口具有體積更 小、傳輸速度更快、功耗更低、更適合移動系統(tǒng)等很多優(yōu)點(diǎn)。USB接口的應(yīng)用 更是廣泛,目前幾乎所有筆記本、臺式機(jī)均設(shè)置有USB接口,用戶利用這些 USB接口可方便地實(shí)現(xiàn)支持USB接口的外設(shè)設(shè)備接入計(jì)算機(jī)。外設(shè)設(shè)備接入計(jì)算機(jī)后,通過附加的應(yīng)用軟件一起,可以為用戶提供非常 豐富的功能業(yè)務(wù),這也是用戶接受外設(shè)設(shè)備的主要原因。例如應(yīng)用較多的調(diào)制 解調(diào)器,應(yīng)用軟件和調(diào)制解調(diào)器之間可以通過AT命令(由Hayes公司發(fā)明而 為所有調(diào)制解調(diào)器制造商所使用的一個調(diào)制解調(diào)器命令語言。每條命令以字母 "AT"開頭,后跟字母和數(shù)字)通訊來實(shí)現(xiàn)各種業(yè)務(wù)。但是,當(dāng)外設(shè)設(shè)備從計(jì)算機(jī)拔出時,應(yīng)用軟件需要迅速得知該信息并及時 進(jìn)行相應(yīng)的狀態(tài)變化,才能做到智能的響應(yīng),同時避免因?yàn)椴荒軝z測到變化而 允許一些操作繼續(xù)進(jìn)行,可能會造成程序的異常。針對上述問題,目前常用的方法是由應(yīng)用程序定時發(fā)送^r測命令給外設(shè)設(shè) 備,通過命令是否有響應(yīng)來檢測外設(shè)設(shè)備是否在線。另一種方法是由外設(shè)設(shè)備 向應(yīng)用程序上報心跳指令,當(dāng) 一段時間應(yīng)用程序接收不到心跳指令即證明外設(shè) 設(shè)備脫離了計(jì)算機(jī)。上述的外設(shè)設(shè)備接入狀態(tài)檢測方法存在檢測不夠?qū)崟r的問題, 一次;險測命令的不成功,并不能證明外設(shè)設(shè)備已脫離計(jì)算機(jī),所以還需要等候一定的次數(shù)未成功后才能證明設(shè)備已脫離計(jì)算機(jī),尤其是使用AT命令來通訊的設(shè)備,因 為一個命令本身還會有一定時間的超時,所以判斷更不及時。發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種外設(shè)設(shè)備接入狀態(tài)檢測方法, 以及時準(zhǔn)確地提供外設(shè)設(shè)備的接入狀態(tài)。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種外設(shè)設(shè)備接入狀態(tài)檢測方法,在主機(jī)的操作系統(tǒng)注冊表項(xiàng)下增設(shè)外設(shè) 設(shè)備項(xiàng),并設(shè)置檢測外設(shè)設(shè)備項(xiàng)的線程,該方法包括在外設(shè)設(shè)備項(xiàng)變化時所述線程被觸發(fā),所述線程根據(jù)讀取到的外設(shè)設(shè)備項(xiàng) 及其鍵值確定外設(shè)設(shè)備接入狀態(tài)。其中,所述增設(shè)外設(shè)設(shè)備項(xiàng),具體包括在外設(shè)設(shè)備應(yīng)用程序載入主機(jī)操作系統(tǒng)時在注冊表項(xiàng)下增設(shè)外設(shè)設(shè)備項(xiàng)。其中,所述外設(shè)設(shè)備項(xiàng)中包括外設(shè)設(shè)備信息子項(xiàng);外設(shè)設(shè)備接入或脫離主 機(jī)時,主機(jī)操作系統(tǒng)在外設(shè)設(shè)備項(xiàng)中添加或刪除外設(shè)設(shè)備信息子項(xiàng),并修改相 關(guān)外設(shè)設(shè)備項(xiàng)的鍵值。其中,外設(shè)設(shè)備信息子項(xiàng)的鍵值中至少包括外設(shè)設(shè)備類型信息、供應(yīng)商 標(biāo)識VID信息、制造商標(biāo)識PID信息和外設(shè)設(shè)備連接位置信息。其中,所述線程被觸發(fā)包括所述線程調(diào)用監(jiān)測注冊表項(xiàng)變化的應(yīng)用程序接口 API函數(shù),所述API函數(shù) 監(jiān)測到待監(jiān)測注冊表項(xiàng)變化時觸發(fā)所述線程。其中,所述線程根據(jù)讀取到的外設(shè)設(shè)備項(xiàng)及其鍵值確定外設(shè)設(shè)備接入狀態(tài), 具體包括
所述線程讀取外設(shè)設(shè)備項(xiàng)中外設(shè)設(shè)備信息子項(xiàng)的鍵值,根據(jù)所讀取鍵值即 確定出當(dāng)前接入主機(jī)的外設(shè)設(shè)備。其中,所述線程根據(jù)讀取到的外設(shè)設(shè)備項(xiàng)及其鍵值確定外設(shè)設(shè)備接入狀態(tài),包括所述線程讀取外設(shè)設(shè)備項(xiàng)中外設(shè)設(shè)備信息子項(xiàng)的鍵值,根據(jù)所讀取到的外 設(shè)設(shè)備與之前接入的外設(shè)設(shè)備確定新接入或脫離主機(jī)的外設(shè)設(shè)備。外設(shè)設(shè)備接入計(jì)算機(jī),需要安裝應(yīng)用程序來支持所述外設(shè)設(shè)備的使用,安 裝應(yīng)用程序時,計(jì)算機(jī)操作系統(tǒng)會在相應(yīng)的注冊表項(xiàng)下為該外設(shè)設(shè)備創(chuàng)建一個 注冊表子項(xiàng),而當(dāng)外設(shè)設(shè)備接入或脫離計(jì)算機(jī)時,計(jì)算機(jī)操作系統(tǒng)將修改所述 外設(shè)設(shè)備注冊表子項(xiàng),本發(fā)明設(shè)置一個檢測外設(shè)設(shè)備注冊表子項(xiàng)變化的線程, 在檢測到外設(shè)設(shè)備注冊表子項(xiàng)變化時,再讀取外設(shè)設(shè)備注冊表子項(xiàng)的鍵值可確 定當(dāng)前接入的外設(shè)設(shè)備是哪些,從而可確定出新接入或脫離計(jì)算機(jī)主機(jī)的外設(shè)設(shè)備。本發(fā)明檢測線程是利用操作系統(tǒng)中的API函數(shù)來檢測外設(shè)設(shè)備注冊表子項(xiàng)變化的,而操作系統(tǒng)修改外設(shè)設(shè)備注冊表子項(xiàng)更快捷,因此整個檢測不僅迅 捷且準(zhǔn)確,這對于操作系統(tǒng)正確處理針對外設(shè)設(shè)備的指令是非常有益的。
圖1為本發(fā)明外設(shè)設(shè)備接入狀態(tài)檢測方法的流程圖; 圖2為操作系統(tǒng)為外設(shè)設(shè)備所創(chuàng)建的注冊表子項(xiàng)示意圖; 圖3為外設(shè)設(shè)備接入主機(jī)后其注冊表子項(xiàng)示意圖。
具體實(shí)施方式
本發(fā)明的核心思想是針對目前計(jì)算機(jī)主機(jī)的外設(shè)設(shè)備種類繁多且相對接 入靈活的特點(diǎn),檢測外設(shè)設(shè)備接入狀態(tài)不夠及時,這可能導(dǎo)致外設(shè)設(shè)備應(yīng)用程 序的異常,甚至影響到計(jì)算機(jī)主機(jī)的操作系統(tǒng)。外設(shè)設(shè)備接入狀態(tài)計(jì)算機(jī)后, 需要安裝應(yīng)用程序來支持所述外設(shè)設(shè)備的使用,安裝應(yīng)用程序時,計(jì)算機(jī)操作 系統(tǒng)會在相應(yīng)的注冊表項(xiàng)下為該外設(shè)設(shè)備創(chuàng)建一個注冊表子項(xiàng),當(dāng)外設(shè)設(shè)備接
入或脫離計(jì)算機(jī)主機(jī)時,操作系統(tǒng)將修改外設(shè)設(shè)備注冊表子項(xiàng),本發(fā)明利用斗全 測線程檢測外設(shè)設(shè)備注冊表子項(xiàng)的變化,以此來確定外設(shè)設(shè)備接入狀態(tài),非常 及時,且判斷準(zhǔn)確。以下結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)描述。圖1為外設(shè)設(shè)備接入狀態(tài)檢測方法的流程圖,如圖l所示,本發(fā)明的外設(shè)i殳備接入狀態(tài)4全測方法包括步驟101:在主機(jī)的操作系統(tǒng)注冊表項(xiàng)下增設(shè)外設(shè)設(shè)備注冊表子項(xiàng),并設(shè) 置檢測外設(shè)設(shè)備項(xiàng)的線程。該步驟是本發(fā)明接入狀態(tài)檢測方法的準(zhǔn)備步驟,是 實(shí)現(xiàn)本發(fā)明檢測方法的前提。在外設(shè)設(shè)備接入到計(jì)算機(jī)主機(jī)時,需要安裝外設(shè)設(shè)備的應(yīng)用程序才能實(shí)現(xiàn) 該外設(shè)設(shè)備的應(yīng)用,例如USB接口的外設(shè)設(shè)備,用戶之所以能方便地使用USB 設(shè)備,是因?yàn)樵诓僮飨到y(tǒng)中安裝了支持USB設(shè)備接入的相應(yīng)程序。再如一些打 印機(jī)等設(shè)備,也是安裝完應(yīng)用程序后才能使用。而在安裝外設(shè)設(shè)備的應(yīng)用程序 時,操作系統(tǒng)會在注冊表項(xiàng)中為外設(shè)設(shè)備創(chuàng)建一個注冊表子項(xiàng)。圖2為操作系 統(tǒng)為外設(shè)設(shè)備所創(chuàng)建的注冊表子項(xiàng)示意圖,如圖2所示,注冊表子項(xiàng)包括默認(rèn) 項(xiàng)、設(shè)備數(shù)目(Count)項(xiàng)、下一實(shí)例(Nextlnstance )項(xiàng),REG—SZ、 REG—DWORD 為上述項(xiàng)的4囊值項(xiàng),其后的數(shù)值表示具體的4建值。注冊表子項(xiàng)可于相應(yīng)的注冊 表項(xiàng)下單獨(dú)創(chuàng)建,多個相同類型的外設(shè)設(shè)備也可共用一個注冊表子項(xiàng)。圖3為 外設(shè)設(shè)備接入主機(jī)后其注冊表子項(xiàng)示意圖,如圖3所示,當(dāng)外設(shè)設(shè)備接入主機(jī) 后,操作系統(tǒng)會立即修改其注冊表子項(xiàng),其中,將增加一個反映設(shè)備基本信息 的子項(xiàng),即圖3所示注冊表子項(xiàng)的第二項(xiàng),其鍵值項(xiàng)REG一SZ的鍵值反映了外 設(shè)設(shè)備類型信息(USB)、供應(yīng)商標(biāo)識VID信息(Vid—19d2)、制造商標(biāo)識PID 信息(Pid—0001 )和外設(shè)設(shè)備連接位置信息(MI_02\7&12519522&6&002)。設(shè) 備數(shù)目(Count)項(xiàng)、下一實(shí)例(Nextlnstance)項(xiàng)對應(yīng)的鍵值被修改為"1"。本發(fā)明的檢測線程主要是調(diào)用主機(jī)操作系統(tǒng)中的API函數(shù)對待檢測外設(shè)設(shè) 備的注冊表子項(xiàng)進(jìn)行檢測,當(dāng)檢測到注冊表子項(xiàng)變化時,即表明有外設(shè)設(shè)備接 入了主機(jī)或脫離的主機(jī),本發(fā)明的檢測線程立即被觸發(fā),檢測線程通過注冊表 子項(xiàng)中反映設(shè)備基本信息子項(xiàng)來確定是接入了外設(shè)設(shè)備還是有外設(shè)設(shè)備脫離主 機(jī),通過該線程的檢測,操作系統(tǒng)可及時作出調(diào)整,避免程序運(yùn)作異常。作為 一個示例,本發(fā)明線程可通過以下方式實(shí)現(xiàn)CreateThread(NULL,O,(LPTHRE AD—START—ROUTINE)StartMonitorThread,NUL L,0,NULL);StartMonitorThread(LPVOID context)long ret;DWORD dwEvent; HKEYhKey;if(ERROR—SUCCESS != (ret =RegOpenKey(HKEY LOCAL—MACHINE,"SYSTEM\\CurrentControlSet\\Services\\ZTEusbnmea",&hKey》)return - hHANDLE hEvent=CreateEvent(NULL,true,true,"RegEvent");ret=::RegNotifyChangeKeyValue(hKey,TRUE,REG—NOTIFY—CHANGE—LAST—S ET,hEvent,true);if(ret==0)dwEvent=WaitForSingleObject(hEvent,INFINITE); if(dwEvent==WAIT—OBJECT—0)〃檢測到注冊表項(xiàng)變化,返回外設(shè)設(shè)備的接入狀態(tài)信息 ::ResetEvent(hEvent); return 0;步驟102:在外設(shè)設(shè)備注冊表子項(xiàng)變化時,所述線程被觸發(fā),所述線程根 據(jù)讀取到的外設(shè)設(shè)備項(xiàng)及其鍵值確定外設(shè)設(shè)備接入狀態(tài)信息,返回給操作系統(tǒng)。 根據(jù)需要,也可將外設(shè)設(shè)備接入狀態(tài)信息返回至用戶。所述線程調(diào)用監(jiān)測注冊表項(xiàng)變化的應(yīng)用程序接口 API函數(shù),所述API函數(shù) 監(jiān)測到待監(jiān)測注冊表項(xiàng)變化時觸發(fā)所述線程。其中,所述線程根據(jù)讀^c到的外 設(shè)設(shè)備項(xiàng)及其鍵值確定外設(shè)設(shè)備接入狀態(tài),具體包括所述線程讀取外設(shè)設(shè)備 注冊表子項(xiàng)中外設(shè)設(shè)備信息子項(xiàng)的鍵值,返回所讀取到的外設(shè)設(shè)備信息,即僅 返回當(dāng)前接入主機(jī)的外設(shè)設(shè)備信息,操作系統(tǒng)或用戶僅了解當(dāng)前所接入的外設(shè) 設(shè)備即可。當(dāng)然,所述線程讀取外設(shè)設(shè)備項(xiàng)中外設(shè)設(shè)備信息子項(xiàng)的鍵值后,也 可根據(jù)所讀取到的外設(shè)設(shè)備信息與之前接入的外設(shè)設(shè)備信息,來確定哪些外設(shè) 設(shè)備是新接入主機(jī)的,哪些設(shè)備脫離了主機(jī)的,將新接入或脫離了主機(jī)的外設(shè) 設(shè)備信息返回至操作系統(tǒng)或/和用戶。本發(fā)明根據(jù)外設(shè)設(shè)備注冊表項(xiàng)的變化來確定外設(shè)設(shè)備的接入狀態(tài),檢測到 的外設(shè)設(shè)備接入狀態(tài)及時準(zhǔn)確。本發(fā)明利用一個線程即可實(shí)現(xiàn)對外設(shè)設(shè)備的接 入狀態(tài)的檢測,實(shí)現(xiàn)筒單。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種外設(shè)設(shè)備接入狀態(tài)檢測方法,其特征在于,在主機(jī)的操作系統(tǒng)注冊表項(xiàng)下增設(shè)外設(shè)設(shè)備項(xiàng),并設(shè)置檢測外設(shè)設(shè)備項(xiàng)的線程,該方法包括在外設(shè)設(shè)備項(xiàng)變化時所述線程被觸發(fā),所述線程根據(jù)讀取到的外設(shè)設(shè)備項(xiàng)及其鍵值確定外設(shè)設(shè)備接入狀態(tài)。
2、 根據(jù)權(quán)利要求l所述的外設(shè)設(shè)備接入狀態(tài)檢測方法,其特征在于,所述 增設(shè)外設(shè)設(shè)備項(xiàng),具體包括在外設(shè)設(shè)備應(yīng)用程序載入主機(jī)操作系統(tǒng)時在注冊表項(xiàng)下增設(shè)外設(shè)設(shè)備項(xiàng)。
3、 根據(jù)權(quán)利要求1所述的外設(shè)設(shè)備接入狀態(tài)檢測方法,其特征在于,所述 外設(shè)設(shè)備項(xiàng)中包括外設(shè)設(shè)備信息子項(xiàng);外設(shè)設(shè)備接入或脫離主機(jī)時,主機(jī)操作 系統(tǒng)在外設(shè)設(shè)備項(xiàng)中添加或刪除外設(shè)設(shè)備信息子項(xiàng),并修改相關(guān)外設(shè)設(shè)備項(xiàng)的 鍵值。
4、 根據(jù)權(quán)利要求3所述的外設(shè)設(shè)備接入狀態(tài)檢測方法,其特征在于,外設(shè) 設(shè)備信息子項(xiàng)的鍵值中至少包括外設(shè)設(shè)備類型信息、供應(yīng)商標(biāo)識VID信息、 制造商標(biāo)識PID信息和外設(shè)設(shè)備連接位置信息。
5、 根據(jù)權(quán)利要求4所述的外設(shè)設(shè)備接入狀態(tài)檢測方法,其特征在于,所述 線程被觸發(fā)包括所述線程調(diào)用監(jiān)測注冊表項(xiàng)變化的應(yīng)用程序接口 API函數(shù),所述API函數(shù) 監(jiān)測到待監(jiān)測注冊表項(xiàng)變化時觸發(fā)所述線程。
6、 根據(jù)權(quán)利要求4所述的外設(shè)設(shè)備接入狀態(tài)檢測方法,其特征在于,所述 線程根據(jù)讀取到的外設(shè)設(shè)備項(xiàng)及其鍵值確定外設(shè)設(shè)備接入狀態(tài),具體包括所述線程讀取外設(shè)設(shè)備項(xiàng)中外設(shè)設(shè)備信息子項(xiàng)的鍵值,根據(jù)所讀取鍵值即 確定出當(dāng)前接入主機(jī)的外設(shè)設(shè)備。
7、 根據(jù)權(quán)利要求4所述的外設(shè)設(shè)備接入狀態(tài)檢測方法,其特征在于,所述 線程根據(jù)讀取到的外設(shè)設(shè)備項(xiàng)及其鍵值確定外設(shè)設(shè)備接入狀態(tài),包括所述線程讀取外設(shè)設(shè)備項(xiàng)中外設(shè)設(shè)備信息子項(xiàng)的鍵值,根據(jù)所讀取到的外 設(shè)設(shè)備與之前接入的外設(shè)設(shè)備確定新接入或脫離主機(jī)的外設(shè)設(shè)備。
全文摘要
本發(fā)明公開了一種外設(shè)設(shè)備接入狀態(tài)檢測方法,涉及外設(shè)設(shè)備檢測技術(shù),為解決目前外設(shè)設(shè)備檢測不及時而提出,為解決上述問題,采用的方案為一種外設(shè)設(shè)備接入狀態(tài)檢測方法,在主機(jī)的操作系統(tǒng)注冊表項(xiàng)下增設(shè)外設(shè)設(shè)備項(xiàng),并設(shè)置檢測外設(shè)設(shè)備項(xiàng)的線程,在外設(shè)設(shè)備項(xiàng)變化時所述線程被觸發(fā),所述線程根據(jù)讀取到的外設(shè)設(shè)備項(xiàng)及其鍵值確定外設(shè)設(shè)備接入狀態(tài)。本發(fā)明可用于攜有外設(shè)設(shè)備的所有計(jì)算機(jī)中。本發(fā)明檢測到的外設(shè)設(shè)備接入狀態(tài)及時準(zhǔn)確,且實(shí)現(xiàn)簡單。
文檔編號G06F13/10GK101105778SQ200710120499
公開日2008年1月16日 申請日期2007年8月20日 優(yōu)先權(quán)日2007年8月20日
發(fā)明者舒娟媚 申請人:中興通訊股份有限公司