Fat32格式的usb設備重定向后的數(shù)據(jù)讀取方法和系統(tǒng)的制作方法
【專利摘要】一種FAT32格式的USB設備重定向后的文件分配表讀取方法,包括以下步驟:接收USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求;修改數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量;將修改后的所述數(shù)據(jù)請求發(fā)送給USB設備接入端;接收USB設備接入端返回的文件分配表數(shù)據(jù);將文件分配表數(shù)據(jù)進行緩存;當所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)存儲于緩存中時,從緩存中讀取數(shù)據(jù)并回復USB設備驅(qū)動。上述方法可減少USB設備重定向端與USB設備接入端之間的通信交互,縮短USB設備重定向端讀取到FAT32格式的USB設備的文件分配表的時間。此外,還提供一種FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)。
【專利說明】FAT32格式的USB設備重定向后的數(shù)據(jù)讀取方法和系統(tǒng)
【【技術領域】】
[0001]本發(fā)明涉及網(wǎng)絡及計算機【技術領域】,特別涉及一種FAT32格式的USB設備重定向后的文件分配表讀取方法和系統(tǒng)。
【【背景技術】】
[0002]USB重定向技術根據(jù)USB規(guī)范將接入到一臺計算機的USB設備重定向到另一臺計算機,由另一臺計算機計算USB設備的數(shù)據(jù),而第一臺計算機只負責界面顯示。例如,VDI(Virtual Desktop Infrastructure,虛擬桌面基礎架構(gòu))環(huán)境中,采用“集中計算,分布顯示”的原則,通過虛擬化技術,將所有客戶端的運算合為一體,在數(shù)據(jù)處理中心內(nèi)進行集中處理;而客戶端僅負責輸入輸出與界面顯示,不參與任何計算。在VDI環(huán)境中,當客戶端計算機接入USB設備時,則需要采用USB重定向技術將USB設備重定向到用于數(shù)據(jù)處理的服務器。
[0003]USB設備驅(qū)動用于按照USB存儲設備傳輸協(xié)議(例如BOT協(xié)議,即BuIk OnlyTransport協(xié)議)解析USB設備存儲的數(shù)據(jù)(以下簡稱USB數(shù)據(jù))。不同的USB設備對應不同的USB設備驅(qū)動。
[0004]在USB重定向技術中,接入USB設備的計算機(以下稱為USB設備接入端)不需要安裝USB設備驅(qū)動,而是由負責數(shù)據(jù)處理的計算機(以下稱為USB設備重定向端,也可稱為服務端)安裝USB設備驅(qū)動。USB設備接入端中由USB數(shù)據(jù)讀寫收發(fā)驅(qū)動對USB數(shù)據(jù)進行讀寫、將USB數(shù)據(jù)發(fā)送給USB設備重定向端并處理USB設備重定向端的USB數(shù)據(jù)請求(包括對USB數(shù)據(jù)的讀請求和寫請求等)。USB設備重定向端中,文件系統(tǒng)驅(qū)動與文件系統(tǒng)協(xié)同工作來處理文件I/O操作,將USB數(shù)據(jù)請求發(fā)送給USB設備驅(qū)動。USB設備重定向端的USB設備驅(qū)動將USB數(shù)據(jù)請求發(fā)送給USB設備重定向端的虛擬USB設備(也稱為虛擬總線),由虛擬USB設備將USB數(shù)據(jù)請求發(fā)送給USB設備接入端的USB數(shù)據(jù)讀寫收發(fā)驅(qū)動,當接收到USB設備接入端的USB數(shù)據(jù)讀寫收發(fā)驅(qū)動發(fā)送的USB數(shù)據(jù)時,虛擬USB設備將USB數(shù)據(jù)傳輸給USB設備驅(qū)動,USB設備驅(qū)動解析USB數(shù)據(jù)后,將USB數(shù)據(jù)傳輸給文件系統(tǒng)驅(qū)動。
[0005]Windows系統(tǒng)的文件系統(tǒng)驅(qū)動在讀取FAT32格式的USB數(shù)據(jù)時,一次至多只請求4K數(shù)據(jù),而每次數(shù)據(jù)請求都至少要經(jīng)歷一次USB設備接入端與USB設備重定向端之間的通信交互,若再加上讀取數(shù)據(jù)前測試數(shù)據(jù)是否有效及讀完數(shù)據(jù)后報告狀態(tài)這兩個過程,則每次數(shù)據(jù)請求要經(jīng)歷三次USB設備接入端與USB設備重定向端之間的通信交互。
[0006]USB設備接入端的FAT32格式的USB設備重定向到USB設備重定向端后,USB設備重定向端需要讀取USB設備引導區(qū)和文件分配表區(qū)的數(shù)據(jù)以得到USB設備的基本信息。而FAT32格式的USB設備的文件分配表的數(shù)據(jù)量比較大,其與USB設備的容量有關,一個容量為4G的USB設備的文件分配表的數(shù)據(jù)量大小為4M。USB設備重定向端向USB設備接入端每次請求的數(shù)據(jù)量小,導致USB設備重定向端讀取USB設備的文件分配表時需要與USB設備接入端之間進行頻繁的通信交互,從而延長了 USB設備重定向端讀取到文件分配表所需的時間?!?br/>【發(fā)明內(nèi)容】
】
[0007]基于此,有必要提供一種FAT32格式的USB設備重定向后的數(shù)據(jù)讀取方法和系統(tǒng),可縮短USB設備重定向端讀取到FAT32格式的USB設備的文件分配表的時間。
[0008]一種FAT32格式的USB設備重定向后的文件分配表讀取方法,包括以下步驟:
[0009]接收USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求;
[0010]修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量;
[0011 ] 將修改后的所述數(shù)據(jù)請求發(fā)送給USB設備接入端;
[0012]接收USB設備接入端返回的文件分配表數(shù)據(jù);
[0013]將文件分配表數(shù)據(jù)進行緩存;
[0014]當所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)存儲于緩存中時,從緩存中讀取數(shù)據(jù)并回復USB設備驅(qū)動。
[0015]在其中一個實施例中,所述方法包括以下步驟:
[0016]接收USB設備驅(qū)動的USB數(shù)據(jù)請求,判斷所述USB數(shù)據(jù)請求是否為讀取USB設備的文件分配表的數(shù)據(jù)請求;
[0017]在接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,執(zhí)行所述接收USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后的步驟。
[0018]在其中一個實施例中,所述方法包括以下步驟:
[0019]在第一次接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,申請并開啟用于緩存文件分配表的緩存空間;
[0020]在USB設備驅(qū)動將USB設備的文件分配表讀取完畢之后,關閉所述緩存空間;
[0021]所述將文件分配表數(shù)據(jù)進行緩存的步驟為:將所述文件分配表數(shù)據(jù)保存到所述緩存空間。
[0022]在其中一個實施例中,所述方法包括以下步驟:
[0023]判斷所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)是否存儲于所述緩存空間中;
[0024]若所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)未存儲于所述緩存空間中,執(zhí)行所述修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量的步驟。
[0025]在其中一個實施例中,所述修改所述數(shù)據(jù)請求的步驟還包括:在所述數(shù)據(jù)請求中添加數(shù)據(jù)需緩存的標記;
[0026]所述方法包括步驟:
[0027]判斷USB設備接入端返回的USB數(shù)據(jù)中是否包含數(shù)據(jù)需緩存的標記;
[0028]若USB設備接入端返回的USB數(shù)據(jù)中包含數(shù)據(jù)需緩存的標記,將所述USB數(shù)據(jù)保存到所述緩存空間。
[0029]一種FAT32格式的USB設備重定向后的數(shù)據(jù)讀取系統(tǒng),包括:
[0030]請求接收模塊,用于接收USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求;
[0031]請求修改模塊,用于修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量;
[0032]請求發(fā)送模塊,用于將修改后的所述數(shù)據(jù)請求發(fā)送給USB設備接入端;
[0033]數(shù)據(jù)接收模塊,用于接收USB設備接入端返回的文件分配表數(shù)據(jù);[0034]數(shù)據(jù)緩存模塊,用于將文件分配表數(shù)據(jù)進行緩存;
[0035]請求回復模塊,用于當所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)存儲于緩存中時,從緩存中讀取數(shù)據(jù)并回復USB設備驅(qū)動。
[0036]在其中一個實施例中,所述請求接收模塊用于接收USB設備驅(qū)動的USB數(shù)據(jù)請求;
[0037]所述系統(tǒng)還包括請求判斷模塊,用于判斷所述USB數(shù)據(jù)請求是否為讀取USB設備的文件分配表的數(shù)據(jù)請求;
[0038]所述請求修改模塊用于在接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量。
[0039]在其中一個實施例中,所述系統(tǒng)還包括緩存開啟模塊,用于在第一次接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,申請并開啟用于緩存文件分配表的緩存空間;
[0040]所述數(shù)據(jù)緩存模塊用于將所述文件分配表數(shù)據(jù)保存到所述緩存空間;
[0041]所述系統(tǒng)還包括緩存關閉模塊,用于在USB設備驅(qū)動將USB設備的文件分配表讀取完畢之后,關閉所述緩存空間。
[0042]在其中一個實施例中,所述系統(tǒng)還包括已緩存判斷模塊,用于判斷所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)是否存儲于所述緩存空間中;
[0043]所述請求修改模塊用于若所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)未存儲于所述緩存空間中,修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量。
[0044]在其中一個實施例中,所述請求修改模塊修改所述數(shù)據(jù)請求的過程還包括在所述數(shù)據(jù)請求中添加數(shù)據(jù)需緩存的標記;
[0045]所述系統(tǒng)還包括需緩存判斷模塊,用于判斷USB設備接入端返回的USB數(shù)據(jù)中是否包含數(shù)據(jù)需緩存的標記;
[0046]所述數(shù)據(jù)緩存模塊用于若USB設備接入端返回的USB數(shù)據(jù)中包含數(shù)據(jù)需緩存的標記,將所述USB數(shù)據(jù)保存到所述緩存空間。
[0047]由于USB設備驅(qū)動從文件系統(tǒng)驅(qū)動接收USB數(shù)據(jù)請求,而文件系統(tǒng)驅(qū)動在讀取FAT32格式的USB數(shù)據(jù)時一次至多只請求4K數(shù)據(jù),因此USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求所請求的數(shù)據(jù)至多只有4K,上述FAT32格式的USB設備重定向后的文件分配表讀取方法和系統(tǒng),在接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,增加了數(shù)據(jù)請求中請求的數(shù)據(jù)量,在接收到USB設備接入端返回的文件分配表數(shù)據(jù)后,將文件分配表數(shù)據(jù)進行緩存,當下一次USB設備驅(qū)動請求的文件分配表數(shù)據(jù)存儲于緩存中時,直接從緩存中讀取數(shù)據(jù)回復USB設備驅(qū)動即可,由于USB設備重定向后的初始階段,USB設備驅(qū)動對文件分 配表數(shù)據(jù)是順序讀取的,因此緩存命中率極高,從而可減少USB設備重定向端與USB設備接入端之間的通信交互,縮短USB設備重定向端讀取到FAT32格式的USB設備的文件分配表的時間。
【【專利附圖】
【附圖說明】】
[0048]圖1為一個實施例中的FAT32格式的USB設備重定向后的文件分配表讀取方法的流程示意圖;[0049]圖2A為一個實施例中處理USB設備驅(qū)動的USB數(shù)據(jù)請求的過程的流程示意圖;
[0050]圖2B為一個實施例中處理USB設備接入端返回的USB數(shù)據(jù)的過程的流程示意圖;
[0051]圖3為一個實施例中的FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)的結(jié)構(gòu)示意圖;
[0052]圖4為一個實施例中的FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)的結(jié)構(gòu)示意圖;
[0053]圖5為一個實施例中的FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)的結(jié)構(gòu)示意圖;
[0054]圖6為一個實施例中的FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)的結(jié)構(gòu)示意圖;
[0055]圖7為一個實施例中的FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)的結(jié)構(gòu)示意圖;
[0056]圖8為一個實施例中的FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)的結(jié)構(gòu)示意圖;
[0057]圖9A為一個實施例中USB請求處理模塊的結(jié)構(gòu)示意圖;
[0058]圖9B為一個實施例中USB數(shù)據(jù)處理模塊的結(jié)構(gòu)示意圖。
【【具體實施方式】】
[0059]如圖1所示,在一個實施例中,一種FAT32格式的USB設備重定向后的文件分配表讀取方法,包括以下步驟:
[0060]步驟S101,接收USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求。
[0061]在一個實施例中,上述FAT32格式的USB設備重定向后的文件分配表讀取方法,包括以下步驟:
[0062]接收USB設備驅(qū)動的USB數(shù)據(jù)請求,判斷USB數(shù)據(jù)請求是否為讀取USB設備的文件分配表的數(shù)據(jù)請求;在接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,執(zhí)行步驟SlOl之后的步驟。
[0063]可在USB設備的第一個扇區(qū)即引導扇區(qū)讀取USB設備的文件分配表的偏移地址和長度。當接收到USB設備驅(qū)動的USB數(shù)據(jù)請求時,可解析USB數(shù)據(jù)請求的命令類型及命令請求的數(shù)據(jù)的偏移地址和長度,根據(jù)請求的數(shù)據(jù)的偏移地址和長度以及文件分配表的偏移地址和長度計算出請求的數(shù)據(jù)是否為文件分配表數(shù)據(jù)。若命令類型為讀類型,且請求的數(shù)據(jù)為文件分配表數(shù)據(jù),則可判定USB數(shù)據(jù)請求為讀取USB設備的文件分配表的數(shù)據(jù)請求。
[0064]步驟S102,修改數(shù)據(jù)請求以增加數(shù)據(jù)請求中請求的數(shù)據(jù)量。
[0065]可增加請求的數(shù)據(jù)量到萬級以上字節(jié)。
[0066]步驟S103,將修改后的數(shù)據(jù)請求發(fā)送給USB設備接入端。
[0067]步驟S104,接收USB設備接入端返回的文件分配表數(shù)據(jù)。
[0068]步驟S105,將文件分配表數(shù)據(jù)進行緩存。
[0069]步驟S106,當USB設備驅(qū)動請求的文件分配表數(shù)據(jù)存儲于緩存中時,從緩存中讀取數(shù)據(jù)并回復USB設備驅(qū)動。
[0070] 在一個實施例中,上述FAT32格式的USB設備重定向后的文件分配表讀取方法包括以下步驟:
[0071]在第一次接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,申請并開啟用于緩存文件分配表的緩存空間。
[0072]在USB設備驅(qū)動將USB設備的文件分配表讀取完畢之后,關閉緩存空間。
[0073]本實施例中,步驟S105可將文件分配表數(shù)據(jù)保存到開啟的緩存空間。
[0074]在一個實施例中,上述FAT32格式的USB設備重定向后的文件分配表讀取方法包括以下步驟:
[0075]判斷USB設備驅(qū)動請求的文件分配表數(shù)據(jù)是否存儲于緩存空間中;
[0076]若USB設備驅(qū)動請求的文件分配表數(shù)據(jù)未存儲于緩存空間中,再執(zhí)行步驟S102。
[0077]在一個實施例中,上述修改數(shù)據(jù)請求的步驟還包括:在數(shù)據(jù)請求中添加數(shù)據(jù)需緩存的標記;
[0078]上述FAT32格式的USB設備重定向后的文件分配表讀取方法包括以下步驟:
[0079]判斷USB設備接入端返回的USB數(shù)據(jù)中是否包含數(shù)據(jù)需緩存的標記;
[0080]若USB設備接入端返回的USB數(shù)據(jù)中包含數(shù)據(jù)需緩存的標記,將USB數(shù)據(jù)保存到緩存空間。
[0081]USB設備接入端回復USB設備重定向端的數(shù)據(jù)請求的回復數(shù)據(jù)中,保留有數(shù)據(jù)請求的部分原字段,簡稱為保留字段??蓪?shù)據(jù)需緩存的標記添加到數(shù)據(jù)請求中的保留字段中;當接收到USB設備接入端返回的USB數(shù)據(jù)時,可解析USB數(shù)據(jù)中的保留字段,判斷保留字段中是否包含數(shù)據(jù)需緩存的標記。
[0082]在一個實施例中,一種FAT32格式的USB設備重定向后的文件分配表讀取方法,包括處理USB設備驅(qū)動的USB數(shù)據(jù)請求的過程、以及處理USB設備接入端返回的USB數(shù)據(jù)的過程。
[0083]如圖2A所示,處理USB設備驅(qū)動的USB數(shù)據(jù)請求的過程包括以下步驟:
[0084]步驟S201,接收USB設備驅(qū)動的USB數(shù)據(jù)請求。
[0085]步驟S202,判斷USB數(shù)據(jù)請求是否為讀取USB設備的文件分配表的數(shù)據(jù)請求,并判斷用于緩存文件分配表的緩存空間是否已開啟;若USB數(shù)據(jù)請求為讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間未開啟,則執(zhí)行步驟S203 ;若USB數(shù)據(jù)請求為讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間已開啟,則執(zhí)行步驟S206 ;若USB數(shù)據(jù)請求不是讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間未開啟,則執(zhí)行步驟S208 ;若USB數(shù)據(jù)請求不是讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間已開啟,則執(zhí)行步驟S209。
[0086]步驟S203,申請并開啟用于緩存文件分配表的緩存空間,進入步驟S204。
[0087]若接收到的USB數(shù)據(jù)請求為讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間未開啟,則說明第一次接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求,從而此時可申請并開啟用于緩存文件分配表的緩存空間。
[0088]步驟S204,增加USB數(shù)據(jù)請求中請求的數(shù)據(jù)量,并在USB數(shù)據(jù)請求中添加數(shù)據(jù)需緩存的標記,進入步驟S205。
[0089]步驟S205,將修改后的USB數(shù)據(jù)請求發(fā)送給USB設備接入端。
[0090]步驟S206,判斷USB數(shù)據(jù)請求所請求的數(shù)據(jù)是否存儲于緩存空間中,若是,則執(zhí)行步驟S207,若否,則執(zhí)行步驟S204。
[0091]步驟S207,從緩存空間中讀取請求的數(shù)據(jù),將請求的數(shù)據(jù)回復給USB設備驅(qū)動。
[0092]步驟S208,將USB數(shù)據(jù)請求轉(zhuǎn)發(fā)給USB設備接入端。
[0093]步驟S209,關閉用于緩存文件分配表的緩存空間,進入步驟S208。
[0094]若USB數(shù)據(jù)請求不是讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間已開啟,則說明USB設備驅(qū)動已將USB設備的文件分配表讀取完畢,從而此時可關閉用于緩存文件分配表的緩存空間。
[0095]如圖2B所示,處理USB設備接入端返回的USB數(shù)據(jù)的過程包括以下步驟:
[0096]步驟S210,接收USB設備接入端返回的USB數(shù)據(jù)。
[0097]步驟S211,判斷用于緩存文件分配表的緩存空間是否已開啟,若是,則執(zhí)行步驟S212,若否,則執(zhí)行步驟S214。
[0098]步驟S212,判斷USB數(shù)據(jù)中是否包含數(shù)據(jù)需緩存的標記,若是,則執(zhí)行步驟S213,若否,則執(zhí)行步驟S214。
[0099]步驟S213,將USB數(shù)據(jù)保存到用于緩存文件分配表的緩存空間,并獲取USB設備驅(qū)動的數(shù)據(jù)請求對應的數(shù)據(jù)返回給USB設備驅(qū)動。
[0100]步驟S214,將USB數(shù)據(jù)轉(zhuǎn)發(fā)給USB設備驅(qū)動。
[0101]如圖3所示,在一個實施例中,一種FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng),包括請求接收模塊301、請求修改模塊302、請求發(fā)送模塊303、數(shù)據(jù)接收模塊304、數(shù)據(jù)緩存模塊305和請求回復模塊306,其中:
[0102]請求接收模塊301用于接收USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求。
[0103]請求修改模塊302用于修改數(shù)據(jù)請求以增加數(shù)據(jù)請求中請求的數(shù)據(jù)量。
[0104]請求修改模塊302用于修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量,可增加請求的數(shù)據(jù)量到萬級以上字節(jié)。
[0105]在一個實施例中,請求接收模塊301用于接收USB設備驅(qū)動的USB數(shù)據(jù)請求;如圖4所示,上述FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)還包括請求判斷模塊402,用于判斷USB數(shù)據(jù)請求是否為讀取USB設備的文件分配表的數(shù)據(jù)請求;請求修改模塊302在接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,修改數(shù)據(jù)請求以增加數(shù)據(jù)請求中請求的數(shù)據(jù)量。
[0106]本實施例中,如圖5所示,上述FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)還包括文件分配表地址獲取模塊502,用于在USB設備的第一個扇區(qū)即引導扇區(qū)讀取USB設備的文件分配表的偏移地址和長度。當接收到USB設備驅(qū)動的USB數(shù)據(jù)請求時,請求判斷模塊402可解析USB數(shù)據(jù)請求的命令類型及命令請求的數(shù)據(jù)的偏移地址和長度,根據(jù)請求的數(shù)據(jù)的偏移地址和長度以及文件分配表的偏移地址和長度計算出請求的數(shù)據(jù)是否為文件分配表數(shù)據(jù);若命令類型為讀類型,且請求的數(shù)據(jù)為文件分配表數(shù)據(jù),則請求判斷模塊402可判定USB數(shù)據(jù)請求為讀取USB設備的文件分配表的數(shù)據(jù)請求。
[0107]請求發(fā)送模塊303用于將修改后的數(shù)據(jù)請求發(fā)送給USB設備接入端。
[0108]數(shù)據(jù)接收模塊304用于接收USB設備接入端返回的文件分配表數(shù)據(jù)。
[0109]數(shù)據(jù)緩存模塊305用于將文件分配表數(shù)據(jù)進行緩存。[0110]請求回復模塊306用于當USB設備驅(qū)動請求的文件分配表數(shù)據(jù)存儲于緩存中時,從緩存中讀取數(shù)據(jù)并回復USB設備驅(qū)動。
[0111]如圖6所示,在一個實施例中,上述FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)還包括緩存開啟模塊602和緩存關閉模塊604,其中:緩存開啟模塊602用于在第一次接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,申請并開啟用于緩存文件分配表的緩存空間。緩存關閉模塊604用于在USB設備驅(qū)動將USB設備的文件分配表讀取完畢之后,關閉緩存空間。
[0112]本實施例中,數(shù)據(jù)緩存模塊305可將文件分配表數(shù)據(jù)保存到開啟的緩存空間。
[0113]在一個實施例中,如圖7所不,上述FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)還包括已緩存判斷模塊702,用于判斷USB設備驅(qū)動請求的文件分配表數(shù)據(jù)是否存儲于緩存空間中,請求修改模塊302用于若USB設備驅(qū)動請求的文件分配表數(shù)據(jù)未存儲于緩存空間中,修改數(shù)據(jù)請求以增加數(shù)據(jù)請求中請求的數(shù)據(jù)量。
[0114]在一個實施例中,請求修改模塊302修改數(shù)據(jù)請求的過程還包括在數(shù)據(jù)請求中添加數(shù)據(jù)需緩存的標記;如圖8所示,上述FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng)還包括需緩存判斷模塊802,用于判斷USB設備接入端返回的USB數(shù)據(jù)中是否包含數(shù)據(jù)需緩存的標記;數(shù)據(jù)緩存模塊305用于若USB設備接入端返回的USB數(shù)據(jù)中包含數(shù)據(jù)需緩存的標記,將USB數(shù)據(jù)保存到緩存空間。
[0115]USB設備接入端回復USB設備重定向端的數(shù)據(jù)請求的回復數(shù)據(jù)中,保留有數(shù)據(jù)請求的部分原字段,簡稱為保留字段。請求修改模塊302可將數(shù)據(jù)需緩存的標記添加到數(shù)據(jù)請求中的保留字段中;當接收到USB設備接入端返回的USB數(shù)據(jù)時,需緩存判斷模塊802可解析USB數(shù)據(jù)中的保留字段,判斷保留字段中是否包含數(shù)據(jù)需緩存的標記。
[0116]在一個實施例中,一種FAT32格式的USB設備重定向后的文件分配表讀取系統(tǒng),包括USB請求處理模塊和USB數(shù)據(jù)處理模塊,其中:USB請求處理模塊用于處理USB設備驅(qū)動的USB數(shù)據(jù)請求,USB數(shù)據(jù)處理模塊用于處理USB設備接入端返回的USB數(shù)據(jù)。
[0117]如圖9A所示,USB請求處理模塊包括請求接收模塊301、請求判斷模塊402、緩存開啟狀態(tài)第一判斷模塊901、緩存開啟模塊602、請求修改模塊302、請求發(fā)送模塊303、已緩存判斷模塊702、第一請求回復模塊902、請求轉(zhuǎn)發(fā)模塊903和緩存關閉模塊604,其中:
[0118]請求接收模塊401用于接收USB設備驅(qū)動的USB數(shù)據(jù)請求。
[0119]請求判斷模塊402用于判斷USB數(shù)據(jù)請求是否為讀取USB設備的文件分配表的數(shù)據(jù)請求。
[0120]緩存開啟狀態(tài)第一判斷模塊901用于判斷用于緩存文件分配表的緩存空間是否已開啟。
[0121]緩存開啟模塊602用于若USB數(shù)據(jù)請求為讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間未開啟,則申請并開啟用于緩存文件分配表的緩存空間,通知請求修改模塊405進行處理。
[0122]若接收到的USB數(shù)據(jù)請求為讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間未開啟,則說明第一次接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求,從而此時緩存開啟模塊602可申請并開啟用于緩存文件分配表的緩存空間。[0123]請求修改模塊405用于增加USB數(shù)據(jù)請求中請求的數(shù)據(jù)量,并在USB數(shù)據(jù)請求中添加數(shù)據(jù)需緩存的標記,并通知請求發(fā)送模塊406進行處理。
[0124]請求發(fā)送模塊406用于將修改后的USB數(shù)據(jù)請求發(fā)送給USB設備接入端。
[0125]已緩存判斷模塊702用于若USB數(shù)據(jù)請求為讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間已開啟,則判斷USB數(shù)據(jù)請求所請求的數(shù)據(jù)是否存儲于緩存空間中,若是,則通知第一請求回復模塊902進行處理,若否,則通知請求修改模塊405進行處理。
[0126]第一請求回復模塊902用于從緩存空間中讀取請求的數(shù)據(jù),將請求的數(shù)據(jù)回復給USB設備驅(qū)動。
[0127]請求轉(zhuǎn)發(fā)模塊903用于若USB數(shù)據(jù)請求不是讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間未開啟,則將USB數(shù)據(jù)請求轉(zhuǎn)發(fā)給USB設備接入端。
[0128]緩存關閉模塊604用于若USB數(shù)據(jù)請求不是讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間已開啟,則關閉用于緩存文件分配表的緩存空間,通知請求轉(zhuǎn)發(fā)模塊903進行處理。
[0129]若USB數(shù)據(jù)請求不是讀取USB設備的文件分配表的數(shù)據(jù)請求,且用于緩存文件分配表的緩存空間已開啟,則說明USB設備驅(qū)動已將USB設備的文件分配表讀取完畢,從而此時緩存關閉模塊604可關閉用于緩存文件分配表的緩存空間。
[0130]如圖9B所示,USB數(shù)據(jù)處理模塊包括數(shù)據(jù)接收模塊304、緩存開啟狀態(tài)第二判斷模塊904、需緩存判斷模塊802、數(shù)據(jù)緩存模塊305、第二請求回復模塊905和數(shù)據(jù)轉(zhuǎn)發(fā)模塊906,其中:
[0131]數(shù)據(jù)接收模塊304用于接收USB設備接入端返回的USB數(shù)據(jù)。
[0132]緩存開啟狀態(tài)第二判斷模塊904用于判斷用于緩存文件分配表的緩存空間是否已開啟,若是,則通知需緩存判斷模塊802進行處理,若否,則通知數(shù)據(jù)轉(zhuǎn)發(fā)模塊906進行處理。
[0133]需緩存判斷模塊802用于判斷USB數(shù)據(jù)中是否包含數(shù)據(jù)需緩存的標記,若是,則通知數(shù)據(jù)緩存模塊305進行處理,若否,則通知數(shù)據(jù)轉(zhuǎn)發(fā)模塊906進行處理。
[0134]數(shù)據(jù)緩存模塊305用于將USB數(shù)據(jù)保存到用于緩存文件分配表的緩存空間,通知第二請求回復模塊905進行處理。
[0135]第二請求回復模塊905用于獲取USB設備驅(qū)動的數(shù)據(jù)請求對應的數(shù)據(jù)返回給USB設備驅(qū)動。
[0136]數(shù)據(jù)轉(zhuǎn)發(fā)模塊906用于將USB數(shù)據(jù)轉(zhuǎn)發(fā)給USB設備驅(qū)動。
[0137]由于USB設備驅(qū)動從文件系統(tǒng)驅(qū)動接收USB數(shù)據(jù)請求,而文件系統(tǒng)驅(qū)動在讀取FAT32格式的USB數(shù)據(jù)時一次至多只請求4K數(shù)據(jù),因此USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求所請求的數(shù)據(jù)至多只有4K,上述FAT32格式的USB設備重定向后的文件分配表讀取方法和系統(tǒng),在接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,增加了數(shù)據(jù)請求中請求的數(shù)據(jù)量,在接收到USB設備接入端返回的文件分配表數(shù)據(jù)后,將文件分配表數(shù)據(jù)進行緩存,當下一次USB設備驅(qū)動請求的文件分配表數(shù)據(jù)存儲于緩存中時,直接從緩存中讀取數(shù)據(jù)回復USB設備驅(qū)動即可,由于USB設備重定向后的初始階段,USB設備驅(qū)動對文件分配表數(shù)據(jù)是順序讀取的,因此緩存命中率極高,從而可減少USB設備重定向端與USB設備接入端之間的通信交互,縮短USB設備重定向端讀取到FAT32格式的USB設備的文件分配表的時間。
[0138] 以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權(quán)利要求為準。
【權(quán)利要求】
1.一種FAT32格式的USB設備重定向后的文件分配表讀取方法,包括以下步驟: 接收USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求; 修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量; 將修改后的所述數(shù)據(jù)請求發(fā)送給USB設備接入端; 接收USB設備接入端返回的文件分配表數(shù)據(jù); 將文件分配表數(shù)據(jù)進行緩存; 當所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)存儲于緩存中時,從緩存中讀取數(shù)據(jù)并回復USB設備驅(qū)動。
2.根據(jù)權(quán)利要求1所述的FAT32格式的USB設備重定向后的文件分配表讀取方法,其特征在于,所述方法包括以下步驟: 接收USB設備驅(qū)動的USB數(shù)據(jù)請求,判斷所述USB數(shù)據(jù)請求是否為讀取USB設備的文件分配表的數(shù)據(jù)請求; 在接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,執(zhí)行所述接收USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后的步驟。
3.根據(jù)權(quán)利要求2所述的FAT32格式的USB設備重定向后的文件分配表讀取方法,其特征在于,所述方法包括以下步驟: 在第一次接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,申請并開啟用于緩存文件分配表的緩存空間; 在USB設備驅(qū)動將USB設備的文件分配表讀取完畢之后,關閉所述緩存空間; 所述將文件分配表數(shù)據(jù)進行緩存的步驟為:將所述文件分配表數(shù)據(jù)保存到所述緩存空間。
4.根據(jù)權(quán)利要求3所述的FAT32格式的USB設備重定向后的文件分配表讀取方法,其特征在于,所述方法包括以下步驟: 判斷所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)是否存儲于所述緩存空間中; 若所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)未存儲于所述緩存空間中,執(zhí)行所述修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量的步驟。
5.根據(jù)權(quán)利要求4所述的FAT32格式的USB設備重定向后的文件分配表讀取方法,其特征在于,所述修改所述數(shù)據(jù)請求的步驟還包括:在所述數(shù)據(jù)請求中添加數(shù)據(jù)需緩存的標記; 所述方法包括步驟: 判斷USB設備接入端返回的USB數(shù)據(jù)中是否包含數(shù)據(jù)需緩存的標記; 若USB設備接入端返回的USB數(shù)據(jù)中包含數(shù)據(jù)需緩存的標記,將所述USB數(shù)據(jù)保存到所述緩存空間。
6.一種FAT32格式的USB設備重定向后的數(shù)據(jù)讀取系統(tǒng),其特征在于,包括: 請求接收模塊,用于接收USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求; 請求修改模塊,用于修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量; 請求發(fā)送模塊,用于將修改后的所述數(shù)據(jù)請求發(fā)送給USB設備接入端; 數(shù)據(jù)接收模塊,用于接收USB設備接入端返回的文件分配表數(shù)據(jù); 數(shù)據(jù)緩存模塊,用于將文件分配表數(shù)據(jù)進行緩存;請求回復模塊,用于當所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)存儲于緩存中時,從緩存中讀取數(shù)據(jù)并回復USB設備驅(qū)動。
7.根據(jù)權(quán)利要求6所述的FAT32格式的USB設備重定向后的數(shù)據(jù)讀取系統(tǒng),其特征在于,所述請求接收模塊用于接收USB設備驅(qū)動的USB數(shù)據(jù)請求; 所述系統(tǒng)還包括請求判斷模塊,用于判斷所述USB數(shù)據(jù)請求是否為讀取USB設備的文件分配表的數(shù)據(jù)請求; 所述請求修改模塊用于在接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量。
8.根據(jù)權(quán)利要求7所述的FAT32格式的USB設備重定向后的數(shù)據(jù)讀取系統(tǒng),其特征在于,所述系統(tǒng)還包括緩存開啟模塊,用于在第一次接收到USB設備驅(qū)動的讀取USB設備的文件分配表的數(shù)據(jù)請求之后,申請并開啟用于緩存文件分配表的緩存空間; 所述數(shù)據(jù)緩存模塊用于將所述文件分配表數(shù)據(jù)保存到所述緩存空間; 所述系統(tǒng)還包括緩存關閉模塊,用于在USB設備驅(qū)動將USB設備的文件分配表讀取完畢之后,關閉所述緩存空間。
9.根據(jù)權(quán)利要求8所述的FAT32格式的USB設備重定向后的數(shù)據(jù)讀取系統(tǒng),其特征在于,所述系統(tǒng)還包括已緩存判斷模塊,用于判斷所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)是否存儲于所述緩存空間中; 所述請求修改模塊用于若所述USB設備驅(qū)動請求的文件分配表數(shù)據(jù)未存儲于所述緩存空間中,修改所述數(shù)據(jù)請求以增加所述數(shù)據(jù)請求中請求的數(shù)據(jù)量。
10.根據(jù)權(quán)利要求9所述的FAT32格式的USB設備重定向后的數(shù)據(jù)讀取系統(tǒng),其特征在于,所述請求修改模塊修改所述數(shù)據(jù)請求的過程還包括在所述數(shù)據(jù)請求中添加數(shù)據(jù)需緩存的標記; 所述系統(tǒng)還包括需緩存判斷模塊,用于判斷USB設備接入端返回的USB數(shù)據(jù)中是否包含數(shù)據(jù)需緩存的標記; 所述數(shù)據(jù)緩存模塊用于若USB設備接入端返回的USB數(shù)據(jù)中包含數(shù)據(jù)需緩存的標記,將所述USB數(shù)據(jù)保存到所述緩存空間。
【文檔編號】G06F17/30GK103914525SQ201410114869
【公開日】2014年7月9日 申請日期:2014年3月25日 優(yōu)先權(quán)日:2014年3月25日
【發(fā)明者】萬齊齊, 姜正文 申請人:深圳市深信服電子科技有限公司