亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型的方法

文檔序號:6332242閱讀:449來源:國知局
專利名稱:USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)操作系統(tǒng)領(lǐng)域,具體來說,涉及一種USB設(shè)備識別主機(jī)Windows 操作系統(tǒng)版本類型的方法。
背景技術(shù)
USB協(xié)議技術(shù)是主機(jī)與外部設(shè)備連接的串行總線標(biāo)準(zhǔn),在主機(jī)(例如,個人計(jì)算 機(jī)、個人數(shù)字助理以及移動電腦等)上使用十分廣泛,支持熱插拔和即插即用,并支持總線 供電,鼠標(biāo)、鍵盤、游戲手柄、掃描儀、數(shù)碼相機(jī)、打印機(jī)、硬盤、安全設(shè)備、光驅(qū)和網(wǎng)卡等幾乎 所有的外圍設(shè)備都可以通過運(yùn)行USB接口與主機(jī)相連并進(jìn)行通信,USB接口已經(jīng)成為目前 大多數(shù)主機(jī)外設(shè)與計(jì)算機(jī)相連的缺省接口。在某些情況下,設(shè)備可能必須知道它所連接的主機(jī)計(jì)算機(jī)上運(yùn)行的操作系統(tǒng)的類 型,但是,現(xiàn)有技術(shù)中,設(shè)備卻是無法識別主機(jī)操作系統(tǒng)的。

發(fā)明內(nèi)容
本發(fā)明提供了一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型的方法,具體技 術(shù)方案如下一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型的方法,所述方法包括步驟A、USB設(shè)備上電,并進(jìn)行初始化;步驟B、所述USB設(shè)備進(jìn)行USB枚舉,并判斷所述USB枚舉過程中是否接收到第一 預(yù)設(shè)命令,如果是,則判定主機(jī)操作系統(tǒng)為第一操作系統(tǒng),執(zhí)行步驟D,否則,執(zhí)行步驟C ;步驟C、所述USB設(shè)備判斷所述USB枚舉過程中向主機(jī)返回的設(shè)備類型,當(dāng)所述USB設(shè)備向所述主機(jī)返回的設(shè)備類型是CCID設(shè)備時,所述USB設(shè)備判斷接 收到的指令中是否存在第二預(yù)設(shè)命令,如果存在所述第二預(yù)設(shè)命令,則判定主機(jī)操作系統(tǒng) 為第二操作系統(tǒng),如果不存在所述第二預(yù)設(shè)命令,則判定主機(jī)操作系統(tǒng)為第三操作系統(tǒng);當(dāng)所述USB設(shè)備向所述主機(jī)返回的設(shè)備類型是SCSI設(shè)備時,所述USB設(shè)備接收所 述主機(jī)下發(fā)的SCSI指令,并判斷接收到的所述第二條SCSI指令是第三預(yù)設(shè)命令還是第四 預(yù)設(shè)命令,如果是所述第三預(yù)設(shè)命令,則判定主機(jī)操作系統(tǒng)為第二操作系統(tǒng),如果是所述第 四預(yù)設(shè)命令,則判定主機(jī)操作系統(tǒng)為第三操作系統(tǒng);步驟D、所述USB設(shè)備與主機(jī)建立通信,并等待接收所述主機(jī)下發(fā)的指令,根據(jù)所 述判定出的主機(jī)操作系統(tǒng)類型向所述主機(jī)返回相應(yīng)的信息。所述初始化包括將設(shè)備類型標(biāo)識初始化為默認(rèn)設(shè)備類型標(biāo)識。所述初始化還包括將上電標(biāo)識初始化為第一預(yù)設(shè)值、設(shè)備類型標(biāo)識初始化為默 認(rèn)設(shè)備類型標(biāo)識。所述USB設(shè)備判斷所述USB枚舉過程中向主機(jī)返回的設(shè)備類型為所述USB設(shè)備 根據(jù)所述USB枚舉過程中返回的設(shè)備類型標(biāo)識來判斷所述返回的設(shè)備類型。所述方法還包括所述USB設(shè)備判定出主機(jī)操作系統(tǒng)類型是第一操作系統(tǒng)、第二
4操作系統(tǒng)或第三操作系統(tǒng)后,將設(shè)備類型標(biāo)識置為第一設(shè)備類型、第二設(shè)備類型或第三設(shè) 備類型。所述步驟D還包括所述USB設(shè)備判斷當(dāng)前設(shè)備類型標(biāo)識是否與默認(rèn)設(shè)備類型標(biāo) 識相同,如果相同,則所述USB設(shè)備與主機(jī)通信,等待接收所述主機(jī)下發(fā)的指令;如果不相 同,所述USB設(shè)備進(jìn)行軟掉電處理,并將所述上電標(biāo)識置為第二預(yù)設(shè)值,執(zhí)行步驟A。所述初始化還包括將上電標(biāo)識初始化為第一預(yù)設(shè)值,將操作系統(tǒng)類型標(biāo)識初始 化為默認(rèn)操作系統(tǒng)類型標(biāo)識。所述方法還包括所述USB設(shè)備存儲有操作系統(tǒng)類型標(biāo)識與設(shè)備類型標(biāo)識的映射表。所述USB設(shè)備判斷所述USB枚舉過程中返回的設(shè)備類型為所述USB設(shè)備根據(jù)默 認(rèn)操作系統(tǒng)類型標(biāo)識查找所述映射表得到相應(yīng)的設(shè)備類型標(biāo)識,根據(jù)所述查找所得的設(shè)備 類型標(biāo)識來判斷所述返回的設(shè)備類型。所述方法還包括所述USB設(shè)備判定出主機(jī)操作系統(tǒng)類型是第一操作系統(tǒng)、第二 操作系統(tǒng)或第三操作系統(tǒng)后,將操作系統(tǒng)類型標(biāo)識置為第一預(yù)設(shè)標(biāo)識、第二預(yù)設(shè)標(biāo)識或第 三預(yù)設(shè)標(biāo)識。所述步驟D還包括所述USB設(shè)備判斷當(dāng)前操作系統(tǒng)類型標(biāo)識是否與所述默認(rèn)操 作系統(tǒng)類型標(biāo)識相同,如果相同,則所述USB設(shè)備與主機(jī)建立通信,并等待接收所述主機(jī)下 發(fā)的指令;如果不相同,所述USB設(shè)備進(jìn)行軟掉電處理,并將所述上電標(biāo)識置為第二預(yù)設(shè) 值,執(zhí)行步驟A。在所述步驟A之后,所述方法還包括判斷所述USB設(shè)備是否是首次上電,如果是 首次上電,則執(zhí)行步驟B ;如果不是,所述USB設(shè)備執(zhí)行步驟D。判斷所述USB設(shè)備是否是首次上電具體為判斷上電標(biāo)識是否是第一預(yù)設(shè)值,如 果是,則所述USB設(shè)備是首次上電,如果不是,則所述USB設(shè)備不是首次上電;所述USB設(shè)備向所述主機(jī)返回的設(shè)備類型還包括HID設(shè)備。所述第一預(yù)設(shè)命令為取設(shè)備配置描述符命令;所述第二預(yù)設(shè)命令為取設(shè)備狀態(tài)指 令;所述第二條SCSI指令為取設(shè)備信息指令。所述USB設(shè)備判斷接收到的第二條SCSI指令是第三預(yù)設(shè)命令還是第四預(yù)設(shè)命令 為所述USB設(shè)備根據(jù)所述第二條SCSI指令的命令域的內(nèi)容進(jìn)行判斷,當(dāng)所述第二條SCSI 指令的命令域內(nèi)容是第一預(yù)設(shè)內(nèi)容時,所述第二條指令是所述第三預(yù)設(shè)命令;當(dāng)所述第二 條SCSI指令的命令域內(nèi)容是第二預(yù)設(shè)內(nèi)容時,所述第二條指令是所述第四預(yù)設(shè)命令。所述第一操作系統(tǒng)為Windows XP,所述第二操作系統(tǒng)為Windows 7,所述第三操作 系統(tǒng)為 Windows Vista。有益效果USB設(shè)備通過分析接收到的由主機(jī)下發(fā)的指令,便可以確定主機(jī) Windows操作系統(tǒng)版本類型,并在確定主機(jī)Windows操作系統(tǒng)版本類型后,向不同版本的主 機(jī)操作系統(tǒng)暴露不同的USB屬性,以便更好的和主機(jī)操作系統(tǒng)配合工作。


圖1為本發(fā)明實(shí)施例1提供的一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型 的方法流程圖2為本發(fā)明實(shí)施例2提供的一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型 的方法流程圖;圖3為本發(fā)明實(shí)施例3提供的一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型 的方法流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方 式作進(jìn)一步地詳細(xì)描述。在進(jìn)行具體說明之前,對USB設(shè)備與主機(jī)之間的通信原理進(jìn)行簡單的說明,如下USB設(shè)備與主機(jī)之間的通信是由主機(jī)發(fā)送命令給USB設(shè)備,USB設(shè)備對接收到的 命令進(jìn)行響應(yīng),USB設(shè)備與主機(jī)之間通信的基本單位是“包”,其中,“包”的分類主要有令 牌包、數(shù)據(jù)包和握手包,由PID來決定包的具體類型。其中,令牌包的格式為SYNC+PID+ADDR+ENDP+CRC ;數(shù)據(jù)包分為DATAO包和DATAl 包,在USB設(shè)備返回的數(shù)據(jù)長度超過相應(yīng)端點(diǎn)的最大輸出數(shù)據(jù)包長度時,需要將返回的數(shù) 據(jù)分批發(fā)送,一般情況下,DATAO包和DATAl包交替發(fā)送;握手包的格式為SYNC+PID。其中,USB設(shè)備與主機(jī)之間通過設(shè)備端點(diǎn)來進(jìn)行數(shù)據(jù)的收發(fā)。例如PID=SETUP ADDR 00 ENDP 00 CRC5 02 idle 3PID=DATAO data 80 06 00 01 00 00 40 00 CRC16 :94dd idle 7PID :ACK idle :2ela上述命令說明,該包為SETUP包,數(shù)據(jù)內(nèi)容是80 06 00 01 00 00 40 00,握手包 為ACK ;其中,SETUP包由主機(jī)下發(fā),USB設(shè)備接收到該SETUP包后向主機(jī)返回應(yīng)答信息,例 如PID :IN ADDR 00 ENDP 00 CRC5 02 idle 7PID =DATAl data 12 01 10 01 00 00 00 08 CRC16 :7711 idle 7PID :ACK idle :2el6PID :0UT ADDR 00 ENDP 00 CRC5 02 idle 3PID DATAl data :CRC16 0000 idle 7PID :ACK idle :2e5aUSB設(shè)備向主機(jī)返回的應(yīng)答數(shù)據(jù)是12 01 10 01 00 00 00 08,需要說明的是,
USB設(shè)備在接收到主機(jī)下發(fā)的IN或OUT的令牌包后,向主機(jī)返回應(yīng)答數(shù)據(jù);這樣,USB設(shè)備與主機(jī)之間便完成了一次信息交互,而每一次的信息交互,都是由 接收到主機(jī)下發(fā)的SETUP包開始的。另外,還需要說明的是,根據(jù)USB設(shè)備與主機(jī)間進(jìn)行數(shù)據(jù)通信時采用的通信協(xié)議 (CCID、SCSI或HID協(xié)議)的不同,USB設(shè)備又可以分為CCID設(shè)備、SCSI設(shè)備和HID設(shè)備。實(shí)施例1本實(shí)施例提供了一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型的方法, Windows操作系統(tǒng)版本類型是根據(jù)內(nèi)核的不同進(jìn)行劃分的,以Windows XP.ffindows Vista、 Windows 7為代表進(jìn)行說明。參見圖1,具體方法如下
101、USB設(shè)備上電,并進(jìn)行初始化;其中,USB設(shè)備具體包括安全設(shè)備(如USB Key)、讀卡器等;具體地,USB設(shè)備通過USB總線連接到主機(jī),并從主機(jī)Vcc (電源電壓或工作電壓) 處獲取工作電壓;初始化操作具體包括USB設(shè)備將自身存儲的上電標(biāo)識、操作系統(tǒng)標(biāo)識初始化為 默認(rèn)標(biāo)識;具體地,默認(rèn)上電標(biāo)識為第一預(yù)設(shè)值,默認(rèn)操作系統(tǒng)標(biāo)識可以是第一預(yù)設(shè)標(biāo)識、第 二預(yù)設(shè)標(biāo)識或第三預(yù)設(shè)標(biāo)識中的一個;其中,第一預(yù)設(shè)標(biāo)識對應(yīng)第一操作系統(tǒng)、第二預(yù)設(shè)標(biāo)識對應(yīng)第二操作系統(tǒng)、第三預(yù) 設(shè)標(biāo)識對應(yīng)第三操作系統(tǒng);需要說明的是,主機(jī)操作系統(tǒng)時刻監(jiān)測USB總線上是否有設(shè)備接入,具體是通過 檢測Vcc上拉電阻的變化來確定的,并在檢測到USB設(shè)備接入時,加載設(shè)備總線驅(qū)動,開始 對USB設(shè)備進(jìn)行枚舉操作,具體如102至106所示。102、USB設(shè)備總線復(fù)位;需要說明的是,USB設(shè)備總線復(fù)位后,該USB設(shè)備的默認(rèn)地址0被使能,接下來,USB 設(shè)備與主機(jī)之間通過地址0來傳輸命令及數(shù)據(jù)。103、USB設(shè)備判斷自身是否是首次上電,如果不是,執(zhí)行104,如果是,執(zhí)行105 ;判斷USB設(shè)備是否是首次上電具體為判斷上電標(biāo)識是否為第一預(yù)設(shè)值,如果是, 則USB設(shè)備為首次上電,否則,不是首次上電。104、USB設(shè)備按照當(dāng)前操作系統(tǒng)標(biāo)識完成枚舉,并與主機(jī)建立通信,等待接收主機(jī) 下發(fā)的指令;105、USB設(shè)備接收主機(jī)下發(fā)的一系列setup包,按照默認(rèn)操作系統(tǒng)標(biāo)識完成USB枚 舉;具體地,默認(rèn)操作系統(tǒng)標(biāo)識所對應(yīng)的主機(jī)操作系統(tǒng)向USB設(shè)備下發(fā)一系列的 setup包,對USB設(shè)備進(jìn)行枚舉,以獲取USB設(shè)備的描述信息;USB設(shè)備接收主機(jī)下發(fā)的一系列setup包,包括“取設(shè)備描述符”、“設(shè)置設(shè)備地 址”、“取配置描述符”、“取端點(diǎn)描述符”、“取字符串描述符”、“取端點(diǎn)描述符” “選擇配置”等 命令,USB設(shè)備逐一對其做出響應(yīng)。106,USB設(shè)備判斷USB枚舉過程中是否存在第一預(yù)設(shè)命令,如果存在,執(zhí)行107,如 果不存在,執(zhí)行108;具體地,第一預(yù)設(shè)命令為取配置描述符命令;具體地,取配置描述符命令為80 06 00 02 00 00 09 00。107、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第一操作系統(tǒng),并將操作系統(tǒng)標(biāo)識置為第一預(yù) 設(shè)標(biāo)識,執(zhí)行116 ;具體地,第一操作系統(tǒng)是Windows XP;108、USB設(shè)備根據(jù)默認(rèn)操作系統(tǒng)標(biāo)識來判斷USB枚舉過程中返回的設(shè)備類型是 CCID設(shè)備、SCSI設(shè)備和HID設(shè)備的哪一種,如果是CCID設(shè)備,執(zhí)行109 ;如果是SCSI設(shè)備,執(zhí)行112 ;
7
如果是HID設(shè)備,執(zhí)行115 ;具體地,在USB枚舉過程中,USB設(shè)備接收到主機(jī)下發(fā)的“取設(shè)備描述符”信息后, 在操作系統(tǒng)標(biāo)識與設(shè)備類型標(biāo)識的映射表中,查找操作系統(tǒng)標(biāo)識所對應(yīng)的設(shè)備類型,并將 查找所得的設(shè)備類型返回給主機(jī)。其中,操作系統(tǒng)標(biāo)識與設(shè)備類型標(biāo)識的映射表是預(yù)先設(shè)定,并存儲在USB設(shè)備中 的;這樣,USB設(shè)備在判斷返回的設(shè)備類型時,就可以通過操作系統(tǒng)標(biāo)識與設(shè)備類型標(biāo) 識的映射表,根據(jù)操作系統(tǒng)標(biāo)識來確認(rèn)設(shè)備類型了 ;例如,第一預(yù)設(shè)標(biāo)識映射CCID設(shè)備標(biāo)識、第二預(yù)設(shè)標(biāo)識映射SCSI設(shè)備標(biāo)識、第三 預(yù)設(shè)標(biāo)識映射HID設(shè)備標(biāo)識,則,當(dāng)操作系統(tǒng)標(biāo)識是第一預(yù)設(shè)標(biāo)識時,USB設(shè)備便根據(jù)該標(biāo) 識知道返回的設(shè)備類型是CCID設(shè)備。109、USB設(shè)備接收主機(jī)CCID驅(qū)動程序下發(fā)的CCID命令,并判斷接收到的命令中 是否存在第二預(yù)設(shè)命令,如果不存在,執(zhí)行110,如果存在,執(zhí)行111 ;之前,主機(jī)在接收到USB設(shè)備返回的自身是CCID設(shè)備的信息后,裝載相應(yīng)的CCID 驅(qū)動,USB設(shè)備與主機(jī)之間建立通信,等待接收CCID驅(qū)動程序下發(fā)的命令。具體地,第二預(yù)設(shè)命令是取設(shè)備狀態(tài)命令;具體地,取設(shè)備狀態(tài)命令是80 00 00 00 00 00 02 00。110、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)為第三操作系統(tǒng),并將當(dāng)前操作系統(tǒng)標(biāo)識置為第 三預(yù)設(shè)標(biāo)識,執(zhí)行116;具體地,第三操作系統(tǒng)是Windows Vista。111、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第二操作系統(tǒng),并將當(dāng)前操作系統(tǒng)標(biāo)識置為第 二預(yù)設(shè)標(biāo)識,執(zhí)行116;具體地,第二操作系統(tǒng)是Windows 7。112、USB設(shè)備接收SCSI驅(qū)動程序下發(fā)的SCSI指令,并判斷接收到的第二條SCSI 指令是第三預(yù)設(shè)命令還是第四預(yù)設(shè)命令,如果是第三預(yù)設(shè)命令,執(zhí)行113,如果是第四預(yù)設(shè) 命令,執(zhí)行114;之前,主機(jī)在接收到USB設(shè)備返回的自身是SCSI設(shè)備的信息后,裝載相應(yīng)的SCSI 驅(qū)動,USB設(shè)備與主機(jī)之間建立通信,等待接收SCSI驅(qū)動程序下發(fā)的命令。具體地,第二條SCSI指令是取設(shè)備信息指令(Inquiry指令),用于查詢設(shè)備信 息;具體地,當(dāng)Inquiry指令的CBWCB域的數(shù)值是第一預(yù)設(shè)內(nèi)容時,第二條SCSI指令 是第三預(yù)設(shè)命令,當(dāng)Inquiry指令的CBWCB域的數(shù)值是第二預(yù)設(shè)內(nèi)容時,第二條SCSI指令 是第四預(yù)設(shè)命令;其中,CBffCB域是由設(shè)備執(zhí)行的命令,由設(shè)備解釋;其中,第一預(yù)設(shè)內(nèi)容為12 00 00 00 24 00 ;其中,第二預(yù)設(shè)內(nèi)容為12 01 80 00 ff 00 ;具體地,第三預(yù)設(shè)命令為55 53 42 43 b0 f8 82 91 ff 00 00 00 80 00 06 12 00 0000 24 00 00 00 00 00 00 00 00 00 00 00 ;具體地,第四預(yù)設(shè)命令為55 53 42 43 b0 f8 82 91 ff 00 00 00 80 00 06 1201 8000 ff 00 00 00 00 00 00 00 00 00 00 00。113、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第二操作系統(tǒng),并將當(dāng)前操作系統(tǒng)標(biāo)識置為第 二預(yù)設(shè)標(biāo)識,執(zhí)行116具體地,第二操作系統(tǒng)是Windows 7。114、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第三操作系統(tǒng),并將當(dāng)前操作系標(biāo)識置為第三 預(yù)設(shè)標(biāo)識,執(zhí)行116 ;具體地,第三操作系統(tǒng)是Windows Vista。115、USB設(shè)備等待接收HID驅(qū)動程序下發(fā)的指令;116、USB設(shè)備判斷當(dāng)前操作系統(tǒng)標(biāo)識是否與默認(rèn)操作系統(tǒng)標(biāo)識一致,如果不一致, 執(zhí)行117,否則,執(zhí)行118 ;117、USB設(shè)備進(jìn)行軟掉電處理,并將上電標(biāo)識置為第二預(yù)設(shè)值,返回102 ;在對軟掉電處理進(jìn)行說明之前,需要知道是,USB設(shè)備通過改變主機(jī)Vcc (電源電 壓或工作電壓)的上拉電阻狀態(tài)來告知主機(jī)自身的插拔狀態(tài),USB設(shè)備內(nèi)部集成有上拉電 阻,默認(rèn)狀態(tài)下是不與Vcc相連的,當(dāng)USB設(shè)備與主機(jī)建立連接時,USB設(shè)備內(nèi)部的上拉電 阻連接到Vcc上,這樣主機(jī)便可以通過檢測Vcc上的上拉電阻的變化來確定是否有USB設(shè) 備連入了 ;軟掉電處理具體是指USB設(shè)備斷開內(nèi)部上拉電阻與Vcc的連接,這樣,主機(jī)操作 系統(tǒng)將會監(jiān)控到USB設(shè)備是拔出狀態(tài),但USB設(shè)備是與Vcc相連的,依然可以從Vcc處獲取 電源,USB設(shè)備依然是處于上電狀態(tài)的,斷開預(yù)定時間后(極短的時間),USB設(shè)備內(nèi)部的上 拉電阻將再次連到Vcc,主機(jī)操作系統(tǒng)將再次監(jiān)控到USB設(shè)備的插入,重新開始進(jìn)行枚舉操 作,即USB設(shè)備返回執(zhí)行102;這里,進(jìn)行軟掉電處理的目的是由上述流程知道,在判斷出具體的操作系統(tǒng)之 前,USB設(shè)備已經(jīng)完成了 USB枚舉,并且是按照默認(rèn)操作系統(tǒng)標(biāo)識返回的設(shè)備信息(設(shè)備類 型等),這樣就會錯誤產(chǎn)生,如,默認(rèn)操作系統(tǒng)是第二操作系統(tǒng),即Windows 7,則在枚舉過 程中返回的設(shè)備類型為SCSI設(shè)備,但是,在判斷出操作系統(tǒng)是Windows XP時,實(shí)際上應(yīng)該 向主機(jī)返回的設(shè)備類型是CCID設(shè)備,但是,卻按默認(rèn)操作系統(tǒng)標(biāo)識返回了 SCSI設(shè)備,所以, 需要進(jìn)行軟掉電,按照已修改的操作系統(tǒng)標(biāo)識從新進(jìn)行枚舉,返回正確的設(shè)備信息,并且標(biāo) 識了主機(jī)正確的操作系統(tǒng)類型。118、USB設(shè)備繼續(xù)與主機(jī)進(jìn)行通信;實(shí)施例2本實(shí)施例提供了一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型的方法, Windows操作系統(tǒng)類型是根據(jù)內(nèi)核的不同進(jìn)行劃分的,以Windows XP, Windows Vista、 Windows 7為代表進(jìn)行說明。參見圖2,具體方法如下201、USB設(shè)備上電,并進(jìn)行初始化;具體地,USB設(shè)備通過USB總線連接到主機(jī),并從主機(jī)Vcc (電源電壓或工作電壓) 處獲取工作電壓;初始化操作具體包括USB設(shè)備將設(shè)備類型標(biāo)識初始化為默認(rèn)標(biāo)識;需要說明的是,主機(jī)操作系統(tǒng)時刻監(jiān)測USB總線上是否有設(shè)備接入,具體是通過 檢測Vcc上拉電阻的變化來確定的,當(dāng)主機(jī)檢測到USB設(shè)備接入時,加載設(shè)備總線驅(qū)動,開始對USB設(shè)備進(jìn)行枚舉操作。202、USB設(shè)備總線復(fù)位;需要說明的是,USB設(shè)備總線復(fù)位后,該USB設(shè)備的默認(rèn)地址0被使能,則接下來 USB設(shè)備與主機(jī)之間便通過地址0來傳輸命令及數(shù)據(jù)。203、USB設(shè)備接收主機(jī)下發(fā)的一系列setup包,按照默認(rèn)設(shè)備類型完成USB枚舉。USB設(shè)備接收主機(jī)下發(fā)的一系列setup包,具體包括“取設(shè)備描述符”、“設(shè)置設(shè)備 地址”、“取配置描述符”、“取端點(diǎn)描述符”、“取接口描述符”、“取端點(diǎn)描述符” “選擇配置” 等,USB設(shè)備逐一對其做出響應(yīng),完成USB枚舉。需要說明的是,USB設(shè)備在枚舉階段,接收到主機(jī)下發(fā)的“取設(shè)備描述符”命令后, 將默認(rèn)設(shè)備類型標(biāo)識返回給主機(jī),告知主機(jī)自身的設(shè)備類型。204,USB設(shè)備判斷USB枚舉過程中是否存在第一預(yù)設(shè)命令,如果存在,執(zhí)行205,否 則,執(zhí)行206 ;具體地,第一預(yù)設(shè)命令為取配置描述符命令;具體地,取配置描述符命令為80 06 00 02 00 00 09 00。205.USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第一操作系統(tǒng),與主機(jī)建立通信,并等待接收主 機(jī)第一操作系統(tǒng)下發(fā)的指令,返回相應(yīng)的數(shù)據(jù);具體地,主機(jī)第一操作系統(tǒng)按照默認(rèn)設(shè)備類型加載相應(yīng)的驅(qū)動,與USB設(shè)備建立 通信,等待接收主機(jī)第一操作系統(tǒng)下發(fā)的指令;具體地,第一操作系統(tǒng)為Windows XP。206、USB設(shè)備判斷默認(rèn)設(shè)備類型標(biāo)識是CCID設(shè)備、SCSI設(shè)備和HID設(shè)備的哪一 種,如果是CCID設(shè)備,執(zhí)行207 ;如果是SCSI設(shè)備,執(zhí)行210 ;如果是HID設(shè)備,執(zhí)行213 ;設(shè)備類型標(biāo)識標(biāo)識了那種設(shè)備類型是預(yù)先約定的,USB設(shè)備根據(jù)預(yù)先約定的設(shè)備 類型標(biāo)識就可以判斷出設(shè)備類型,例如,設(shè)備類型標(biāo)識0標(biāo)識了 CCID設(shè)備,設(shè)備類型1標(biāo)識 了 SCSI設(shè)備,設(shè)備類型2標(biāo)識了 HID設(shè)備。207、USB設(shè)備接收主機(jī)CCID驅(qū)動程序下發(fā)的CCID命令,并判斷接收到的命令中 是否存在第二預(yù)設(shè)命令,如果不存在,執(zhí)行208,如果存在,執(zhí)行209 ;之前,主機(jī)在接收到USB設(shè)備返回的自身是CCID設(shè)備的信息后,裝載相應(yīng)的CCID 驅(qū)動,USB設(shè)備與主機(jī)之間建立通信,等待接收CCID驅(qū)動程序下發(fā)的命令。具體地,第二預(yù)設(shè)命令是取設(shè)備狀態(tài)命令;具體地,取設(shè)備狀態(tài)命令是80 00 00 00 00 00 02 00。208、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)為第三操作系統(tǒng),等待接收主機(jī)第三操作系統(tǒng)下 發(fā)的指令,返回相應(yīng)的數(shù)據(jù);具體地,第三操作系統(tǒng)是Windows Vista。209、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第二操作系統(tǒng),等待接收主機(jī)第二操作系統(tǒng)下 發(fā)的指令,返回相應(yīng)的數(shù)據(jù);具體地,第二操作系統(tǒng)是Windows 7。
10
210、USB設(shè)備接收SCSI驅(qū)動程序下發(fā)的SCSI指令,并判斷接收到的第二條SCSI 指令是第三預(yù)設(shè)命令還是第四預(yù)設(shè)命令,如果是第三預(yù)設(shè)命令,執(zhí)行211,如果是第四預(yù)設(shè) 命令,執(zhí)行212 ;之前,主機(jī)在接收到USB設(shè)備返回的自身是SCSI設(shè)備的信息后,裝載相應(yīng)的SCSI 驅(qū)動,USB設(shè)備與主機(jī)之間建立通信,等待接收SCSI驅(qū)動程序下發(fā)的命令。具體地,第二條SCSI指令是取設(shè)備信息指令(Inquiry指令),用于查詢設(shè)備信 息;具體地,當(dāng)Inquiry指令的CBWCB域的數(shù)值是第一預(yù)設(shè)內(nèi)容時,第二條SCSI指令 是第三預(yù)設(shè)命令,當(dāng)Inquiry指令的CBWCB域的數(shù)值是第二預(yù)設(shè)內(nèi)容時,第二條SCSI指令 是第四預(yù)設(shè)命令;其中,CBffCB域是由設(shè)備執(zhí)行的命令,由設(shè)備解釋;其中,第一預(yù)設(shè)內(nèi)容為12 00 00 00 24 00 ;其中,第二預(yù)設(shè)內(nèi)容為12 01 80 00 ff 00 ;具體地,第三預(yù)設(shè)命令為55 53 42 43 b0 f8 82 91 ff 00 00 00 80 00 06 12
000000 24 00 00 00 00 00 00 00 00 00 00 00 ;具體地,第四預(yù)設(shè)命令為55 53 42 43 b0 f8 82 91 ff 00 00 00 80 00 06 12
018000 ff 00 00 00 00 00 00 00 00 00 00 00。211、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第二操作系統(tǒng),等待接收主機(jī)第二操作系統(tǒng)下 發(fā)的指令,返回相應(yīng)的數(shù)據(jù);具體地,第二操作系統(tǒng)是Windows 7。212、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第三操作系統(tǒng),等待接收主機(jī)第三操作系統(tǒng)下 發(fā)的指令,返回相應(yīng)的數(shù)據(jù);具體地,第三操作系統(tǒng)是Windows Vista。213、USB設(shè)備等待接收HID驅(qū)動程序下發(fā)的指令;需要說明的是,USB設(shè)備在接收到主機(jī)操作系統(tǒng)下發(fā)的讀取光盤內(nèi)容的指令時, USB設(shè)備將會根據(jù)所認(rèn)定的操作系統(tǒng)類型,向主機(jī)返回不同的數(shù)據(jù),以SCSI設(shè)備判斷第一、 第二、第三操作系統(tǒng)后,接收到主機(jī)下發(fā)的讀取光盤內(nèi)容的標(biāo)準(zhǔn)SCSI指令,具體為55 53 42 43 b0 94 f0 85 00 08 00 00 080 00 Oa 28 00 0000 00 11 00 00 01 00 00 00 00
0000 00 ;SCSI設(shè)備在認(rèn)定主機(jī)是第一操作系統(tǒng)時,返回的數(shù)據(jù)為02 43 44 30 30 31
0100 00 57 00 69 00 6e 00 33 00 32 00 20 00 2000 20 00 20 00 20 00 20 00 20 ; SCSI設(shè)備在認(rèn)定主機(jī)是第二操作系統(tǒng)時,返回的數(shù)據(jù)為00 43 44 30 30 31 01 00 00 57 00 69 00 6e 00 33 00 32 00 20 00 20 00 2000 20 00 20 00 20 00 20 ;SCSI 設(shè)備 在認(rèn)定主機(jī)是第三操作系統(tǒng)時,返回的數(shù)據(jù)為05 43 44 30 30 31 01 00 00 57 00 69 00 6e 00 33 00 32 00 20 00 20 00 20 00 20 0020 00 20 00 20。實(shí)施例3本實(shí)施例提供了一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型的方法, Windows操作系統(tǒng)類型是根據(jù)內(nèi)核的不同進(jìn)行劃分的,以Windows XP, Windows Vista、 Windows 7為代表進(jìn)行說明。參見圖3,具體方法如下在進(jìn)行具體說明之前,需要知道的是,USB設(shè)備內(nèi)部存儲有操作系統(tǒng)標(biāo)識與設(shè)備類型標(biāo)識的映射表,該映射表是預(yù)先設(shè)定的。本實(shí)施例中,第一預(yù)設(shè)標(biāo)識映射到第一設(shè)備 標(biāo)識,第二預(yù)設(shè)標(biāo)識映射到第二設(shè)備標(biāo)識,第三預(yù)設(shè)標(biāo)識映射到第三設(shè)備標(biāo)識;具體地,第 一預(yù)設(shè)標(biāo)識對應(yīng)第一操作系統(tǒng),第二預(yù)設(shè)標(biāo)識對應(yīng)第二操作系統(tǒng),第三預(yù)設(shè)標(biāo)識對應(yīng)第三 操作系統(tǒng);第一設(shè)備標(biāo)識對應(yīng)CCID設(shè)備,第二設(shè)備標(biāo)識對應(yīng)SCSI設(shè)備,第三設(shè)備標(biāo)識對應(yīng) HID設(shè)備。301、USB設(shè)備上電,并進(jìn)行初始化;具體地,USB設(shè)備通過USB總線連接到主機(jī),并從主機(jī)Vcc (電源電壓或工作電壓) 處獲取工作電壓;初始化操作具體包括USB設(shè)備將上電標(biāo)識、設(shè)備類型標(biāo)識初始化為默認(rèn)標(biāo)識;具體地,將上電標(biāo)識初始化為第一預(yù)設(shè)值,默認(rèn)設(shè)備類型標(biāo)識可以是第一設(shè)備標(biāo) 識、第二設(shè)備標(biāo)識或第三設(shè)備標(biāo)識中的一個;需要說明的是,主機(jī)操作系統(tǒng)時刻監(jiān)測USB總線上是否有設(shè)備接入,具體是通過 檢測Vcc上拉電阻的變化來確定的,當(dāng)主機(jī)檢測到USB設(shè)備接入時,加載設(shè)備總線驅(qū)動,開 始對USB設(shè)備進(jìn)行枚舉操作。302、USB設(shè)備總線復(fù)位;需要說明的是,USB設(shè)備總線復(fù)位后,該USB設(shè)備的默認(rèn)地址0被使能,則接下來 USB設(shè)備與主機(jī)之間便通過地址0來傳輸命令及數(shù)據(jù)。303、USB設(shè)備判斷自身是否是首次上電,如果不是,執(zhí)行304,如果是,執(zhí)行305 ;判斷USB設(shè)備是否是首次上電具體為判斷上電標(biāo)識位是否為第一預(yù)設(shè)值,如果 是,則USB設(shè)備為首次上電,否則,不是首次上電;304、USB設(shè)備按照當(dāng)前設(shè)備類型標(biāo)識完成枚舉,并與主機(jī)建立通信,等待接收主機(jī) 下發(fā)的指令;305、USB設(shè)備接收主機(jī)下發(fā)的一系列setup包,完成USB枚舉;USB設(shè)備接收主機(jī)下發(fā)的一系列setup包,具體包括“取設(shè)備描述符”、“設(shè)置設(shè)備 地址”、“取配置描述符”、“取端點(diǎn)描述符”、“取字符串描述符”、“取端點(diǎn)描述符” “選擇配置” 等命令,USB設(shè)備逐一對其做出響應(yīng);306,USB設(shè)備判斷USB枚舉過程中是否存在第一預(yù)設(shè)命令,如果存在,執(zhí)行307,如 果不存在,執(zhí)行308;具體地,第一預(yù)設(shè)命令為取配置描述符命令;具體地,取配置描述符命令為80 06 00 02 00 00 09 00。307、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第一操作系統(tǒng),并將設(shè)備類型標(biāo)識置為第一設(shè) 備標(biāo)識,執(zhí)行316 ;具體地,第一操作系統(tǒng)是Windows XP;308,USB設(shè)備根據(jù)設(shè)備類型標(biāo)識判斷USB設(shè)備是CCID設(shè)備、SCSI設(shè)備和HID設(shè)備 的哪一種,如果是CCID設(shè)備,執(zhí)行309 ;如果是SCSI設(shè)備,執(zhí)行312 ;如果是HID設(shè)備,執(zhí)行315 ;309、USB設(shè)備接收主機(jī)CCID驅(qū)動程序下發(fā)的CCID命令,并判斷接收到的命令中
12是否存在第二預(yù)設(shè)命令,如果不存在,執(zhí)行310,如果存在,執(zhí)行311 ;之前,主機(jī)在接收到USB設(shè)備返回的自身是CCID設(shè)備的信息后,裝載相應(yīng)的CCID 驅(qū)動,USB設(shè)備與主機(jī)之間建立通信,等待接收CCID驅(qū)動程序下發(fā)的命令。具體地,第二預(yù)設(shè)命令是取設(shè)備狀態(tài)命令;具體地,取設(shè)備狀態(tài)命令是80 00 00 00 00 00 02 00。310、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)為第三操作系統(tǒng),并將當(dāng)前設(shè)備類型標(biāo)識置為第 三設(shè)備標(biāo)識,執(zhí)行316 ;具體地,第三操作系統(tǒng)是Windows Vista。311、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第二操作系統(tǒng),并將當(dāng)前設(shè)備類型標(biāo)識置為第 二設(shè)備標(biāo)識,執(zhí)行316 ;具體地,第二操作系統(tǒng)是Windows 7。312、USB設(shè)備接收SCSI驅(qū)動程序下發(fā)的SCSI指令,并判斷接收到的第二條SCSI 指令是第三預(yù)設(shè)命令還是第四預(yù)設(shè)命令,如果是第三預(yù)設(shè)命令,執(zhí)行313,如果是第四預(yù)設(shè) 命令,執(zhí)行314;之前,主機(jī)在接收到USB設(shè)備返回的自身是SCSI設(shè)備的信息后,裝載相應(yīng)的SCSI 驅(qū)動,USB設(shè)備與主機(jī)之間建立通信,等待接收SCSI驅(qū)動程序下發(fā)的命令。具體地,第二條SCSI指令是取設(shè)備信息指令(Inquiry指令),用于查詢設(shè)備信 息;具體地,當(dāng)Inquiry指令的CBWCB域(命令域)的數(shù)值是第一預(yù)設(shè)內(nèi)容時,第二條 SCSI指令是第三預(yù)設(shè)命令,當(dāng)Inquiry指令的CBWCB域的數(shù)值是第二預(yù)設(shè)內(nèi)容時,第二條 SCSI指令是第四預(yù)設(shè)命令;其中,CBffCB域的內(nèi)容標(biāo)識的是由設(shè)備所執(zhí)行的命令,由設(shè)備解釋;其中,第一預(yù)設(shè)內(nèi)容為12 00 00 00 24 00 ;其中,第二預(yù)設(shè)內(nèi)容為12 01 80 00 ff 00 ;具體地,第三預(yù)設(shè)命令為55 53 42 43 b0 f8 82 91 ff 00 00 00 80 00 06 12
000000 24 00 00 00 00 00 00 00 00 00 00 00 ;具體地,第四預(yù)設(shè)命令為55 53 42 43 b0 f8 82 91 ff 00 00 00 80 00 06 12
018000 ff 00 00 00 00 00 00 00 00 00 00 00 ;313、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第二操作系統(tǒng),并將當(dāng)前設(shè)備類型標(biāo)識置為第 二設(shè)備標(biāo)識,執(zhí)行316具體地,第二操作系統(tǒng)是Windows 7 ;314、USB設(shè)備認(rèn)定主機(jī)操作系統(tǒng)是第三操作系統(tǒng),并將當(dāng)前設(shè)備類型標(biāo)識置為第 三設(shè)備標(biāo)識,執(zhí)行316 ;具體地,第三操作系統(tǒng)是Windows vista ;315、USB設(shè)備等待接收HID驅(qū)動程序下發(fā)的指令;316、USB設(shè)備判斷當(dāng)前設(shè)備類型標(biāo)識是否與默認(rèn)設(shè)備類型標(biāo)識一致,如果不一致, 執(zhí)行317,否則,執(zhí)行318 ;317、USB設(shè)備進(jìn)行軟掉電處理,并將上電標(biāo)識置為第二預(yù)設(shè)值,返回302 ;這里,有關(guān)軟掉電的說明及具體的處理方式在步驟116中有詳細(xì)的說明,此處就不再贅述。這里,進(jìn)行軟掉電處理的目的是由上述流程知道,在判斷出具體的操作系統(tǒng)之 前,USB設(shè)備已經(jīng)完成了 USB枚舉,并且是按照默認(rèn)設(shè)備類型標(biāo)識返回的設(shè)備信息(設(shè)備 類型等),這樣就會錯誤產(chǎn)生,如,在枚舉階段向主機(jī)返回默認(rèn)的設(shè)備類型,該設(shè)備類型是 SCSI設(shè)備;但是,在判斷出操作系統(tǒng)是WindowsXP時,實(shí)際上應(yīng)該向主機(jī)返回的設(shè)備類型是 CCID設(shè)備,但是,卻按默認(rèn)設(shè)備類型標(biāo)識返回了 SCSI設(shè)備,所以,需要進(jìn)行軟掉電,按照已 修改的設(shè)備類型標(biāo)識重新進(jìn)行枚舉,返回正確的設(shè)備信息,即將設(shè)備類型切換為判斷出的 操作系統(tǒng)相對應(yīng)的正確的設(shè)備類型。318、USB設(shè)備繼續(xù)與主機(jī)進(jìn)行通信。上述實(shí)施例中,USB設(shè)備通過對主機(jī)下發(fā)的指令進(jìn)行分析,便可以確定主機(jī) Windows操作系統(tǒng)的版本類型,該判定方法無需額外的設(shè)備及軟件,簡單、方便、快捷,并在 確定主機(jī)Windows操作系統(tǒng)的版本類型后,向不同的主機(jī)操作系統(tǒng)暴露不同的USB屬性,另 外,USB設(shè)備通過設(shè)置操作系統(tǒng)標(biāo)識符或設(shè)備類型標(biāo)識符可以實(shí)現(xiàn)操作系統(tǒng)類型的切換或 設(shè)備類型的切換,以便更好的和主機(jī)操作系統(tǒng)配合工作。以上僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則 之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
1權(quán)利要求
一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型的方法,其特征在于,所述方法包括步驟A、USB設(shè)備上電,并進(jìn)行初始化;步驟B、所述USB設(shè)備進(jìn)行USB枚舉,并判斷所述USB枚舉過程中是否接收到第一預(yù)設(shè)命令,如果是,則判定主機(jī)操作系統(tǒng)為第一操作系統(tǒng),執(zhí)行步驟D,否則,執(zhí)行步驟C;步驟C、所述USB設(shè)備判斷所述USB枚舉過程中向主機(jī)返回的設(shè)備類型,當(dāng)所述USB設(shè)備向所述主機(jī)返回的設(shè)備類型是CCID設(shè)備時,所述USB設(shè)備判斷接收到的指令中是否存在第二預(yù)設(shè)命令,如果存在所述第二預(yù)設(shè)命令,則判定主機(jī)操作系統(tǒng)為第二操作系統(tǒng),如果不存在所述第二預(yù)設(shè)命令,則判定主機(jī)操作系統(tǒng)為第三操作系統(tǒng);當(dāng)所述USB設(shè)備向所述主機(jī)返回的設(shè)備類型是SCSI設(shè)備時,所述USB設(shè)備接收所述主機(jī)下發(fā)的SCSI指令,并判斷接收到的所述第二條SCSI指令是第三預(yù)設(shè)命令還是第四預(yù)設(shè)命令,如果是所述第三預(yù)設(shè)命令,則判定主機(jī)操作系統(tǒng)為第二操作系統(tǒng),如果是所述第四預(yù)設(shè)命令,則判定主機(jī)操作系統(tǒng)為第三操作系統(tǒng);步驟D、所述USB設(shè)備與主機(jī)建立通信,并等待接收所述主機(jī)下發(fā)的指令,根據(jù)所述判定出的主機(jī)操作系統(tǒng)類型向所述主機(jī)返回相應(yīng)的信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述初始化包括將設(shè)備類型標(biāo)識初始化 為默認(rèn)設(shè)備類型標(biāo)識。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述初始化還包括將上電標(biāo)識初始化為 第一預(yù)設(shè)值、設(shè)備類型標(biāo)識初始化為默認(rèn)設(shè)備類型標(biāo)識。
4.根據(jù)權(quán)利2或3所述的方法,其特征在于,所述USB設(shè)備判斷所述USB枚舉過程中向 主機(jī)返回的設(shè)備類型為所述USB設(shè)備根據(jù)所述USB枚舉過程中返回的設(shè)備類型標(biāo)識來判 斷所述返回的設(shè)備類型。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括所述USB設(shè)備判定出主 機(jī)操作系統(tǒng)類型是第一操作系統(tǒng)、第二操作系統(tǒng)或第三操作系統(tǒng)后,將設(shè)備類型標(biāo)識置為 第一設(shè)備類型、第二設(shè)備類型或第三設(shè)備類型。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟D還包括所述USB設(shè)備判斷當(dāng) 前設(shè)備類型標(biāo)識是否與默認(rèn)設(shè)備類型標(biāo)識相同,如果相同,則所述USB設(shè)備與主機(jī)通信,等 待接收所述主機(jī)下發(fā)的指令;如果不相同,所述USB設(shè)備進(jìn)行軟掉電處理,并將所述上電標(biāo) 識置為第二預(yù)設(shè)值,執(zhí)行步驟A。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述初始化還包括將上電標(biāo)識初始化為 第一預(yù)設(shè)值,將操作系統(tǒng)類型標(biāo)識初始化為默認(rèn)操作系統(tǒng)類型標(biāo)識。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括所述USB設(shè)備存儲有操 作系統(tǒng)類型標(biāo)識與設(shè)備類型標(biāo)識的映射表。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述USB設(shè)備判斷所述USB枚舉過程中返 回的設(shè)備類型為所述USB設(shè)備根據(jù)默認(rèn)操作系統(tǒng)類型標(biāo)識查找所述映射表得到相應(yīng)的設(shè) 備類型標(biāo)識,根據(jù)所述查找所得的設(shè)備類型標(biāo)識來判斷所述返回的設(shè)備類型。
10.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括所述USB設(shè)備判定出 主機(jī)操作系統(tǒng)類型是第一操作系統(tǒng)、第二操作系統(tǒng)或第三操作系統(tǒng)后,將操作系統(tǒng)類型標(biāo) 識置為第一預(yù)設(shè)標(biāo)識、第二預(yù)設(shè)標(biāo)識或第三預(yù)設(shè)標(biāo)識。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述步驟D還包括所述USB設(shè)備判斷 當(dāng)前操作系統(tǒng)類型標(biāo)識是否與所述默認(rèn)操作系統(tǒng)類型標(biāo)識相同,如果相同,則所述USB設(shè) 備與主機(jī)建立通信,并等待接收所述主機(jī)下發(fā)的指令;如果不相同,所述USB設(shè)備進(jìn)行軟掉 電處理,并將所述上電標(biāo)識置為第二預(yù)設(shè)值,執(zhí)行步驟A。
12.根據(jù)權(quán)利要求6或11所述的方法,其特征在于,在所述步驟A之后,所述方法還 包括判斷所述USB設(shè)備是否是首次上電,如果是首次上電,則執(zhí)行步驟B ;如果不是,所述 USB設(shè)備執(zhí)行步驟D。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,判斷所述USB設(shè)備是否是首次上電具體 為判斷上電標(biāo)識是否是第一預(yù)設(shè)值,如果是,則所述USB設(shè)備是首次上電,如果不是,則所 述USB設(shè)備不是首次上電。
14.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述USB設(shè)備向所述主機(jī)返回的設(shè)備類 型還包括HID設(shè)備。
15.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一預(yù)設(shè)命令為取設(shè)備配置描述符 命令;所述第二預(yù)設(shè)命令為取設(shè)備狀態(tài)指令;所述第二條SCSI指令為取設(shè)備信息指令。
16.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述USB設(shè)備判斷接收到的第二條SCSI 指令是第三預(yù)設(shè)命令還是第四預(yù)設(shè)命令為所述USB設(shè)備根據(jù)所述第二條SCSI指令的命令 域的內(nèi)容進(jìn)行判斷,當(dāng)所述第二條SCSI指令的命令域內(nèi)容是第一預(yù)設(shè)內(nèi)容時,所述第二條 指令是所述第三預(yù)設(shè)命令;當(dāng)所述第二條SCSI指令的命令域內(nèi)容是第二預(yù)設(shè)內(nèi)容時,所 述第二條指令是所述第四預(yù)設(shè)命令。
17.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一操作系統(tǒng)為WindowsXP,所述第 二操作系統(tǒng)為Windows 7,所述第三操作系統(tǒng)為Windows Vista。全文摘要
本發(fā)明提供了一種USB設(shè)備識別主機(jī)Windows操作系統(tǒng)版本類型的方法,屬于操作系統(tǒng)領(lǐng)域。包括A、USB設(shè)備上電,初始化;B、進(jìn)行USB枚舉,判斷USB枚舉過程中是否接收到第一預(yù)設(shè)命令,是,判定操作系統(tǒng)為第一操作系統(tǒng),執(zhí)行D,否則,執(zhí)行C;C、判斷USB枚舉過程中返回的設(shè)備類型,是CCID設(shè)備時,判斷接收到的指令中是否存在第二預(yù)設(shè)命令,存在,判定操作系統(tǒng)為第二操作系統(tǒng),不存在,判定操作系統(tǒng)為第三操作系統(tǒng);當(dāng)是SCSI設(shè)備時,判斷接收到的第二條SCSI指令是第三預(yù)設(shè)命令還是第四預(yù)設(shè)命令,是第三預(yù)設(shè)命令,判定操作系統(tǒng)為第二操作系統(tǒng),是第四預(yù)設(shè)命令,判定操作系統(tǒng)為第三操作系統(tǒng);D、與主機(jī)建立通信,并等待接收主機(jī)下發(fā)的指令,根據(jù)判定出的主機(jī)操作系統(tǒng)類型向主機(jī)返回相應(yīng)的信息。
文檔編號G06F13/42GK101957807SQ20101028544
公開日2011年1月26日 申請日期2010年9月16日 優(yōu)先權(quán)日2010年9月16日
發(fā)明者于華章, 陸舟 申請人:北京飛天誠信科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1