專(zhuān)利名稱(chēng):一種usb海量存儲(chǔ)設(shè)備上應(yīng)用程序與usb海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及一種USB海量存儲(chǔ)設(shè)備技術(shù)領(lǐng)域的一種上層應(yīng)用軟件與設(shè)備之間實(shí)現(xiàn)雙向數(shù)據(jù)通訊的方法。特別是一種有用戶(hù)登錄安全認(rèn)證和權(quán)限管理的操作系統(tǒng)如Windows2000、Windows XP以上版本,非授權(quán)用戶(hù)如何使應(yīng)用軟件程序?qū)SB海量存儲(chǔ)設(shè)備發(fā)送命令,從而實(shí)現(xiàn)USB海量存儲(chǔ)設(shè)備應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒ā?br>
背景技術(shù):
為便于本發(fā)明理解相關(guān)術(shù)語(yǔ)解釋如下1USB海量存儲(chǔ)設(shè)備一種支持USB海量存儲(chǔ)設(shè)備協(xié)議的可移動(dòng)海量存儲(chǔ)設(shè)備。如常見(jiàn)的閃存盤(pán)(USB Flash Disk),移動(dòng)硬盤(pán)(USB Hard Disk)等設(shè)備。
2.操作系統(tǒng)非授權(quán)用戶(hù)是指操作系統(tǒng)登錄用戶(hù)由于操作系統(tǒng)對(duì)用戶(hù)的默認(rèn)權(quán)限管理,使以其身份創(chuàng)建或者運(yùn)行的應(yīng)用程序軟件對(duì)系統(tǒng)設(shè)備沒(méi)有讀寫(xiě)或者寫(xiě)權(quán)限,從而不能通過(guò)操作系統(tǒng)提供的接口和方法實(shí)現(xiàn)與系統(tǒng)設(shè)備的命令交互和雙向數(shù)據(jù)傳輸。
3.SCSI是小型計(jì)算機(jī)系統(tǒng)接口(Small Computer System Interface)縮寫(xiě),是計(jì)算機(jī)邏輯塊設(shè)備與主機(jī)之間的命令控制和數(shù)據(jù)傳輸協(xié)議。
4.RBC是精簡(jiǎn)塊命令(Reduced Block Command)的英文縮寫(xiě),是精簡(jiǎn)的SCSI命令集,是計(jì)算機(jī)邏輯塊設(shè)備與主機(jī)之間的精簡(jiǎn)控制命令和數(shù)據(jù)傳輸協(xié)議。
5.WRITE10是精簡(jiǎn)塊命令集中主機(jī)對(duì)塊設(shè)備的寫(xiě)命令碼,為十六進(jìn)制0x2A。
6.READ10是精簡(jiǎn)塊命令集中主機(jī)對(duì)塊設(shè)備的讀命令碼,為十六進(jìn)制0x28。
7.LUN設(shè)備邏輯單元號(hào)。
8.LBA設(shè)備讀寫(xiě)的邏輯塊地址。
當(dāng)前,隨著USB海量存儲(chǔ)設(shè)備的普及,許多應(yīng)用需求也不斷與之結(jié)合起來(lái),以便于為應(yīng)用提供移動(dòng)性、便捷性和實(shí)用性等特點(diǎn)。如閃存盤(pán)(USBFlash Disk)就出現(xiàn)了需要許多特殊應(yīng)用。從理論上講,所有可移動(dòng)的USB海量存儲(chǔ)設(shè)備都可以開(kāi)發(fā)出各種特殊應(yīng)用。在USB海量存儲(chǔ)設(shè)備上開(kāi)發(fā)各種應(yīng)用程序時(shí),上層應(yīng)用軟件需要與在USB海量存儲(chǔ)設(shè)備之間進(jìn)行命令交互和數(shù)據(jù)傳輸,以便于應(yīng)用程序能夠正確和識(shí)別所支持的USB海量存儲(chǔ)設(shè)備。在各種操作系統(tǒng)上,系統(tǒng)都提供了基于USB海量存儲(chǔ)設(shè)備的通信通道,絕大多數(shù)操作系統(tǒng)都是采用SCSI命令協(xié)議去訪問(wèn)和控制USB海量存儲(chǔ)設(shè)備。比如在Windows 2000以上NT內(nèi)核平臺(tái)操作系統(tǒng),就是通過(guò)設(shè)備輸入、輸出控制接口訪問(wèn)設(shè)備的,只要命令協(xié)議是按照SCSI的RBC協(xié)議和格式定義,則協(xié)議定義的命令以及用戶(hù)自己定義的私有協(xié)議將都可以通過(guò)該命令通道發(fā)送給USB海量存儲(chǔ)設(shè)備,如閃存盤(pán)(USB Flash Disk)等邏輯塊設(shè)備。
在SCSI命令集中,WRITE10和READ10的命令碼分別為十六進(jìn)制0x2A和0x28,WRITE10的命令參數(shù)為設(shè)備邏輯單元號(hào)(LUN),設(shè)備讀寫(xiě)的邏輯塊地址(LBA),數(shù)據(jù)寫(xiě)入長(zhǎng)度。
當(dāng)USB海量存儲(chǔ)設(shè)備的主控芯片接受到WRITE10的SCSI命令時(shí),通過(guò)分析上述參數(shù)得到寫(xiě)入的邏輯塊地址(LBA)和設(shè)備邏輯單元號(hào)(LUN)以及數(shù)據(jù)長(zhǎng)度,然后從數(shù)據(jù)接收端口接收完數(shù)據(jù)后就向指定的地址寫(xiě)入該數(shù)據(jù)。如果數(shù)據(jù)長(zhǎng)度超過(guò)芯片一次能夠容納的長(zhǎng)度限制,則可以分批接收和寫(xiě)入。
READ10的命令參數(shù)與WRITE10一樣,也是設(shè)備邏輯單元號(hào)(LUN,設(shè)備讀寫(xiě)的邏輯塊地址(LBA),數(shù)據(jù)讀取長(zhǎng)度,當(dāng)USB可移動(dòng)海量存儲(chǔ)設(shè)備的主控芯片接受到READ10的SCSI命令時(shí),通過(guò)分析上述參數(shù)得到寫(xiě)入的設(shè)備讀寫(xiě)的邏輯塊地址(LBA)和設(shè)備邏輯單元號(hào)(LUN)以及數(shù)據(jù)長(zhǎng)度,然后向數(shù)據(jù)發(fā)送端口發(fā)送數(shù)據(jù),直到發(fā)送完指定的數(shù)據(jù)長(zhǎng)度。如果數(shù)據(jù)長(zhǎng)度超過(guò)芯片一次能夠容納的長(zhǎng)度限制,則可以分批發(fā)送。
盡管各種操作系統(tǒng)提供了上述相同或者相近的SCSI邏輯塊設(shè)備命令發(fā)送方式,但是對(duì)于具有用戶(hù)權(quán)限管理的安全操作系統(tǒng),如果應(yīng)用程序的創(chuàng)建或者運(yùn)行者如果沒(méi)有相關(guān)的設(shè)備訪問(wèn)權(quán)限,則通過(guò)這種方式是不行的。典型的是,在Windows2000以上的NT內(nèi)核操作系統(tǒng),如果要通過(guò)設(shè)備輸入輸出控制接口給邏輯塊設(shè)備發(fā)送命令,則需要該設(shè)備的讀寫(xiě)權(quán)限。但如果用戶(hù)是普通的來(lái)賓(Guest)或者普通組(User)用戶(hù),操作系統(tǒng)默認(rèn)是沒(méi)有授予對(duì)邏輯設(shè)備的讀寫(xiě)權(quán)限的,因此,需要管理員對(duì)這些用戶(hù)添加設(shè)備讀寫(xiě)權(quán)限,否則應(yīng)用程序?qū)υO(shè)備的訪問(wèn)將失敗。
隨著USB海量存儲(chǔ)設(shè)備的普及,其便捷性、移動(dòng)性和實(shí)用性得到廣大用戶(hù)和軟件廠商的青睞,各種基于這類(lèi)設(shè)備即插即用的應(yīng)用程序也不斷在增加。這類(lèi)應(yīng)用程序如果需要同設(shè)備之間進(jìn)行命令交互和數(shù)據(jù)傳輸,一般就需通過(guò)上述的RBC協(xié)議和SCSI命令通道。但如果給設(shè)備的使用者在登錄操作系統(tǒng)時(shí)是設(shè)備非授權(quán)讀寫(xiě)用戶(hù)或者非管理員用戶(hù),盡管通過(guò)操作系統(tǒng)的內(nèi)建程序菜單或者命令用戶(hù)能夠?qū)崿F(xiàn)對(duì)可移動(dòng)磁盤(pán)設(shè)備的數(shù)據(jù)文件存儲(chǔ),但是卻無(wú)法在第三方創(chuàng)建的應(yīng)用程序中發(fā)送SCSI命令控制和訪問(wèn)設(shè)備,因此也就不能夠正常運(yùn)行應(yīng)用程序,或者應(yīng)用程序功能受到一定限制。而系統(tǒng)登錄用戶(hù)是非管理員的情況是非常普遍的,如公共場(chǎng)所網(wǎng)吧、各大企業(yè)職員、政府工作部門(mén)使用的計(jì)算機(jī)操作系統(tǒng),網(wǎng)絡(luò)管理員為了保證操作系統(tǒng)的安全使用,僅提供普通用戶(hù)帳號(hào)給使用者。因此,USB海量存儲(chǔ)設(shè)備上的各種應(yīng)用程序需要解決非授權(quán)用戶(hù)下如何訪問(wèn)和控制設(shè)備是非常重要的,也是非常急迫的。目前,常見(jiàn)的解決辦法有以下幾種1編寫(xiě)專(zhuān)用的設(shè)備過(guò)濾驅(qū)動(dòng)或者系統(tǒng)后臺(tái)服務(wù)程序。該方法的缺點(diǎn)是驅(qū)動(dòng)或者服務(wù)程序必須先由能夠安裝系統(tǒng)驅(qū)動(dòng)或者服務(wù)程序權(quán)限的用戶(hù)如管理員安裝。因此,對(duì)于USB海量可移動(dòng)存儲(chǔ)設(shè)備上的應(yīng)用程序需要先由管理員等用戶(hù)安裝驅(qū)動(dòng)或者服務(wù)程序才能夠正常使用是不可接受的。
2先以管理員身份安裝其應(yīng)用程序,同時(shí)創(chuàng)建一個(gè)特殊用戶(hù)帳號(hào)。在非管理員用戶(hù)登錄時(shí),應(yīng)用程序仍然以該特殊用戶(hù)身份訪問(wèn)設(shè)備。這樣的缺點(diǎn)仍然比較明顯,對(duì)于USB這樣可移動(dòng)存儲(chǔ)設(shè)備上的應(yīng)用程序仍然做不到即插即用,對(duì)用戶(hù)是不方便的。
發(fā)明的內(nèi)容本發(fā)明的目的是提供一種方法基于USB海量存儲(chǔ)設(shè)備的應(yīng)用程序軟件在與設(shè)備進(jìn)行命令通訊時(shí),即使登錄用戶(hù)身份是對(duì)該設(shè)備無(wú)讀寫(xiě)權(quán)限的非管理員用戶(hù)也能夠通過(guò)該方法,實(shí)現(xiàn)控制命令的交互和雙向數(shù)據(jù)傳輸。也就是說(shuō),上層應(yīng)用軟件能夠通過(guò)該方法發(fā)送命令,實(shí)現(xiàn)向設(shè)備發(fā)送控制命令或者寫(xiě)入私有數(shù)據(jù),也可以從設(shè)備把相關(guān)數(shù)據(jù)讀取上來(lái)供應(yīng)用程序使用和分析。
本發(fā)明解決其技術(shù)問(wèn)題所采取的技術(shù)方案是USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?,是利用操作系統(tǒng)任何用戶(hù)通過(guò)通訊協(xié)議可在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)區(qū)創(chuàng)建新文件并可向其寫(xiě)入和讀取數(shù)據(jù)這一特性,在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建一個(gè)不可重復(fù)的新文件,然后把SCSI命令的參數(shù)和數(shù)據(jù)存放在新文件的寫(xiě)入命令數(shù)據(jù)緩沖區(qū)里,USB海量存儲(chǔ)設(shè)備的主控芯片應(yīng)用程序接收到新文件的寫(xiě)入的SCSI寫(xiě)命令WRITE10以及指定寫(xiě)入長(zhǎng)度的數(shù)據(jù)時(shí),分析寫(xiě)入的數(shù)據(jù)發(fā)現(xiàn)不是普通的數(shù)據(jù),而是含有規(guī)定格式的SCSI命令標(biāo)識(shí)以及參數(shù),則并不實(shí)際寫(xiě)入這些數(shù)據(jù),而是執(zhí)行其指定命令,如果命令執(zhí)行正確,則返回應(yīng)用層寫(xiě)入成功,否則返回錯(cuò)誤信息,應(yīng)用層在收到寫(xiě)入命令執(zhí)行完畢后立即刪除剛創(chuàng)建的文件,從USB海量存儲(chǔ)設(shè)備讀取數(shù)據(jù),則需要采用兩步才能夠?qū)崿F(xiàn),第一步是創(chuàng)建新文件,后向新文件寫(xiě)入含有命令的規(guī)定格式數(shù)據(jù),USB海量存儲(chǔ)設(shè)備的主控芯片軟件接收到此文件的SCSI命令WRITE10時(shí)通過(guò)分析發(fā)現(xiàn),是需要向上層返回?cái)?shù)據(jù)的特殊命令,因此將保留此WRITE10命令參數(shù)中設(shè)備邏輯單元號(hào)(LUN)和設(shè)備讀寫(xiě)的邏輯塊地址(LBA)并返回執(zhí)行完畢,第二步是上層應(yīng)用程序緊接著發(fā)送一個(gè)SCSI命令READ10,此命令必須確保該命令參數(shù)的設(shè)備邏輯單元號(hào)(LUN)和設(shè)備讀寫(xiě)的邏輯塊地址(LBA)與第一步的WRITE10一樣,這樣USB海量存儲(chǔ)設(shè)備的主控芯片軟件在接收到READ10命令,發(fā)現(xiàn)其參數(shù)的設(shè)備邏輯單元號(hào)(LUN)和讀寫(xiě)的邏輯塊地址(LBA)與前一條WRITE10命令的一樣,則返回前一條WRITE10數(shù)據(jù)緩沖區(qū)中指定的SCSI命令需要的數(shù)據(jù),上述的正常讀寫(xiě)命令都可以保證USB海量存儲(chǔ)海量設(shè)備的主控芯片軟件在分析SCSI命令WRITE10和READ10時(shí),既可實(shí)現(xiàn)設(shè)備的正常讀寫(xiě)命令,同時(shí)實(shí)現(xiàn)了操作系統(tǒng)非授權(quán)用戶(hù)下,應(yīng)用程序能夠通過(guò)文件的讀寫(xiě)操作,在其讀寫(xiě)命令WRITE10和READ10數(shù)據(jù)緩沖區(qū)中承載其他SCSI命令和數(shù)據(jù),實(shí)現(xiàn)應(yīng)用程序與USB海量存儲(chǔ)海量設(shè)備的命令交互。
USB海量存儲(chǔ)設(shè)備應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒ㄟ€包括在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件,文件名是采用每次計(jì)算獲取的變化的全球唯一16字節(jié)的序列號(hào)字符串,并將新文件設(shè)為非共享讀寫(xiě)屬性,在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件,文件擴(kuò)展名采用單獨(dú)定義或者隨機(jī)變化的擴(kuò)展名。
在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件規(guī)定格式,其中WRITE10命令規(guī)定格式順序?yàn)槊顦?biāo)識(shí)頭、命令序列號(hào)、命令操作碼、命令參數(shù)區(qū)、多余字節(jié)區(qū)、命令寫(xiě)入數(shù)據(jù)區(qū),READ10命令規(guī)定格式順序?yàn)槊顦?biāo)識(shí)頭、命令序列號(hào)、多余字節(jié)區(qū)、命令寫(xiě)入數(shù)據(jù)區(qū)。
在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件規(guī)定格式所述的新文件的命令標(biāo)識(shí)頭,為0xx55aa55aa555342。
在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件規(guī)定格式的命令序列號(hào)為16字節(jié)唯一的序列號(hào)。
在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件規(guī)定格式的新文件規(guī)定長(zhǎng)度為512字節(jié)的奇數(shù)倍,512字節(jié),1536字節(jié)或2560字節(jié)。
在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件規(guī)定格式的新文件規(guī)定長(zhǎng)度如果為1536字節(jié),則在發(fā)送WRITE10命令時(shí),字節(jié)分配為命令標(biāo)識(shí)頭、命令序列號(hào)、命令操作碼、命令參數(shù)區(qū)、多余字節(jié)區(qū)共占512字節(jié),多余字節(jié)區(qū)為512字節(jié)中未占用的多余字節(jié),可設(shè)為零,命令寫(xiě)入數(shù)據(jù)區(qū)占用1024字節(jié);在發(fā)送READ10命令,字節(jié)分配為命令標(biāo)識(shí)頭、命令序列號(hào),多余字節(jié)區(qū)占512字節(jié),多余字節(jié)區(qū)為512字節(jié)中未占用的多余字節(jié),可設(shè)為零,命令讀取數(shù)據(jù)區(qū)占用1024字節(jié),USB海量存儲(chǔ)設(shè)備主芯片應(yīng)用程序邏輯流程寫(xiě)命令為收到WRITE10命令全部數(shù)據(jù)---判斷是否為規(guī)定長(zhǎng)度數(shù)據(jù)---判斷結(jié)果“否”--進(jìn)入正常數(shù)據(jù)寫(xiě)入操作流程,判斷結(jié)果“是”---判斷命令標(biāo)識(shí)頭、命令序列號(hào)、命令操作碼、命令參數(shù)區(qū)的全部字節(jié)內(nèi)是否有命令標(biāo)識(shí)頭,命令操作碼,判斷結(jié)果“否”---進(jìn)入正常數(shù)據(jù)寫(xiě)入流程,判斷結(jié)果“是”---分析命令參數(shù),保存其設(shè)備邏輯號(hào)和地址以及命令序列號(hào),然后接收剩下的字節(jié)數(shù)據(jù)---處理該命令請(qǐng)求,并保留命令參數(shù)信息,以備下一條讀命令使用---判斷命令處理是否正確---判斷結(jié)果“否”---進(jìn)入設(shè)置命令處理錯(cuò)誤信息,判斷結(jié)果“是”---設(shè)置執(zhí)行結(jié)果數(shù)據(jù)為正確。讀命令為收到READ10命令全部數(shù)據(jù)---判斷是否為規(guī)定長(zhǎng)度數(shù)據(jù)---判斷結(jié)果“否”---進(jìn)入正常數(shù)據(jù)讀取流程,判斷結(jié)果“是”---判斷設(shè)備邏輯號(hào)和地址是否與保存的寫(xiě)命令設(shè)備邏輯號(hào)和地址相同,判斷結(jié)果“否”---進(jìn)入正常數(shù)據(jù)讀取操作流程,判斷結(jié)果“是”----執(zhí)行前一條具有相同的設(shè)備邏輯號(hào)和地址讀命令保存的命令請(qǐng)求---發(fā)送含有命令標(biāo)識(shí)頭、命令序列號(hào)和多余字節(jié)區(qū)內(nèi)的全部字節(jié)發(fā)送到數(shù)據(jù)設(shè)備端口---準(zhǔn)備命令需要返回的剩下的字節(jié)數(shù)據(jù)并發(fā)送到指定設(shè)備端口---設(shè)置執(zhí)行結(jié)果數(shù)據(jù)為正確,USB海量存儲(chǔ)設(shè)備主控芯片應(yīng)用程序在處理SCSI命令WRITE10時(shí),對(duì)需要返回?cái)?shù)據(jù)的特殊控制命令,應(yīng)將該WRITE10命令所指的設(shè)備邏輯單元號(hào)(LUN)、設(shè)備讀寫(xiě)邏輯塊地址(LBA)、命令序列號(hào)和命令參數(shù)保存到一個(gè)或者多個(gè)專(zhuān)用的數(shù)據(jù)變量中,USB海量存儲(chǔ)設(shè)備讀取數(shù)據(jù)時(shí),則必須保證第一步的WRITE10命令的設(shè)備邏輯單元號(hào)(LUN)與第二步的READ10命令的設(shè)備邏輯單元號(hào)(LUN)相同,第一步的WRITE10命令的讀寫(xiě)邏輯塊地址(LBA)與第二步的READ10命令的讀寫(xiě)邏輯塊地址(LBA)相同或存在固定函數(shù)關(guān)系。
USB海量存儲(chǔ)設(shè)備主控芯片執(zhí)行的命令處理完成后,立即關(guān)閉和刪除在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件。
本發(fā)明的有益效果是解決了在具有用戶(hù)登錄認(rèn)證和安全權(quán)限管理的操作系統(tǒng)上,非授權(quán)設(shè)備訪問(wèn)的用戶(hù)創(chuàng)建或者運(yùn)行的第三方應(yīng)用程序如何與USB海量存儲(chǔ)設(shè)備進(jìn)行雙向數(shù)據(jù)傳輸?shù)拿罱换ミ@個(gè)關(guān)鍵問(wèn)題。本發(fā)明最重要的作用是避開(kāi)了非授權(quán)設(shè)備訪問(wèn)的用戶(hù)不再需要管理員用戶(hù)安裝特殊的驅(qū)動(dòng)或者其他應(yīng)用程序即可啟動(dòng)運(yùn)行第三方應(yīng)用程序,實(shí)現(xiàn)其與USB海量存儲(chǔ)設(shè)備進(jìn)行各種命令交互和雙向數(shù)據(jù)傳輸功能,為這類(lèi)應(yīng)用程序提供了可移動(dòng)、便捷和可靠的運(yùn)行環(huán)境,具有軟件運(yùn)行的“即插即用”特性。同時(shí)也大大方便了用戶(hù)對(duì)這類(lèi)應(yīng)用程序的使用,降低了管理員對(duì)計(jì)算機(jī)的軟件安裝管理難度。
具體實(shí)施例方式下面結(jié)附圖對(duì)本發(fā)明進(jìn)行詳細(xì)描述附
圖1為本發(fā)明的方法實(shí)施例USB海量存儲(chǔ)設(shè)備應(yīng)用程序軟件處理流程。
附圖2為本發(fā)明的方法實(shí)施例USB海量存儲(chǔ)設(shè)備應(yīng)用程序SCSI命令WRITE10流程處理。
附圖3為本發(fā)明的方法實(shí)施例USB海量存儲(chǔ)設(shè)備應(yīng)用程序SCSI命令READ10流程處理本發(fā)明創(chuàng)造性在于利用了操作系統(tǒng)可讓任何用戶(hù)在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)區(qū)創(chuàng)建新文件并可向其寫(xiě)入和讀取數(shù)據(jù)這一特性,通過(guò)規(guī)定協(xié)議讀寫(xiě)數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)格式、長(zhǎng)度以及新文件讀寫(xiě)位置等數(shù)據(jù),實(shí)現(xiàn)了應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行各種命令交互和雙向數(shù)據(jù)傳輸。
在Windows2000以及以上版本的操作系統(tǒng),任何用戶(hù)都是可以在USB海量存儲(chǔ)設(shè)備上創(chuàng)建新文件,只要磁盤(pán)空間夠用,同時(shí)也沒(méi)有被寫(xiě)保護(hù)。新文件的讀寫(xiě)在經(jīng)過(guò)操作系統(tǒng)處理后最后都?xì)w結(jié)到SCSI命令WRITE10和READ10。
當(dāng)需要向USB海量存儲(chǔ)設(shè)備發(fā)送SCSI命令集中WRITE10命令時(shí),先在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)上創(chuàng)建一個(gè)新文件,然后把SCSI命令的參數(shù)和數(shù)據(jù)存放在新文件的WRITE10命令數(shù)據(jù)緩沖區(qū)里,USB海量存儲(chǔ)設(shè)備的主控芯片軟件接收到新文件的SCSI命令集中WRITE10命令以及規(guī)定寫(xiě)入長(zhǎng)度的數(shù)據(jù)時(shí),如果分析寫(xiě)入的數(shù)據(jù)發(fā)現(xiàn)不是普通的數(shù)據(jù),而是含有規(guī)定格式的SCSI命令標(biāo)識(shí)以及參數(shù),則并不實(shí)際寫(xiě)入這些數(shù)據(jù),而是執(zhí)行其指定命令,如果命令執(zhí)行正確,則返回應(yīng)用層寫(xiě)入成功,否則返回錯(cuò)誤信息,應(yīng)用層在收到寫(xiě)入命令執(zhí)行完畢后立即刪除創(chuàng)建的新文件。如不立即刪除創(chuàng)建的新文件,USB海量存儲(chǔ)設(shè)備的主控芯片需要不斷分析WRITE10命令,這樣對(duì)于正常的文件存儲(chǔ)效率有嚴(yán)重影響,同時(shí),也無(wú)法通過(guò)WRITE10命令從USB海量存儲(chǔ)設(shè)備讀取數(shù)據(jù)。
當(dāng)需要向USB海量存儲(chǔ)設(shè)備發(fā)送SCSI命令集中READ10命令時(shí),則需要采用兩步才能夠?qū)崿F(xiàn),第一步是先在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)上創(chuàng)建一個(gè)新文件,在向創(chuàng)建的新文件寫(xiě)入含有命令的規(guī)定格式數(shù)據(jù),USB海量存儲(chǔ)設(shè)備的主控芯片軟件接收到此文件的SCSI命令WRITE10時(shí)通過(guò)分析發(fā)現(xiàn),是需要向上層返回?cái)?shù)據(jù)的特殊命令,因此將保留此WRITE10命令參數(shù)中設(shè)備讀寫(xiě)的邏輯塊地址(LBA)和設(shè)備邏輯單元號(hào)(LUN)并返回執(zhí)行完畢。第二步是上層應(yīng)用程序緊接著發(fā)送一個(gè)SCSI命令READ10,此命令必須確保該命令參數(shù)的設(shè)備讀寫(xiě)的邏輯塊地址(LBA)和設(shè)備邏輯單元號(hào)(LUN)與第一步的WRITE10一樣,這樣USB存儲(chǔ)設(shè)備的主控芯片軟件在接收到READ10命令,發(fā)現(xiàn)其參數(shù)的設(shè)備讀寫(xiě)的邏輯塊地址(LBA)和設(shè)備邏輯單元號(hào)(LUN)與前一條WRITE10命令的一樣,則返回前一條WRITE10數(shù)據(jù)緩沖區(qū)中指定的SCSI命令需要的數(shù)據(jù)。
上述兩項(xiàng)操作都可以保證USB海量存儲(chǔ)海量設(shè)備的主控芯片軟件在分析SCSI命令集中WRITE10和READ10時(shí),既可實(shí)現(xiàn)設(shè)備的正常讀寫(xiě)命令,同時(shí)實(shí)現(xiàn)了在操作系統(tǒng)非授權(quán)用戶(hù)下,應(yīng)用程序能夠通過(guò)新文件的讀寫(xiě)操作,在其SCSI命令集中WRITE10和READ10命令數(shù)據(jù)緩沖區(qū)中承載其他SCSI命令和數(shù)據(jù),實(shí)現(xiàn)應(yīng)用程序與USB海量存儲(chǔ)海量設(shè)備命令交互。
為了保證本發(fā)明的方法能夠高效、可靠運(yùn)行,保證上層應(yīng)用程序軟件能夠與USB海量存儲(chǔ)設(shè)備之間正確實(shí)現(xiàn)命令交互,當(dāng)需要發(fā)送SCSI命令時(shí),在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)上創(chuàng)建一個(gè)新文件,應(yīng)保證是設(shè)備上原來(lái)沒(méi)有和不可重復(fù)的新文件,以及防止其它應(yīng)用程序也創(chuàng)建同樣的文件,保證新文件讀寫(xiě)操作的排它性,創(chuàng)建的新文件名采用每次計(jì)算獲取的變化的全球唯一16字節(jié)的序列號(hào)字符串,新文件的文件擴(kuò)展名采用單獨(dú)定義或者隨機(jī)變化的擴(kuò)展名,并將新文件設(shè)為非共享讀寫(xiě)屬性。
本發(fā)明的方法在其SCSI命令集中WRITE10和READ10命令數(shù)據(jù)緩沖區(qū)數(shù)據(jù)長(zhǎng)度盡可能固定,并且采用操作系統(tǒng)不常用的數(shù)據(jù)讀寫(xiě)長(zhǎng)度,便于USB海量存儲(chǔ)設(shè)備主控芯片軟件在分析時(shí)能夠盡可能高效、準(zhǔn)確與正常的設(shè)備WRITE10和READ10命令區(qū)分開(kāi),為了保證本發(fā)明的方法盡可能降低對(duì)設(shè)備的正常讀寫(xiě)效率影響和保證數(shù)據(jù)傳輸?shù)耐掏铝康耐瑫r(shí),也可以保證其對(duì)設(shè)備的正常讀寫(xiě)效率影響最低。數(shù)據(jù)讀寫(xiě)長(zhǎng)度采用512字節(jié)的奇數(shù)倍512,1536或2560字節(jié),上述數(shù)據(jù)是在操作系統(tǒng)的文件WRITE10和READ10命令中不常用,而且可保證數(shù)據(jù)傳輸?shù)耐掏铝俊?br>
本發(fā)明的方法實(shí)施例WRITE10命令數(shù)據(jù)緩沖區(qū)采用1536字節(jié),規(guī)定格式為
本發(fā)明的方法實(shí)施例READ10命令數(shù)據(jù)緩沖區(qū)采用1536字節(jié),規(guī)定格式為 本發(fā)明的方法實(shí)施例上述格式定義和數(shù)據(jù)長(zhǎng)度可知,每個(gè)WRITE10和READ10命令可以傳輸?shù)臄?shù)據(jù)除了命令碼以及參數(shù)外,最大為1024字節(jié),如果超過(guò)該字節(jié),必須分多次循環(huán)完成。
本發(fā)明的方法實(shí)施例在上述WRITE10和READ10命令數(shù)據(jù)緩沖區(qū)規(guī)定格式中,WRITE10和READ10命令數(shù)據(jù)緩沖區(qū)頭含有特殊命令數(shù)據(jù)標(biāo)識(shí)頭,其目的是便于USB海量存儲(chǔ)設(shè)備主控芯片軟件在分析WRITE10命令時(shí)能夠準(zhǔn)確區(qū)分緩沖區(qū)是否含有特殊命令。應(yīng)用程序在讀取數(shù)據(jù)時(shí),USB海量存儲(chǔ)設(shè)備主控芯片軟件在返回?cái)?shù)據(jù)緩沖區(qū)頭也應(yīng)該填寫(xiě)特殊命令標(biāo)識(shí)頭數(shù)據(jù)。
本發(fā)明的方法實(shí)施例在上述WRITE10和READ10命令數(shù)據(jù)緩沖區(qū)規(guī)定格式中,WRITE10和READ10命令的數(shù)據(jù)緩沖區(qū)含有16字節(jié)的全球唯一的命令序列號(hào),其目的是便于USB海量為了進(jìn)一步保正本發(fā)明的方法在向設(shè)備讀取數(shù)據(jù)時(shí)的可靠性,可在第一步向創(chuàng)建的新文件寫(xiě)入數(shù)據(jù)發(fā)送WRITE10命令時(shí),在數(shù)據(jù)緩沖區(qū)中填入16字節(jié)的全球唯一命令序列號(hào),USB海量存儲(chǔ)設(shè)備主控芯片軟件在分析WRITE10命令后保存該序列號(hào),這樣在接著的第二步發(fā)送READ10命令讀取設(shè)備指定數(shù)據(jù)時(shí),USB海量存儲(chǔ)設(shè)備主控芯片軟件在返回?cái)?shù)據(jù)緩沖區(qū)中也同時(shí)插入該16字節(jié)全球唯一序列號(hào),這樣上層應(yīng)用程序軟件可識(shí)別是否為USB海量存儲(chǔ)設(shè)備主控芯片軟件返回的數(shù)據(jù)。
本發(fā)明的方法實(shí)施例向USB海量存儲(chǔ)設(shè)備讀取數(shù)據(jù)時(shí),保證第一步的WRITE10命令的與下一步的READ10的設(shè)備邏輯單元號(hào)(LUN)一樣,讀寫(xiě)的邏輯塊地址(LBA)存在一定的可計(jì)算函數(shù)關(guān)系。這個(gè)邏輯關(guān)系定義如下如果假設(shè)第二步READ10的讀寫(xiě)的邏輯塊地址(LBA)為y,第一步WRITE10的讀寫(xiě)的邏輯塊地址(LBA)為x,則y=f(x).,f為x與y之間的可計(jì)算函數(shù)關(guān)系。最簡(jiǎn)單的函數(shù)關(guān)系是前面所描述的y=x,即兩個(gè)讀寫(xiě)的邏輯塊地址(LBA)一樣。
本發(fā)明的方法實(shí)施例USB海量存儲(chǔ)設(shè)備主控芯片應(yīng)用程序在處理SCSI命令WRITE10時(shí),對(duì)需要返回?cái)?shù)據(jù)的特殊控制命令,應(yīng)將該WRITE10命令所指的設(shè)備邏輯單元號(hào)(LUN)、讀寫(xiě)的邏輯塊地址(LBA)、16字節(jié)的命令序列號(hào)和命令參數(shù)保存到一個(gè)或者多個(gè)專(zhuān)用的數(shù)據(jù)變量中,用于發(fā)現(xiàn)是需要返回的數(shù)據(jù)的特殊控制命令,作為判斷是否是特殊WRITE10,READ10命令的一個(gè)附加條件。
權(quán)利要求
1一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?,其特征在于所述命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒ㄊ?,利用操作系統(tǒng)任何用戶(hù)通過(guò)通訊協(xié)議在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)區(qū)創(chuàng)建新文件并可向其寫(xiě)入和讀取數(shù)據(jù)這一特性,在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建一個(gè)不可重復(fù)的新文件,然后把SCSI命令的參數(shù)和數(shù)據(jù)按規(guī)定格式存放在新文件的寫(xiě)入命令數(shù)據(jù)緩沖區(qū)里,USB海量存儲(chǔ)設(shè)備的主控芯片應(yīng)用程序接收到新文件的寫(xiě)入的SCSI寫(xiě)命令WRITE10以及指定寫(xiě)入長(zhǎng)度的數(shù)據(jù)時(shí),分析寫(xiě)入的數(shù)據(jù)發(fā)現(xiàn)不是普通的數(shù)據(jù),而是含有規(guī)定格式的SCSI命令標(biāo)識(shí)以及參數(shù),則并不實(shí)際寫(xiě)入這些數(shù)據(jù),而是執(zhí)行其指定命令,如果命令執(zhí)行正確,則返回應(yīng)用層寫(xiě)入成功,否則返回錯(cuò)誤信息,應(yīng)用層在收到寫(xiě)入命令執(zhí)行完畢后立即刪除剛創(chuàng)建的文件,從USB海量存儲(chǔ)設(shè)備讀取數(shù)據(jù),則需要采用兩步才能夠?qū)崿F(xiàn),第一步是創(chuàng)建新文件,后向新文件寫(xiě)入含有命令的規(guī)定格式數(shù)據(jù),USB海量存儲(chǔ)設(shè)備的主控芯片軟件接收到此文件的SCSI命令WRITE10時(shí)通過(guò)分析發(fā)現(xiàn),是需要向上層返回?cái)?shù)據(jù)的特殊命令,因此將保留此WRITE10命令參數(shù)中設(shè)備邏輯單元號(hào)(LUN)和設(shè)備讀寫(xiě)的邏輯塊地址(LBA)并返回執(zhí)行完畢,第二步是上層應(yīng)用程序緊接著發(fā)送一個(gè)SCSI命令READ10,此命令必須確保該命令參數(shù)的設(shè)備邏輯單元號(hào)(LUN)和設(shè)備讀寫(xiě)的邏輯塊地址(LBA)與第一步的WRITE10一樣,這樣USB海量存儲(chǔ)設(shè)備的主控芯片軟件在接收到READ10命令,發(fā)現(xiàn)其參數(shù)的設(shè)備邏輯單元號(hào)(LUN)和讀寫(xiě)的邏輯塊地址(LBA)與前一條WRITE10命令的一樣,則返回前一條WRITE10數(shù)據(jù)緩沖區(qū)中指定的SCSI命令需要的數(shù)據(jù),上述的正常讀寫(xiě)命令都可以保證USB海量存儲(chǔ)海量設(shè)備的主控芯片軟件在分析SCSI命令WRITE10和READ10時(shí),既可實(shí)現(xiàn)設(shè)備的正常讀寫(xiě)命令,同時(shí)實(shí)現(xiàn)了操作系統(tǒng)非授權(quán)用戶(hù)下,應(yīng)用程序能夠通過(guò)文件的讀寫(xiě)操作,在其讀寫(xiě)命令WRITE10和READ10數(shù)據(jù)緩沖區(qū)中承載其他SCSI命令和數(shù)據(jù),實(shí)現(xiàn)應(yīng)用程序與USB海量存儲(chǔ)海量設(shè)備的命令交互。
2根據(jù)權(quán)利要求1所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?,其特征在于所述的在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件,文件名是采用每次計(jì)算獲取的變化的全球唯一16字節(jié)的序列號(hào)字符串,并將新文件設(shè)為非共享讀寫(xiě)屬性,新文件,文件擴(kuò)展名采用單獨(dú)定義或者隨機(jī)變化的擴(kuò)展名。
3根據(jù)權(quán)利要求1或2所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒ǎ涮卣髟谟谒龅脑赨SB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建新文件的規(guī)定格式,其中WRITE10命令規(guī)定格式順序?yàn)槊顦?biāo)識(shí)頭、命令序列號(hào)、命令操作碼、命令參數(shù)區(qū)、多余字節(jié)區(qū)、命令寫(xiě)入數(shù)據(jù)區(qū),READ10命令規(guī)定格式順序?yàn)槊顦?biāo)識(shí)頭、命令序列號(hào)、多余字節(jié)區(qū)、命令寫(xiě)入數(shù)據(jù)區(qū)。
4根據(jù)權(quán)利要求1或3所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?,其特征在于所述的在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件規(guī)定格式的命令標(biāo)識(shí)頭,為0xx55aa55aa555342。
5根據(jù)權(quán)利要求1或3所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?,其特征在于所述的在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件規(guī)定格式的命令序列號(hào),為16字節(jié)唯一的序列號(hào)。
6根據(jù)權(quán)利要求1或3所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?,其特征在于所述的在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件規(guī)定格式的規(guī)定長(zhǎng)度為512字節(jié)的奇數(shù)倍,512字節(jié),1536字節(jié)或2560字節(jié)。
7根據(jù)權(quán)利要求1或3所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?,其特征在于所述的在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件規(guī)定格式的規(guī)定長(zhǎng)度為1536字節(jié),則在發(fā)送WRITE10命令時(shí),字節(jié)分配為命令標(biāo)識(shí)頭、命令序列號(hào)、命令操作碼、命令參數(shù)區(qū)、多余字節(jié)區(qū)共占512字節(jié),多余字節(jié)區(qū)為512字節(jié)中未占用的多余字節(jié),可設(shè)為零,命令寫(xiě)入數(shù)據(jù)區(qū)占用1024字節(jié);在發(fā)送READ10命令,字節(jié)分配為命令標(biāo)識(shí)頭、命令序列號(hào),多余字節(jié)區(qū)占512字節(jié),多余字節(jié)區(qū)為512字節(jié)中未占用的多余字節(jié),可設(shè)為零,命令讀取數(shù)據(jù)區(qū)占用1024字節(jié)。
8根據(jù)權(quán)利要求1或3所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒ǎ涮卣髟谟赨SB海量存儲(chǔ)設(shè)備主芯片應(yīng)用程序邏輯流程寫(xiě)命令為收到WRITE10命令全部數(shù)據(jù)---判斷是否為規(guī)定長(zhǎng)度數(shù)據(jù)---判斷結(jié)果“否”--進(jìn)入正常數(shù)據(jù)寫(xiě)入操作流程,判斷結(jié)果“是”---判斷命令標(biāo)識(shí)頭、命令序列號(hào)、命令操作碼、命令參數(shù)區(qū)的全部字節(jié)內(nèi)是否有命令標(biāo)識(shí)頭,命令操作碼,判斷結(jié)果“否”---進(jìn)入正常數(shù)據(jù)寫(xiě)入流程,判斷結(jié)果“是”---分析命令參數(shù),保存其設(shè)備邏輯號(hào)和地址以及命令序列號(hào),然后接收剩下的字節(jié)數(shù)據(jù)---處理該命令請(qǐng)求,并保留命令參數(shù)信息,以備下一條讀命令使用---判斷命令處理是否正確---判斷結(jié)果“否”---進(jìn)入設(shè)置命令處理錯(cuò)誤信息,判斷結(jié)果“是”---設(shè)置執(zhí)行結(jié)果數(shù)據(jù)為正確。讀命令為收到READ10命令全部數(shù)據(jù)---判斷是否為規(guī)定長(zhǎng)度數(shù)據(jù)---判斷結(jié)果“否”---進(jìn)入正常數(shù)據(jù)讀取流程,判斷結(jié)果“是”---判斷設(shè)備邏輯號(hào)和地址是否與保存的寫(xiě)命令設(shè)備邏輯號(hào)和地址相同,判斷結(jié)果“否”---進(jìn)入正常數(shù)據(jù)讀取操作流程,判斷結(jié)果“是”----執(zhí)行前一條具有相同的設(shè)備邏輯號(hào)和地址讀命令保存的命令請(qǐng)求---發(fā)送含有命令標(biāo)識(shí)頭、命令序列號(hào)和多余字節(jié)區(qū)內(nèi)的全部字節(jié)發(fā)送到數(shù)據(jù)設(shè)備端口---準(zhǔn)備命令需要返回的剩下的字節(jié)數(shù)據(jù)并發(fā)送到指定設(shè)備端口---設(shè)置執(zhí)行結(jié)果數(shù)據(jù)為正確。
9根據(jù)權(quán)利要求1或3所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒ǎ涮卣髟谟赨SB海量存儲(chǔ)設(shè)備主控芯片應(yīng)用程序在處理SCSI命令WRITE10時(shí),對(duì)需要返回?cái)?shù)據(jù)的特殊控制命令,應(yīng)將該WRITE10命令所指的設(shè)備邏輯單元號(hào)(LUN)、設(shè)備讀寫(xiě)邏輯塊地址(LBA)、命令序列號(hào)和命令參數(shù)保存到一個(gè)或者多個(gè)專(zhuān)用的數(shù)據(jù)變量中。
10根據(jù)權(quán)利要求1或3所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒ǎ涮卣髟谟赨SB海量存儲(chǔ)設(shè)備讀取數(shù)據(jù)時(shí),則必須保證第一步的WRITE10命令的設(shè)備邏輯單元號(hào)(LUN)與第二步的READ10命令的設(shè)備邏輯單元號(hào)(LUN)相同,第一步的WRITE10命令的讀寫(xiě)邏輯塊地址(LBA)與第二步的READ10命令的讀寫(xiě)邏輯塊地址(LBA)相同或存在固定函數(shù)關(guān)系。
11根據(jù)權(quán)利要求1或3所述的一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?,其特征在于USB海量存儲(chǔ)設(shè)備主控芯片執(zhí)行的命令處理完成后,立即關(guān)閉和刪除在USB海量存儲(chǔ)設(shè)備的可讀寫(xiě)邏輯盤(pán)創(chuàng)建的新文件。
全文摘要
一種USB海量存儲(chǔ)設(shè)備上應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒?。特別是一種有權(quán)限管理的操作系統(tǒng),非授權(quán)用戶(hù)如何使用創(chuàng)建的應(yīng)用程序?qū)SB海量存儲(chǔ)設(shè)備發(fā)送命令,從而實(shí)現(xiàn)應(yīng)用程序與USB海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸?shù)姆椒ǎ景l(fā)明利用操作系統(tǒng)任何用戶(hù)可在USB可移動(dòng)存儲(chǔ)設(shè)備的可讀寫(xiě)區(qū)創(chuàng)建新文件并可向其寫(xiě)入和讀取數(shù)據(jù)這一特性,通過(guò)規(guī)定讀寫(xiě)數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)格式、長(zhǎng)度以及新文件讀寫(xiě)位置等數(shù)據(jù),實(shí)現(xiàn)應(yīng)用程序與USB可移動(dòng)海量存儲(chǔ)設(shè)備進(jìn)行命令交互和雙向數(shù)據(jù)傳輸。本發(fā)明為這類(lèi)多種應(yīng)用程序提供了可移動(dòng)、便捷和可靠的運(yùn)行環(huán)境,使帶有應(yīng)用程序的USB海量存儲(chǔ)設(shè)備,實(shí)現(xiàn)了“即插即用”的目的。
文檔編號(hào)G06F1/00GK1869855SQ20051001254
公開(kāi)日2006年11月29日 申請(qǐng)日期2005年5月23日 優(yōu)先權(quán)日2005年5月23日
發(fā)明者祝緒陽(yáng) 申請(qǐng)人:深圳市江波龍電子有限公司