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