專利名稱:U盤上數(shù)據(jù)自動壓縮和解壓縮的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及u盤上的數(shù)據(jù)處理方法,特別是實現(xiàn)u盤上數(shù)據(jù)自動壓縮和解壓 縮的方法。
目前能夠?qū)崿F(xiàn)對存貯在我公司所生產(chǎn)u盤上的數(shù)據(jù)自動進行壓縮和解壓縮, 在不改變u盤容量的前提下大大提升u盤的實際存貯能力,在對驅(qū)動程序稍加修 改后就可以實現(xiàn)對所有u盤數(shù)據(jù)的壓縮和解壓縮。
背景技術(shù):
近些年來,隨著信息技術(shù)的飛速發(fā)展,信息的數(shù)據(jù)量也變得越來越龐大,雖
然u盤作為新一代的存儲設(shè)備,具有容量大的特點,但與需要存儲的信息量相比, 仍然顯得其容量不足,這就經(jīng)常會導(dǎo)致原來的u盤因為容量太小而不能使用。 為了解決這個問題,國內(nèi)外大多數(shù)公司采用的辦法就是不斷擴大u盤的容量,
現(xiàn)在一般12個月會生產(chǎn)容量增加一倍的U盤,目前這種唯一的方法造成了很多不
必要的浪費。
發(fā)明內(nèi)容
本發(fā)明針對以上的問題提出了 u盤上數(shù)據(jù)自動壓縮和解壓縮的方法,通過在u 盤上安裝數(shù)據(jù)處理的程序來解決數(shù)據(jù)的壓縮和解壓縮,從而達到不用擴大u盤容
量也可以有更大的存儲量的目的。
本發(fā)明技術(shù)方案如下
U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于U盤中存儲有一個位于 Windows文,系統(tǒng)的輸入輸出子系統(tǒng)管理層(I/O Subsystem Manager)和文件系 統(tǒng)驅(qū)動層(File System Driver)之間的U盤壓縮驅(qū)動程序(USBZip Driver), 所述U盤壓縮驅(qū)動程序創(chuàng)建一個內(nèi)核線程;當用戶進程發(fā)出讀寫命令后,U盤壓縮 驅(qū)動程序從輸入輸出子系統(tǒng)管理層攔截讀寫命令并判斷該讀寫命令操作是否對指 定的U盤進行;當讀寫命令操作是對指定的U盤進行時,所述U盤壓縮驅(qū)動程序 調(diào)用Windows的文件系統(tǒng)驅(qū)動層進行讀寫操作后,所述內(nèi)核線程用于自動處理讀 寫數(shù)據(jù)的壓縮和解壓縮。 所述U盤壓縮驅(qū)動程序在第一次使用時自動安裝,以后在每次插入u盤時, Windows會自動加載己安裝的U盤壓縮驅(qū)動程序;當li盤被拔出時,U盤壓縮驅(qū)動
程序也會被自動卸載。
橋述u盤壓縮驅(qū)動程序自動加載后,打開u盤時,u盤壓縮驅(qū)動程序創(chuàng)建內(nèi)核
線程;關(guān)閉U盤時,U盤壓縮驅(qū)動程序會終止該內(nèi)核線程。
.所述內(nèi)核線程一直處于睡眠狀態(tài),是通過U盤壓縮驅(qū)動程序調(diào)用Windows的 文件系統(tǒng)驅(qū)動層進行讀寫操作之后,U盤壓縮驅(qū)動程序為睡眠的內(nèi)核線程準備好需 要壓縮或解壓縮的數(shù)據(jù)等參數(shù)信息的必要的數(shù)據(jù)后才喚醒內(nèi)核線程,內(nèi)核線程在 執(zhí)行完壓縮或者解壓縮后會繼續(xù)睡眠。也就是說在讀操作時,U盤壓縮驅(qū)動程序會 將內(nèi)核線程返回的數(shù)據(jù)返回給用戶進程,最后內(nèi)核線程繼續(xù)睡眠;在寫操作的時, U盤壓縮驅(qū)動程序會調(diào)用Windows的文件系統(tǒng)驅(qū)動層將返回的數(shù)據(jù)寫入U盤,最后 內(nèi)核線程繼續(xù)睡眠。
所述U盤壓縮驅(qū)動程序調(diào)用Windows的文件系統(tǒng)驅(qū)動層進行讀寫操作之前, 還進行了文件夾重定向,將讀寫命令操作重新定向到硬盤上的一個臨時目錄中。
當讀寫命令操作不是對指定的U盤進行時,輸入輸出子系統(tǒng)管理層就將讀寫 命令操作交給Windows的文件系統(tǒng)驅(qū)動層進行處理。
U盤上數(shù)據(jù)自動解壓縮的方法,其具體步驟為當Windows文件系統(tǒng)的輸入輸 出子系統(tǒng)管理層層傳遞下來的操作為讀操作時,U盤壓縮驅(qū)動程序會首先判斷讀操 作是否是對指定U盤進行,如果不是,U盤壓縮驅(qū)動程序直接調(diào)用Windows的文件 系統(tǒng)驅(qū)動進行正常的讀操作處理;如果是,U盤壓縮驅(qū)動程序首先進行文件重定向, 將讀取文件路徑上包含的文件夾依次重定向到硬盤上的一個臨時目錄中,然后U 盤壓縮驅(qū)動程序會在所述臨時目錄中創(chuàng)建一個與讀取文件同名的重定向文件,然 后調(diào)用Windows的文件系統(tǒng)驅(qū)動將壓縮信息和壓縮數(shù)據(jù)從U盤中讀出并為內(nèi)核線 程準備好相應(yīng)的數(shù)據(jù),喚醒內(nèi)核線程執(zhí)行解壓縮并等待內(nèi)核線程返回結(jié)果,當內(nèi) 核線程完成數(shù)據(jù)段的解壓縮并返回結(jié)果后,U盤壓縮驅(qū)動程序會記錄已解壓的數(shù)據(jù) 段信息,并將需要的數(shù)據(jù)返回給Windows文件系統(tǒng)的輸入輸出子系統(tǒng)。如果下一 次Windows又發(fā)起了對該文件相同數(shù)據(jù)段的讀操作,U盤壓縮驅(qū)動程序則根據(jù)上一 次的解壓縮記錄,直接調(diào)用Windows的文件系統(tǒng)驅(qū)動從重定向文件中讀出需要的 數(shù)據(jù)返回給Windows文件系統(tǒng)的輸入輸出子系統(tǒng)。
U盤上數(shù)據(jù)自動壓縮的方法,其具體步驟為當Windows文件系統(tǒng)的輸入輸出
子系統(tǒng)管理層傳遞下來的操作為寫操作時,U盤壓縮驅(qū)動程序首先判斷所述讀操作 是否是對指定U盤進行,如果不是,U盤壓縮驅(qū)動程序直接調(diào)用Windows文件系統(tǒng) 的文件系統(tǒng)驅(qū)動層進行正常的寫操作處理;如果是,U盤壓縮驅(qū)動程序首先進行文 件夾的重定向,將讀取文件路徑上包含的文件夾依次重定向到磁盤上的一個臨時 目錄中,接著調(diào)用Windows文件系統(tǒng)的文件系統(tǒng)驅(qū)動層將數(shù)據(jù)先寫入磁盤的臨時 目錄中,然后U盤壓縮驅(qū)動程序為內(nèi)核線程準備好相應(yīng)的數(shù)據(jù),喚醒內(nèi)核線程并 等待內(nèi)核線程返回結(jié)果,當內(nèi)核線程進行了數(shù)據(jù)的解壓縮并返回結(jié)果后,U盤壓縮 驅(qū)動程序最后調(diào)用Windows文件系統(tǒng)的文件系統(tǒng)驅(qū)動層將數(shù)據(jù)寫入U盤。
所述壓縮是當寫文件到U盤時,首先將文件的數(shù)據(jù)按照指定的大小分段,然 后判斷數(shù)據(jù)是否需要進行壓縮,如果不需要,則直接將所有段的原始數(shù)據(jù)寫入U 盤即可,如果需要,那么就進行數(shù)據(jù)壓縮并將壓縮后的數(shù)據(jù)寫入U盤,最后還要 將壓縮每段數(shù)據(jù)時產(chǎn)生的壓縮信息組合起來構(gòu)成整個文件的壓縮信息寫入U盤壓 縮文件的末尾。這種分段的壓縮方法區(qū)別于傳統(tǒng)的壓縮方式,傳統(tǒng)的壓縮方式是 采用流式壓縮方法,即將需要壓縮的數(shù)據(jù)做為一個整體進行壓縮,這種方式在隨 機讀取解壓縮文件的部分數(shù)據(jù)時效率是非常低的,分段壓縮方式能夠很好的解決 這個問題。
所述解壓縮是當讀文件時,首先判斷文件是否為USBZip Driver壓縮的文件, 如果不是,則從U盤中直接讀取文件中相應(yīng)位置的數(shù)據(jù)即可,如果是,則先從U 盤中讀取壓縮文件末尾處的壓縮信息,解析壓縮信息,得到需要讀取的數(shù)據(jù)在壓 縮文件中的相應(yīng)位置和長度,從U盤中讀取壓縮文件的相應(yīng)塊,解壓縮這些數(shù)據(jù) 塊最后得到原始數(shù)據(jù)。
所述U盤壓縮驅(qū)動程序在解壓縮U盤上的文件數(shù)據(jù)到臨時目錄的重定向文件 時,舍記錄已解壓的數(shù)據(jù)段地址和長度到一個雙向鏈表中,如果讀操作所要訪問 的數(shù)據(jù)段已經(jīng)包含在這個雙向鏈表時,鏈表保持不變,相反,鏈表向數(shù)據(jù)方向增 加,引起解壓縮操作,這樣就像一個可移動的窗口一樣,因此我們稱之為滑動窗 口的解壓縮方式。
為了方便用戶,使之覺得支持自動壓縮和解壓縮的U盤和普通U盤的用法完 全相同,這種U盤會在量產(chǎn)時由定制的量產(chǎn)工具劃分出一個隱藏分區(qū),U盤壓縮驅(qū) 動程序(USBZip Driver)和它的安裝程序會被下載到這個隱藏分區(qū)中,在用戶第 一次使用這種U盤時,在隱藏分區(qū)中的安裝程序會自動將U盤壓縮驅(qū)動程序
(USBZip Driver)裝入Windows操作系統(tǒng)。
本發(fā)明能使用戶在沒有察覺任何區(qū)別的情況下就能大大提高u盤的實際存貯 能力,從而達到不用擴大U盤容量也可以有更大的存儲量,另外還具備如下優(yōu)點
一、 驅(qū)動程序的自動安裝裝載驅(qū)動程序的可執(zhí)行程序已經(jīng)在U盤量產(chǎn)時下
載到了 u盤的隱藏分區(qū)中,這個可執(zhí)行程序能夠自動將u盤上的驅(qū)動程序的安裝
到系統(tǒng)中,這樣就避免了用戶手動去安裝驅(qū)動程序,減少了用戶的麻煩,方便了
用戶;
二、 驅(qū)動程序的自動裝載與卸載實現(xiàn)了驅(qū)動程序在將U盤插入計算機時自
動裝載到操作系統(tǒng)內(nèi)核中,在撥出時自動將它卸載掉,這樣就不會影響到用戶的
一般操作,只有在需要對u盤進行操作時,才會調(diào)用驅(qū)動,最大限度的確保了系 統(tǒng)的安全性和可靠性;
三、 文件夾和文件的動態(tài)重定向技術(shù)只對兼容的壓縮文件進行重定向,對 其它壓縮格式文件采用直接訪問,同時只對壓縮文件進行重定向而并不對文件夾 進行重定向,這樣就能在不需要執(zhí)行任何解壓縮的操作就能看到這個文件夾中的 內(nèi)容,而不是進行了解壓縮才能顯示其內(nèi)容,這樣就避免了延時;動態(tài)重定向技 術(shù)還能實現(xiàn)緩存的作用,已經(jīng)解壓縮過的數(shù)據(jù)段被再次訪問時,無需再次解壓縮, 因此訪問速度接近非壓縮文件;
四、 內(nèi)核線程以滑動窗口的方式處理壓縮、解壓縮和物理讀寫操作這樣就 能以最快的速度從大文件中解壓縮出需要的數(shù)據(jù)段,而不是完全解壓縮出整個文 件,縮短讀寫操作程序執(zhí)行的時間,提高系統(tǒng)的響應(yīng)時間,提高了系統(tǒng)的效率, 不會導(dǎo)致程序長時間的無響應(yīng);
五、 先進的壓縮算法驅(qū)動程序中的內(nèi)核線程采用了先進的高效壓縮算法, 使得文件具有很高的壓縮比和很少的壓縮時間,能夠大大提高U盤的實際存lt能 力和響應(yīng)時間;同時該算法能識別出數(shù)據(jù)是否已經(jīng)采用了其它壓縮算法,對于這 種數(shù)裙,它將使用直接存儲,因此壓縮U盤中實際共存多種壓縮格式的數(shù)據(jù)文件。
圖1為本發(fā)明驅(qū)動程序的架構(gòu)示意圖
圖2為本發(fā)明U盤壓縮驅(qū)動程序讀操作的流程圖 圖3為本發(fā)明U盤壓縮驅(qū)動程序?qū)懖僮鞯牧鞒虉D 圖4為本發(fā)明內(nèi)核線程的流程圖
圖5為本發(fā)明數(shù)據(jù)壓縮的流程圖 圖6為本發(fā)明數(shù)據(jù)解壓縮的流程圖 圖7為本發(fā)明量產(chǎn)過程的流程圖
具體實施例方式
如圖1-6所示,U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,U盤中存儲有一個位于 Windows文件系統(tǒng)的輸入輸出子系統(tǒng)管理層(I/O Subsystem Manager)和文件系 統(tǒng)驅(qū)動層(File System Driver)之間的U盤壓縮驅(qū)動程序(USBZip Driver), 所述U盤壓縮驅(qū)動程序創(chuàng)建一個內(nèi)核線程;當用戶進程發(fā)出讀寫命令后,U盤壓縮 驅(qū)動程序從輸入輸出子系統(tǒng)管理層攔截讀寫命令并判斷該讀寫命令操作是否對指 定的U盤進行;當讀寫命令操作是對指定的U盤進行時,所述U盤壓縮驅(qū)動程序 調(diào)用Windows的文件系統(tǒng)驅(qū)動層進行讀寫操作后,所述內(nèi)核線程用于自動處理讀 寫數(shù)據(jù)的壓縮和解壓縮。
所述U盤壓縮驅(qū)動程序在第一次使用時自動安裝,以后在每次插入U盤時, Windows會自動加載已安裝的U盤壓縮驅(qū)動程序;當U盤被拔出時,U盤壓縮驅(qū)動 程序也會被自動卸載。
所述U盤壓縮驅(qū)動程序自動加載后,打開U盤時,U盤壓縮驅(qū)動程序創(chuàng)建內(nèi)核 線程;'關(guān)閉U盤時,U盤壓縮驅(qū)動程序會終止該內(nèi)核線程。
所述內(nèi)核線程一直處于睡眠狀態(tài),是通過U盤壓縮驅(qū)動程序調(diào)用Windows的 文件系統(tǒng)驅(qū)動層進行讀寫操作之后,U盤壓縮驅(qū)動程序為睡眠的內(nèi)核線程準備好需 要壓縮或解壓縮的數(shù)據(jù)等參數(shù)信息的必要的數(shù)據(jù)后才喚醒內(nèi)核線程,內(nèi)核線程在 執(zhí)行完壓縮或者解壓縮后會繼續(xù)睡眠。也就是說在讀操作時,U盤壓縮驅(qū)動程序會 將內(nèi)核線程返回的數(shù)據(jù)返回給用戶進程,最后內(nèi)核線程繼續(xù)睡眠;在寫操作的時, U盤壓縮驅(qū)動程序會調(diào)用Windows的文件系統(tǒng)驅(qū)動層將返回的數(shù)據(jù)寫入U盤,最后 內(nèi)核線程繼續(xù)睡眠。
所述U盤壓縮驅(qū)動程序調(diào)用Windows的文件系統(tǒng)驅(qū)動層進行讀寫操作之前, 還進行了文件夾重定向,將讀寫命令操作重新定向到硬盤上的一個臨時目錄中。
當讀寫命令操作不是對指定的U盤進行時,輸入輸出子系統(tǒng)管理層就將讀寫 命令操作交給Windows的文件系統(tǒng)驅(qū)動層進行處理。
U盤上數(shù)據(jù)自動解壓縮的方法,其具體步驟為當Windows文件系統(tǒng)的輸入輸 出子系統(tǒng)管理層層傳遞下來的操作為讀操作時,U盤壓縮驅(qū)動程序會首先判斷讀操
作是否是對指定U盤進行,如果不是,U盤壓縮驅(qū)動程序直接調(diào)用Windows文件系 統(tǒng)的文件系統(tǒng)驅(qū)動層進行正常的讀操作處理;如果是,U盤壓縮驅(qū)動程序首先進行 文件夾的重定向,將讀取文件路徑上包含的文件夾依次重定向到硬盤上的一個臨 時目錄中,然后U盤壓縮驅(qū)動程序會在所述臨時目錄中創(chuàng)建一個與讀取文件同名 的重定向文件,然后調(diào)用Windows的文件系統(tǒng)驅(qū)動將壓縮信息和壓縮數(shù)據(jù)從U盤 中讀出并為內(nèi)核線程準備好相應(yīng)的數(shù)據(jù),喚醒內(nèi)核線程執(zhí)行解壓縮并等待內(nèi)核線 程返回結(jié)果,幸內(nèi)核線程完成數(shù)據(jù)段的解壓縮并返回結(jié)果后,U盤壓縮驅(qū)動程序會 記錄已解壓的數(shù)據(jù)段信息,并將需要的數(shù)據(jù)返回給Windows文件系統(tǒng)的輸入輸出 子系統(tǒng)。如果下一次Windows又發(fā)起了對該文件相同數(shù)據(jù)段的讀操作,U盤壓縮驅(qū) 動程序則根據(jù)上一次的解壓縮記錄,直接調(diào)用Windows的文件系統(tǒng)驅(qū)動從重定向 文件中讀出需要的數(shù)據(jù)返回給Windows文件系統(tǒng)的輸入輸出子系統(tǒng)。
U盤上數(shù)據(jù)自動壓縮的方法,其具體步驟為當Windows文件系統(tǒng)的輸入輸出 子系統(tǒng)管理層傳遞下來的操作為寫操作時,U盤壓縮驅(qū)動程序首先判斷所述讀操作 是否是對指定U盤進行,如果不是,U盤壓縮驅(qū)動程序直接調(diào)用Windows文件系統(tǒng) 的文件系統(tǒng)驅(qū)動層進行正常的寫操作處理;如果是,U盤壓縮驅(qū)動程序首先進行文 件夾的重定向,將讀取文件路徑上包含的文件夾依次重定向到磁盤上的一個臨時 目錄中,接著調(diào)用Windows文件系統(tǒng)的文件系統(tǒng)驅(qū)動層將數(shù)據(jù)先寫入磁盤的臨時 目錄中,然后U盤壓縮驅(qū)動程序為內(nèi)核線程準備好相應(yīng)的數(shù)據(jù),喚醒內(nèi)核線程并 等待內(nèi)核線程返回結(jié)果,當內(nèi)核線程進行了數(shù)據(jù)的解壓縮并返回結(jié)果后,U盤壓縮 驅(qū)動程序最后調(diào)用Windows文件系統(tǒng)的文件系統(tǒng)驅(qū)動層將數(shù)據(jù)寫入U盤。
所述壓縮是當寫文件到U盤時,首先將文件的數(shù)據(jù)按照指定的大小分段,然 后判斷數(shù)據(jù)是否需要進行壓縮,如果不需要,則直接將所有段的原始數(shù)據(jù)寫入U 盤即可,如果需要,那么就進行數(shù)據(jù)壓縮并將壓縮后的數(shù)據(jù)寫入U盤,最后還要 將壓縮每段數(shù)據(jù)時產(chǎn)生的壓縮信息組合起來構(gòu)成整個文件的壓縮信息寫入U盤壓 縮文件的末尾。這種分段的壓縮方法區(qū)別于傳統(tǒng)的壓縮方式,傳統(tǒng)的壓縮方式是 采用流式壓縮方法,即將需要壓縮的數(shù)據(jù)做為一個整體進行壓縮,這種方式在隨 機讀取解壓縮文件的部分數(shù)據(jù)時效率是非常低的,分段壓縮方式能夠很好的解決 這個問題。
所述解壓縮是當讀文件時,首先判斷文件是否為USBZip Driver壓縮的文件, 如果不是,則從U盤中直接讀取文件中相應(yīng)位置的數(shù)據(jù)即可,如果是,則先從U
盤中讀取壓縮文件末尾處的壓縮信息,解析壓縮信息,得到需要讀取的數(shù)據(jù)在壓 縮文件中的相應(yīng)位置和長度,從U盤中讀取壓縮文件的相應(yīng)塊,解壓縮這些數(shù)據(jù) 塊最后得到原始數(shù)據(jù)。
所述U盤壓縮驅(qū)動程序在解壓縮U盤上的文件數(shù)據(jù)到臨時目錄的重定向文件 時,會記錄己解壓的數(shù)據(jù)段地址和長度到一個雙向鏈表中,如果讀操作所要訪問 的數(shù)據(jù)段已經(jīng)包含在這個雙向鏈表時,鏈表保持不變,相反,鏈表向數(shù)據(jù)方向增 加,引起解壓縮操作,這樣就像一個可移動的窗口一樣,因此我們稱之為滑動窗 口的解壓縮方式。
為了方便用戶,使之覺得支持自動壓縮和解壓縮的U盤和普通U盤的用法完
全相同,這種u盤會在量產(chǎn)時由定制的量產(chǎn)工具劃分出一個隱藏分區(qū),u盤壓縮驅(qū)
動程序(USBZip Driver)和它的安裝程序會被下載到這個隱藏分區(qū)中,在用戶第 一次使用這種U盤時,在隱藏分區(qū)中的安裝程序會自動將U盤壓縮驅(qū)動程序 (USBZip Driver)裝入Windows操作系統(tǒng)。
如圖7所示,所述量產(chǎn)過程需要定制的U盤量產(chǎn)工具的配合,這個量產(chǎn)工具 會首先收集需要生產(chǎn)的U盤信息,同時按照廠商的要求檢測U盤,稱為準備階段;
其次是對U盤的物理層進行全面的檢測;然后將相關(guān)的配置信息放入U盤中;最
后按照產(chǎn)品的出廠要求設(shè)置u盤的詳細參數(shù),劃分出一個用戶不能看到的隱藏分
區(qū),并產(chǎn)生文件系統(tǒng),將編譯完成的驅(qū)動程序和它的安裝程序下載到隱藏分區(qū)中, 做最后的檢測,最后這部分功能是傳統(tǒng)的量產(chǎn)工具不具備的。
權(quán)利要求
1.U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于U盤中存儲有一個位于Window文件系統(tǒng)的輸入輸出子系統(tǒng)管理層和文件系統(tǒng)驅(qū)動層之間的U盤壓縮驅(qū)動程序,所述U盤壓縮驅(qū)動程序創(chuàng)建一個內(nèi)核線程;當用戶進程發(fā)出讀寫命令后,U盤壓縮驅(qū)動程序從輸入輸出子系統(tǒng)管理層攔截讀寫命令并判斷所述讀寫命令操作是否對指定的U盤進行;當讀寫命令操作是對指定的U盤進行時,所述U盤壓縮驅(qū)動程序調(diào)用Windows的文件系統(tǒng)驅(qū)動層進行讀寫操作后,所述內(nèi)核線程用于自動處理讀寫數(shù)據(jù)的壓縮和解壓縮。
2、 根據(jù)權(quán)利要求1所述的U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于所述U盤壓縮驅(qū)動程序在第一次使用時自動安裝,以后在每次插入U盤時,WINDOWS 會自動加載已安裝的U盤壓縮驅(qū)動程序;當U盤被拔出時,U盤壓縮驅(qū)動程序也會 被自動卸載。
3、 根據(jù)權(quán)利要求2所述的U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于所述U盤壓縮驅(qū)動程序自動加載后,打開U盤時,U盤壓縮驅(qū)動程序創(chuàng)建內(nèi)核線程;關(guān)閉U盤時,U盤壓縮驅(qū)動程序會終止該內(nèi)核線程。
4、 根據(jù)權(quán)利要求1所述的U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于 所述內(nèi)核線程一直處于睡眠狀態(tài),是通過U盤壓縮驅(qū)動程序調(diào)用Windows的文件 系統(tǒng)驅(qū)動層進行讀寫操作之后,U盤壓縮驅(qū)動程序為睡眠的內(nèi)核線程準備好必要的 數(shù)據(jù)才喚醒內(nèi)核線程,內(nèi)核線程在執(zhí)行完壓縮或者解壓縮后會繼續(xù)睡眠。
5、 根據(jù)權(quán)利要求1所述的U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于 所述U盤壓縮驅(qū)動程序調(diào)用Windows的文件系統(tǒng)驅(qū)動層進行讀寫操作之前,還進 行了文件夾重定向,將讀寫命令操作重新定向到硬盤上的一個臨時目錄中。
6、 '根據(jù)權(quán)利要求1所述的U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于 當讀與命令操作不是對指定的U盤進行時,輸入輸出子系統(tǒng)管理層就將讀寫命令 操作交給Windows的文件系統(tǒng)驅(qū)動層進行處理。
7、 根據(jù)權(quán)利要求1所述的U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于 U盤上數(shù)據(jù)自動解壓縮的步驟為當Windows文件系統(tǒng)的輸入輸出子系統(tǒng)管理層層 傳遞下來的操作為讀操作時,U盤壓縮驅(qū)動程序會首先判斷讀操作是否是對指定U 盤進行,如果不是,U盤壓縮驅(qū)動程序直接調(diào)用Windows文件系統(tǒng)的文件系統(tǒng)驅(qū)動 層進行正常的讀操作處理;如果是,U盤壓縮驅(qū)動程序首先進行文件的重定向,將 讀取文件路徑上包含的文件夾依次重定向到磁盤上的一個臨時目錄中,然后U盤 壓縮驅(qū)動程序會在所述臨時目錄中創(chuàng)建一個與讀取文件同名的重定向文件,然后 調(diào)用Windows的文件系統(tǒng)驅(qū)動將壓縮信息和壓縮數(shù)據(jù)從U盤中讀出并為內(nèi)核線程 準備好相應(yīng)的數(shù)據(jù),喚醒內(nèi)核線程執(zhí)行解壓縮并等待內(nèi)核線程返回結(jié)果,當內(nèi)核 線程完成數(shù)據(jù)段的解壓縮并返回結(jié)果后,U盤壓縮驅(qū)動程序會記錄已解壓的數(shù)據(jù)段 信息,.弁將需要的數(shù)據(jù)返回給Windows文件系統(tǒng)的輸入輸出子系統(tǒng);當下一次 Windows又發(fā)起了對該文件相同數(shù)據(jù)段的讀操作,U盤壓縮驅(qū)動程序則根據(jù)上一次 的解壓縮記錄,直接調(diào)用Windows的文件系統(tǒng)驅(qū)動從重定向文件中讀出需要的數(shù) 據(jù)返回給Windows文件系統(tǒng)的輸入輸出子系統(tǒng)。
8、 根據(jù)權(quán)利要求1所述的U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于 U盤上數(shù)據(jù)自動壓縮的步驟為當Windows文件系統(tǒng)的輸入輸出子系統(tǒng)管理層傳遞 下來的操作為寫操作時,U盤壓縮驅(qū)動程序首先判斷所述讀操作是否是對指定U盤 進行,如果不是,U盤壓縮驅(qū)動程序直接調(diào)用Windows文件系統(tǒng)的文件系統(tǒng)驅(qū)動層 進行正常的寫操作處理;如果是,U盤壓縮驅(qū)動程序首先進行文件夾的重定向,將 讀取文件路徑上包含的文件夾依次重定向到磁盤上的一個臨時目錄中,接著調(diào)用 Windows文件系統(tǒng)的文件系統(tǒng)驅(qū)動層將數(shù)據(jù)先寫入磁盤的臨時目錄中,然后U盤壓 縮驅(qū)動程序為內(nèi)核線程準備好相應(yīng)的數(shù)據(jù),喚醒內(nèi)核線程并等待內(nèi)核線程返回結(jié) 果,當內(nèi)核線程進行了數(shù)據(jù)的解壓縮并返回結(jié)果后,U盤壓縮驅(qū)動程序最后調(diào)用 Windows文件系統(tǒng)的文件系統(tǒng)驅(qū)動層將數(shù)據(jù)寫入U盤。
9、 根據(jù)權(quán)利要求1所述的l]盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在于 所述壓縮是當寫文件到U盤時,首先將文件的數(shù)據(jù)按照指定的大小分段,然后判 斷數(shù)據(jù)是否需要進行壓縮,如果不需要,則直接將所有段的原始數(shù)據(jù)寫入U盤即 可,如果需要,,那么就進行數(shù)據(jù)壓縮并將壓縮后的數(shù)據(jù)寫入U盤,最后還要將壓 縮每段數(shù)據(jù)時產(chǎn)生的壓縮信息組合起來構(gòu)成整個文件的壓縮信息寫入U盤壓縮文 件的末尾;所述解壓縮是當讀文件時,首先判斷文件是否為USBZip Driver壓縮 的文件,如果不是,則從U盤中直接讀取文件中相應(yīng)位置的數(shù)據(jù)即可,如果是, 則先從U盤中讀取壓縮文件末尾處的壓縮信息,解析壓縮信息,得到需要讀取數(shù) 據(jù)在壓縮文件中的相應(yīng)位置和長度,從U盤中讀取壓縮文件的相應(yīng)塊,解壓縮這 些數(shù)據(jù)塊最后得到原始數(shù)據(jù);所述U盤壓縮驅(qū)動程序在解壓縮U盤上的文件數(shù)據(jù) 到臨時目錄的重定向文件時,將已解壓的數(shù)據(jù)段地址和長度記錄到一個雙向鏈表 中,當讀操作所要訪問的數(shù)據(jù)段已經(jīng)包含在所述的雙向鏈表時,鏈表保持不變, 當讀操作所要訪問的數(shù)據(jù)段不包含在所述的雙向鏈表時,鏈表向數(shù)據(jù)方向增加, 引起解壓縮操作。
10、根據(jù)權(quán)利要求1所述的U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,其特征在 于所述U盤壓縮驅(qū)動程序和它的安裝程序被下載到U盤在量產(chǎn)時由定制的量產(chǎn) 工具劃分出的一個隱藏分區(qū)中,在用戶第一次使用這種U盤時,在隱藏分區(qū)中的 安裝程序會自動將U盤壓縮驅(qū)動程序裝入Windows操作系統(tǒng)。
全文摘要
本發(fā)明公開了U盤上數(shù)據(jù)自動壓縮和解壓縮的方法,U盤中存儲有一個位于Window文件系統(tǒng)的輸入輸出子系統(tǒng)管理層和文件系統(tǒng)驅(qū)動層之間的U盤壓縮驅(qū)動程序,所述U盤壓縮驅(qū)動程序創(chuàng)建一個內(nèi)核線程;當用戶進程發(fā)出讀寫命令后,U盤壓縮驅(qū)動程序從輸入輸出子系統(tǒng)管理層攔截讀寫命令并判斷所述讀寫命令操作是否對指定的U盤進行;當讀寫命令操作是對指定的U盤進行時,所述U盤壓縮驅(qū)動程序調(diào)用Windows的文件系統(tǒng)驅(qū)動層進行讀寫操作后,所述內(nèi)核線程用于自動處理讀寫數(shù)據(jù)的壓縮和解壓縮;本發(fā)明通過在U盤上安裝數(shù)據(jù)處理的軟件來解決數(shù)據(jù)的壓縮和解壓縮,從而不用擴大U盤容量就可以有更大的存儲量,使用方便,安全性和可靠性高。
文檔編號G06F9/445GK101373436SQ20081004599
公開日2009年2月25日 申請日期2008年9月5日 優(yōu)先權(quán)日2008年9月5日
發(fā)明者姚立行, 張寧軍 申請人:四川登巔微電子有限公司