亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

管理文件系統(tǒng)濾波器驅(qū)動(dòng)器的文件名的系統(tǒng)和方法

文檔序號:6369882閱讀:216來源:國知局
專利名稱:管理文件系統(tǒng)濾波器驅(qū)動(dòng)器的文件名的系統(tǒng)和方法
背景技術(shù)
文件系統(tǒng)驅(qū)動(dòng)器(FSD)管理文件系統(tǒng)格式。盡管FSD以內(nèi)核模式運(yùn)行,F(xiàn)SD和標(biāo)準(zhǔn)內(nèi)核模式驅(qū)動(dòng)器在許多方面不同。最大的不同是,每個(gè)FSD把自己登記為帶操作系統(tǒng)的文件系統(tǒng)驅(qū)動(dòng)器。置于文件系統(tǒng)驅(qū)動(dòng)器之上的濾波器驅(qū)動(dòng)器稱為文件系統(tǒng)濾波器驅(qū)動(dòng)器。文件系統(tǒng)濾波器驅(qū)動(dòng)器包括看文件系統(tǒng)請求以及可任意修改或完成請求的能力。文件系統(tǒng)濾波器驅(qū)動(dòng)器可包括用來執(zhí)行加密、病毒檢測和其他操作的濾波器驅(qū)動(dòng)器。
文件名檢索和格式化通常是文件系統(tǒng)濾波器驅(qū)動(dòng)器中實(shí)現(xiàn)的代碼的大部分。文件系統(tǒng)(例如,NTFS、FAT等)可在允許的文件名的大小各異。例如,NT文件系統(tǒng)設(shè)置名稱規(guī)格,把文件名路徑中的每個(gè)組分限為255字符而總文件名長度限于65536字符。文件名可含有Unicode字符、多個(gè)句號符和嵌入空間。然而,某些文件系統(tǒng)其文件名限于8(非Unicode)字符,后面是一句號符和一3字符擴(kuò)展名,通常稱為“8.3”格式。結(jié)果,當(dāng)初為這些文件系統(tǒng)所寫的某些應(yīng)用程序仍限于理解“8.3”格式或兼容文件名。在其他文件系統(tǒng)中,諸如NTFS,當(dāng)應(yīng)用程序請求短名時(shí),文件系統(tǒng)為長名文件生成可選“8.3,格式短名。長名對應(yīng)長于“8.3”格式的文件名、含有Unicode字符的文件名、有多個(gè)句號字符或一起始句號符的文件名及有嵌入空間的文件名。短名是文件的完全功能別名且和長名一樣存儲于同一目錄中??墒褂瞄L名和短名中的任何一個(gè)來打開、復(fù)制文件、從文件讀或?qū)懼廖募?br> 存在其他格式的文件名,文件系統(tǒng)濾波器驅(qū)動(dòng)器可啟動(dòng)對這些格式中的任一種的文件名的詢問。文件名通常由文件系統(tǒng)濾波器驅(qū)動(dòng)器用來控制在I/O操作期間應(yīng)采取何動(dòng)作。用戶或應(yīng)用程序可以許多不同的格式中的一種格式規(guī)定文件名。在某些情況下,文件系統(tǒng)濾波器驅(qū)動(dòng)器將文件名標(biāo)準(zhǔn)化為標(biāo)準(zhǔn)格式以檢查文件名對其操作的切合性。文件系統(tǒng)濾波器驅(qū)動(dòng)器通常也將文件名分析為段。例如,提供病毒檢測的文件系統(tǒng)濾波器驅(qū)動(dòng)器對文件名的擴(kuò)展名類型(例如.exe和.dll等)很有興趣,且希望分析來自文件名的擴(kuò)展名。目前,多濾波器驅(qū)動(dòng)器可將自身附加到一FSD,每個(gè)濾波器驅(qū)動(dòng)器通過就文件名詢問FSD耗費(fèi)資源。每個(gè)文件系統(tǒng)濾波器驅(qū)動(dòng)器包括代碼,并奉獻(xiàn)進(jìn)程時(shí)間,以管理和操縱文件名以實(shí)現(xiàn)其功能。
發(fā)明概要根據(jù)本發(fā)明,提供一種用來管理文件系統(tǒng)濾波器驅(qū)動(dòng)器的文件名的系統(tǒng)和方法。本發(fā)明包括用來處理和阻尼文件系統(tǒng)濾波器驅(qū)動(dòng)器(以下稱為濾波器驅(qū)動(dòng)器)的文件名操作的文件系統(tǒng)濾波器管理器(以下稱為濾波器管理器)。濾波器管理器向每個(gè)濾波器驅(qū)動(dòng)器提供公共文件名檢索和格式化功能。另外,濾波器管理器支持高速緩存共享于一或更多濾波器驅(qū)動(dòng)器間的名稱信息。高速緩存、文件名檢索和格式化功能通過加強(qiáng)濾波器管理器內(nèi)的文件名管理提高在文件系統(tǒng)內(nèi)管理文件名的效率。
本發(fā)明管理文件系統(tǒng)中濾波器驅(qū)動(dòng)器的文件名。本發(fā)明包括處理濾波器驅(qū)動(dòng)器的文件名詢問的濾波器管理器。濾波器管理器接收和處理位于驅(qū)動(dòng)器棧中的濾波器驅(qū)動(dòng)器的文件名請求。濾波器管理器為先前生成的文件名維護(hù)文件名信息結(jié)構(gòu)高速緩存。每個(gè)文件名信息結(jié)構(gòu)包括指示字表,該表包括對文件名段的指示字。濾波器管理器首先檢查高速緩存以判斷是否事先生成對應(yīng)濾波器驅(qū)動(dòng)器的文件名請求的文件名信息結(jié)構(gòu)。如果不存在這樣的文件名信息結(jié)構(gòu),濾波器管理器向文件名的提供者要求文件名。一旦生成文件名信息結(jié)構(gòu),濾波器管理器更新與文件名信息結(jié)構(gòu)相關(guān)的引用計(jì)數(shù)和時(shí)間戳。引用計(jì)數(shù)保證只要文件名信息結(jié)構(gòu)由至少一濾波器驅(qū)動(dòng)器使用,文件名信息結(jié)構(gòu)便有效。時(shí)間戳保證當(dāng)重命名文件或其他后續(xù)操作影響文件名,文件信息結(jié)構(gòu)反映文件的當(dāng)前文件名。濾波器管理器然后向請求濾波器驅(qū)動(dòng)器返還對對應(yīng)文件名信息結(jié)構(gòu)的指示字。
附圖簡述

圖1說明用于本發(fā)明一示例實(shí)施例中的示例計(jì)算設(shè)備。
圖2是說明用來實(shí)踐本發(fā)明的示例環(huán)境的框圖。
圖3說明根據(jù)本發(fā)明的NTFS文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)的示例框圖。
圖4示出根據(jù)本發(fā)明文件對象和濾波器管理器數(shù)據(jù)結(jié)構(gòu)間的聯(lián)系的示例框圖。
圖5說明根據(jù)本發(fā)明與濾波器管理器相關(guān)的其他數(shù)據(jù)結(jié)構(gòu)的示例框圖。
圖6示出一示例文件名及其根據(jù)本發(fā)明標(biāo)號的對應(yīng)段。
圖7是根據(jù)本發(fā)明執(zhí)行的文件名詢問過程的示例概述的邏輯流程圖。
圖8是根據(jù)本發(fā)明執(zhí)行的示例文件名請求處理過程的邏輯流程圖。
圖9是根據(jù)本發(fā)明執(zhí)行的示例文件名生成過程的邏輯流程圖。
圖10是根據(jù)本發(fā)明執(zhí)行的示例文件名信息結(jié)構(gòu)高速緩存過程的邏輯流程圖。
圖11是根據(jù)本發(fā)明執(zhí)行的示例重命名過程的邏輯流程圖。
圖12是根據(jù)本發(fā)明執(zhí)行的示例文件名穿越過程的邏輯流程圖。
較佳實(shí)施例詳述簡言之,本發(fā)明涉及一種管理文件系統(tǒng)中的濾波器驅(qū)動(dòng)器的文件名的方法和系統(tǒng)。本發(fā)明包括處理來自濾波器驅(qū)動(dòng)器的文件名詢問的濾波器管理器。濾波器管理器向請求濾波器驅(qū)動(dòng)器返還指向?qū)?yīng)所請求文件名類型的文件名信息結(jié)構(gòu)的指示字。濾波器管理器還管理包括能在各種濾波器驅(qū)動(dòng)器間共享的信息的文件名信息結(jié)構(gòu)的高速緩存,阻尼對濾波器驅(qū)動(dòng)器的文件名的詢問。濾波器管理器的高速緩存功能提高效率并降低文件系統(tǒng)內(nèi)文件名詢問的總開銷,方法是通過減小文件系統(tǒng)濾波器驅(qū)動(dòng)器檢索所需文件名部分所要求的文件名操作數(shù)目。
貫穿本說明書和所述權(quán)利要求,除非上下文清楚地另外規(guī)定,下列術(shù)語取直接與本發(fā)明相關(guān)的含義。
術(shù)語“文件信息結(jié)構(gòu)”或“FIS”指與濾波器管理器相關(guān)的數(shù)據(jù)結(jié)構(gòu),該濾波器管理器在至少一實(shí)施例中存儲指向存儲于卷上的特定文件名的名稱段的指示字。術(shù)語“名稱段”指文件名的一部分。例如,文件名通常包括擴(kuò)展名(例如.txt.、dll.、..doc等)。擴(kuò)展名表示名稱段的類型。
術(shù)語“等級”指特定濾波器驅(qū)動(dòng)器響應(yīng)在應(yīng)用程序和管理卷的文件系統(tǒng)間發(fā)送的輸入/輸出請求包(IRP)的順序。等級較高的濾波器驅(qū)動(dòng)器稱為離文件系統(tǒng)“較遠(yuǎn)”,當(dāng)從應(yīng)用程序發(fā)送IRP時(shí),與其他濾波器驅(qū)動(dòng)器相比較早地處理與IRP相關(guān)的操作。相應(yīng)地,當(dāng)從文件系統(tǒng)發(fā)送IRP時(shí),等級較低的濾波器驅(qū)動(dòng)器與其他濾波器驅(qū)動(dòng)器相比較早地處理與IRP相關(guān)的操作。IRP時(shí)常稱為IO子系統(tǒng)中使用的數(shù)據(jù)結(jié)構(gòu),包括諸如NTFS之類的文件系統(tǒng)。然而,即使只參考IRP,可以理解的是,本發(fā)明的濾波器管理器可將IRP轉(zhuǎn)變?yōu)榱硪粩?shù)據(jù)結(jié)構(gòu),諸如用來對濾波器提供一給定操作的回叫數(shù)據(jù)結(jié)構(gòu)。
術(shù)語“文件名提供者”或者對應(yīng)文件系統(tǒng)或者對應(yīng)登記來提供文件的其它文件名的特定濾波器驅(qū)動(dòng)器。
示例性運(yùn)行環(huán)境參考圖1,用來實(shí)現(xiàn)本發(fā)明的一示例實(shí)施例包括計(jì)算設(shè)備,諸如計(jì)算設(shè)備100。在很基本的配置中,計(jì)算設(shè)備100通常包括至少一處理單元102和系統(tǒng)存儲器104。根據(jù)計(jì)算設(shè)備的準(zhǔn)確配置和類型,系統(tǒng)存儲器104可以是易失性的(諸如RAM)、非易失性的(諸如ROM、閃存等)或兩者的某種組合。系統(tǒng)存儲器104通常包括操作系統(tǒng)105、一或更多程序模塊106,并可包括程序數(shù)據(jù)107。根據(jù)本發(fā)明,操作系統(tǒng)105可進(jìn)一步包括濾波器管理器120。該基本配置在圖1中由虛線108內(nèi)的組分說明。
計(jì)算設(shè)備100可有另外的特點(diǎn)或功能。例如,計(jì)算設(shè)備100也可包括附加的數(shù)據(jù)存儲設(shè)備(可更換和/或不可更換),諸如,磁盤、光盤或磁帶。這樣的附加存儲器在圖1中由可更換存儲器109和不可更換存儲器110說明。計(jì)算機(jī)存儲媒介可包括以任一信息存儲方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、移動(dòng)和非移動(dòng)媒介,諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。系統(tǒng)存儲器104、移動(dòng)存儲109和非移動(dòng)存儲110都是計(jì)算機(jī)存儲媒介的例子。計(jì)算機(jī)存儲媒介包括,但不限于,RAM、ROM、EEPROM、閃存或其他存儲器技術(shù)、CD-ROM、數(shù)字多用途磁盤(DVD)或其他光存儲、磁盒、磁帶、磁盤存儲或其他磁存儲設(shè)備、或可用來存儲所需信息且可由計(jì)算設(shè)備100存取的任一其他媒介。任一這樣的計(jì)算機(jī)存儲媒介是設(shè)備100的一部分。計(jì)算設(shè)備100也有諸如鍵盤、鼠標(biāo)、筆、語音輸入設(shè)備、觸摸輸入設(shè)備等之類的輸入設(shè)備112。也包括諸如顯示器、揚(yáng)聲器、打印機(jī)等之類的輸出設(shè)備114。這些設(shè)備為業(yè)界熟知,此處不必詳細(xì)討論。
計(jì)算設(shè)備100也含有使設(shè)備與其他計(jì)算設(shè)備118(諸如通過網(wǎng)絡(luò))通信的通信連接116。通信連接116是通信媒介的一個(gè)例子。通信媒介通常具體化為計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或調(diào)制數(shù)據(jù)信號中的其他數(shù)據(jù),諸如載波或其他傳輸機(jī)制,并包括信息傳送媒介。術(shù)語“調(diào)制數(shù)據(jù)信號”指用編碼信號中信息的方式設(shè)置或改變其一或更多特點(diǎn)的信號。示例地而非限制地,通信媒介包括諸如有線網(wǎng)或直接布線連接之類的有線媒介,及諸如聲、RF、紅外和其他無線媒介之類的無線媒介。此處所用計(jì)算機(jī)可讀媒介的術(shù)語包括存儲媒介和通信媒介。
濾波器驅(qū)動(dòng)器結(jié)構(gòu)和文件系統(tǒng)圖2是說明用來實(shí)施本發(fā)明的示例環(huán)境的框圖。圖2所示示例環(huán)境是根據(jù)本發(fā)明的包括濾波器管理器120的文件系統(tǒng)的輸入/輸出子系統(tǒng)環(huán)境200。
文件系統(tǒng)環(huán)境200包括以用戶模式運(yùn)行的應(yīng)用程序202和以內(nèi)核模式的NTFS文件系統(tǒng)220。盡管此處是在NTFS的上下文中加以描述,可理解的是,本發(fā)明同樣適用于許多其他文件系統(tǒng),諸如FAT、FAT32、EXT2、HPFS和其他文件系統(tǒng)。
NTFS220和應(yīng)用程序202間是以內(nèi)核模式運(yùn)行的濾波器驅(qū)動(dòng)器結(jié)構(gòu)210。濾波器驅(qū)動(dòng)器結(jié)構(gòu)210包括濾波器管理器120和由多個(gè)濾波器驅(qū)動(dòng)器(例如212A-C)構(gòu)成的濾波器驅(qū)動(dòng)器棧。NTFS220維護(hù)系統(tǒng)存儲器104內(nèi)的多個(gè)數(shù)據(jù)結(jié)構(gòu)(例如240),以管理存于卷230上的文件系統(tǒng)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)240在下面結(jié)合圖3較詳細(xì)地描述。卷230包括主文件表(MFT)232,主文件表(MFT)232提供含有卷232上每個(gè)文件的一個(gè)記錄的文件記錄陣列,包括MFT232自身的記錄。例如,MFT232包括文件名屬性234的記錄,及含有另外的文件名屬性234的其他文件記錄的指示字。
在IO子系統(tǒng)環(huán)境200中,濾波器驅(qū)動(dòng)器212A-C向NTFS文件系統(tǒng)220添加功能。在先前系統(tǒng)中,濾波器驅(qū)動(dòng)器212A-C截取以內(nèi)核模式運(yùn)行的NTFS220和以用戶模式運(yùn)行的應(yīng)用程序202間發(fā)送的輸入/輸出請求包(IRP)。例如,應(yīng)用程序通過調(diào)用生成文件的函數(shù)(例如CreateFile)訪問文件。作為響應(yīng),生成規(guī)定類型的輸入/輸出請求包(IRP)。IRP使存儲正打開的文件名的文件對象被生成,然后IRP被傳送到濾波器結(jié)構(gòu)210。每個(gè)濾波器驅(qū)動(dòng)器212A-C查找IRP所指文件名以執(zhí)行其規(guī)定功能。一句柄通過調(diào)用鏈被傳播回來,作為返回參數(shù)到達(dá)應(yīng)用程序202。
某一濾波器驅(qū)動(dòng)器的功能取決于當(dāng)濾波器驅(qū)動(dòng)器接收IRP時(shí)是否知道與IRP相關(guān)的文件名。例如,用于病毒檢測的濾波器驅(qū)動(dòng)器專注于文件名有.exe和.dll擴(kuò)展名的文件?;蛘?,用來加密的濾波器驅(qū)動(dòng)器專用于對特定路徑的文件加密。IRP可以不包括與IRP相關(guān)的文件的文件全名。例如,從應(yīng)用程序202的讀、寫或生成函數(shù)的調(diào)用可指定文件的文件ID而非文件名。文件ID是唯一標(biāo)識卷230上的每個(gè)文件的號碼。CREATE或OPEN操作的用戶用來標(biāo)識文件的文件名或ID在文件的前CREATE(pre-CREATE)的時(shí)間間隔是有效的。CREATE或OPEN操作后,文件對象含有使NTFS220能不使用文件的文件名而標(biāo)識所指文件是哪一個(gè)的數(shù)據(jù)結(jié)構(gòu)。因此,如果濾波器驅(qū)動(dòng)器(例如212A-C)在前CREATE的時(shí)間間隔后需要文件名,它為該文件名詢問NTFS220。濾波器驅(qū)動(dòng)器212A-C可能需要啟動(dòng)就文件名對NTFS220的許多詢問以完成其操作。
在本發(fā)明中,IRP不是順次地通過濾波器驅(qū)動(dòng)器棧(即,濾波器驅(qū)動(dòng)器212A-C),而是直接傳送到濾波器管理器120。濾波器管理器120通知該IRP的每個(gè)濾波器驅(qū)動(dòng)器212A-C,這樣,包括與該IRP相關(guān)的功能的濾波器驅(qū)動(dòng)器與濾波器管理器120相互作用(例如通過回叫)。濾波器驅(qū)動(dòng)器212A-C與濾波器管理器120相互作用的一種方法是向?yàn)V波器管理器120詢問文件名以完成其規(guī)定操作。濾波器管理器120管理濾波器驅(qū)動(dòng)器212A-C對文件名的每個(gè)詢問。
濾波器管理器120允許對三種格式(即,標(biāo)準(zhǔn)化、短和開放)中的一種的文件名詢問。標(biāo)準(zhǔn)化文件名有被擴(kuò)展的短名(即,標(biāo)準(zhǔn)化文件名是長名),文件從目錄的根起的完全路徑,且安裝點(diǎn)被判斷(見圖10的討論)。開放文件名包括用來打開文件的格式的文件名(即,包括或者長名或者短名)。短文件名只包括8.3格式(例如“文件名.ext”)的文件的完全路徑的最后組分。
濾波器管理器120不允許在處理的特定時(shí)間對某些文件名格式詢問。例如,當(dāng)生成文件操作(即,打開文件操作)由應(yīng)用202啟動(dòng)時(shí),直到操作到達(dá)NTFS220才可能判斷新生成文件的文件名是否有效。在此時(shí)間間隔,濾波器管理器120不允許對短文件名格式的文件名詢問,因?yàn)槎涛募袷降挠行源嬖趩栴}。
圖3說明根據(jù)本發(fā)明由NTFS文件系統(tǒng)維護(hù)的數(shù)據(jù)結(jié)構(gòu)的示例框圖。數(shù)據(jù)結(jié)構(gòu)240包括文件對象310和312、流控制塊(SCB)320和文件控制塊(FCB)330。
文件由一或更多數(shù)據(jù)流(其中的主數(shù)據(jù)流未命名)構(gòu)成。文件系統(tǒng)使用SCB(例如322和324)來唯一標(biāo)識文件的每個(gè)數(shù)據(jù)流。例如,SCB322是所示文件對象(例如310)之一的主要未命名流,而SCB324是該文件對象的次要命名流。文件對象(310、320)對應(yīng)文件的特定數(shù)據(jù)流(命名或未命名)的打路。文件系統(tǒng)生成數(shù)個(gè)指示字以從文件對象(310、320)到達(dá)用主文件表(MFT)232表示的卷上文件位置。文件對象310和312(各自表示開型文件的單個(gè)實(shí)例)指向流控制塊(SCBs)320,流控制塊320對應(yīng)呼叫者應(yīng)用程序正努力讀或?qū)懙奈募?。特定文件的SCB指向共同文件控制塊(例如330)。FCB330含有在MFT232中文件記錄的指示字。
圖4示出根據(jù)本發(fā)明的濾波器管理器數(shù)據(jù)結(jié)構(gòu)和文件對象間聯(lián)系的示例框圖。如關(guān)于圖3所述,文件對象320表示文件的開放場合。某些類型的驅(qū)動(dòng)器,諸如濾波器驅(qū)動(dòng)器,使用文件對象320內(nèi)的一些字段。本發(fā)明使用文件對象320內(nèi)的一字段作為指示字。該指示字(Pvoid FsContext)指向稱為FsContext共用頭標(biāo)410的一數(shù)據(jù)結(jié)構(gòu),該頭標(biāo)410包括鎖和每流上下文的鏈接表。FsContext共用頭標(biāo)410指定文件系統(tǒng)是否支持“每流上下文”功能?!懊苛魃舷挛摹敝肝募到y(tǒng)是否(象在NTFS文件系統(tǒng)中一樣)支持使其他驅(qū)動(dòng)器將一些信息與該流發(fā)生聯(lián)系。FsContext共用頭標(biāo)410還提供由濾波器驅(qū)動(dòng)器填充規(guī)定功能信息的每流上下文鏈接表。FsContext共用頭標(biāo)410根據(jù)文件系統(tǒng)或是文件控制塊(FCB)或是流控制塊(SCB)。在本發(fā)明中,對于NTFS文件系統(tǒng),F(xiàn)sContext共用頭標(biāo)410是包括用來為文件對象(例如320)提供上下文的每流上下文鏈接表的SCB。每個(gè)每流上下文412包括兩個(gè)關(guān)鍵字(Key1、Key2)和由濾波器管理器(見圖2)維護(hù)的濾波器管理器數(shù)據(jù)結(jié)構(gòu)420的一指示字(pVoid FMDS)。濾波器管理器數(shù)據(jù)結(jié)構(gòu)420是用來存儲響應(yīng)濾波器驅(qū)動(dòng)器的請求而生成的每個(gè)文件名的文件名信息結(jié)構(gòu)(FIS)(見圖5)的高速緩存器。每個(gè)濾波器管理器數(shù)據(jù)結(jié)構(gòu)420根據(jù)與每個(gè)FIS相關(guān)的文件名的格式(例如標(biāo)準(zhǔn)化名、開放名和短名)進(jìn)一步組織成名字高速緩存數(shù)據(jù)結(jié)構(gòu)422A-C。
圖5說明根據(jù)本發(fā)明與濾波器管理器有關(guān)的其他數(shù)據(jù)結(jié)構(gòu)的示例框圖。圖4所示的每個(gè)名字高速緩存數(shù)據(jù)結(jié)構(gòu)422A-C包括一樹結(jié)構(gòu)。在一實(shí)施例中,所述樹結(jié)構(gòu)是張開樹結(jié)構(gòu)。張開樹結(jié)構(gòu)通常用于有關(guān)數(shù)據(jù)庫中的文件的放置和定位。
在本發(fā)明中,樹結(jié)構(gòu)的節(jié)點(diǎn)510可指向特定FIS520。節(jié)點(diǎn)510由兩個(gè)關(guān)鍵字(Key1、Key2)標(biāo)引并包括指向?qū)?yīng)一文件名的相應(yīng)FIS的指示字(pVoidFIS)。如結(jié)合圖8所述,對于本發(fā)明,Key1對應(yīng)所請求文件名的文件對象,而Key2對應(yīng)文件名的文件名提供者。
文件名信息結(jié)構(gòu)(FIS)520包括專用頭標(biāo)522和文件名指示字表524。對特定文件名的每種類型(標(biāo)準(zhǔn)化的、開放的或短的)有不同的FIS520。換言之,特定文件的標(biāo)準(zhǔn)化文件名和同一文件的短文件名各自由不同的FIS520表示。
專用頭標(biāo)522包括有關(guān)引用計(jì)數(shù)的數(shù)據(jù)、時(shí)間戳和其他數(shù)據(jù)。引用計(jì)數(shù)保證只要濾波器驅(qū)動(dòng)器引用它便將FIS520保持在存儲器中。時(shí)間戳保證當(dāng)重命名文件或其他后續(xù)操作影響文件名時(shí),F(xiàn)IS520反映該文件的當(dāng)前文件名。時(shí)間戳在下面參考圖10更詳細(xì)地加以說明。
文件名指示字表524包括位于存儲器的單個(gè)緩沖器中的同一文件名的規(guī)定段的指示字。每段對應(yīng)組成名稱的一部分的Unicode串(見圖6)。指示字用作包括文件名的字符陣列的索引。名稱由濾波器管理器進(jìn)行分析,使得需要檢查一段文件名的濾波器驅(qū)動(dòng)器不必對文件名單獨(dú)分析。
圖6示出一示例文件名及其根據(jù)本發(fā)明標(biāo)號的對應(yīng)段。在該實(shí)現(xiàn)中,文件名600包括按需提供的濾波器管理器識別的六段(610、620、630、640、650、660) (見圖2)。每段由圖5所示文件名指示字表524中的一指示字指向。所述段包括Volumn(卷)610、Share(共享)620、ParentDir(母目錄)630、FinalComponent(最終組分)640、Extension(擴(kuò)展)650和Stream(流)660。
Volume 610指描述存儲文件的邏輯卷的文件名部分。對網(wǎng)絡(luò)上的一文件,Volume 610是描述網(wǎng)絡(luò)提供者用來存取遠(yuǎn)程文件(例如\Device\LanmanRed)的文件名部分。
Share 620是本地文件的NULL串。然而,對于遠(yuǎn)程文件,Share 630對應(yīng)描述將名稱存儲于網(wǎng)絡(luò)提供者的名稱空間中的路徑的名稱部分。
ParentDir 630是描述去除最終組分的文件名的完全路徑的文件名部分。
而文件名的每個(gè)成分由“/”或“\”分開。FinalComponent 640是到包括流的名稱串的終點(diǎn)最遠(yuǎn)的組分。
Extension 650是從最后一個(gè)“·”到任一流的文件名部分。
Stream 660是從最終組分中的第一個(gè)“”的文件名部分。
在一實(shí)施例中,由于與獲取特定段有關(guān)的開銷成本,對根據(jù)某些名稱類型(例如短名稱)打開的文件,某些段是不可用的。
格式化、分析和高速緩存過程圖7是通常說明根據(jù)本發(fā)明執(zhí)行的文件名詢問過程的邏輯流程圖。過程在開始框701處進(jìn)入,此時(shí)圖2所示濾波器管理器120已接收一IRP而且已就該IRP通知濾波器驅(qū)動(dòng)器212A-C中的一個(gè)。過程700在框702繼續(xù)。
在框702,濾波器管理器接收來自濾波器驅(qū)動(dòng)器對特定文件名的請求。在一實(shí)施例中,文件名請求涉及濾波器管理器接收的IRP。在另一實(shí)施例中,濾波器驅(qū)動(dòng)器啟動(dòng)名稱請求作為無關(guān)IRP的操作的一部分。當(dāng)文件名請求由濾波器管理器接收時(shí),濾波器管理器檢索文件名。在下面結(jié)合圖8的討論中較詳細(xì)地描述示例文件名請求處理過程。
在判定框703,判斷對應(yīng)文件名的FIS此前是否已高速緩存于對應(yīng)濾波器管理器的數(shù)據(jù)結(jié)構(gòu)(見圖4和5)內(nèi)。如果對應(yīng)文件名請求的FIS此前已高速緩存,處理跳到框706。如果對應(yīng)文件名請求的FIS此前未高速緩存,處理在框704繼續(xù)。
在框704,由濾波器管理器向文件名提供者發(fā)出對文件名的調(diào)用。特定濾波器驅(qū)動(dòng)器的文件名提供者不同于位于卷上的同一物理文件。作為文件名提供者運(yùn)行的濾波器驅(qū)動(dòng)器向較高等級的濾波器驅(qū)動(dòng)器(但通常不向較低等級的濾波器驅(qū)動(dòng)器)提供文件名。例如,第一濾波器驅(qū)動(dòng)器等級高于以文件名提供者運(yùn)行的第二濾波器驅(qū)動(dòng)器。第一濾波器驅(qū)動(dòng)器的文件名提供者是第二濾波器驅(qū)動(dòng)器。然而,如果第三濾波器驅(qū)動(dòng)器等級低于第二濾波器驅(qū)動(dòng)器,第二濾波器驅(qū)動(dòng)器不是第三濾波器驅(qū)動(dòng)器的文件名提供者。下面結(jié)合圖9的討論中較詳細(xì)地描述調(diào)用文件名的文件名提供者的示例過程。處理在框705繼續(xù)。
在框705,由文件名提供者生成的文件名的FIS被高速緩存在濾波器管理器提供的數(shù)據(jù)結(jié)構(gòu)內(nèi)并返回請求濾波器驅(qū)動(dòng)器。對濾波器管理器的高速緩存的處理取決于當(dāng)前正施加于文件名的處理、文件名類型及其他因素。濾波器管理器把對FIS的指示字歸還給啟動(dòng)文件名請求的濾波器驅(qū)動(dòng)器。指示字使濾波器驅(qū)動(dòng)器能通過訪問FIS的文件名指示字表訪問一名稱段。下面結(jié)合圖10的討論中較詳細(xì)地描述高速緩存FIS并將它還給請求濾波器驅(qū)動(dòng)器。處理在框706繼續(xù)。
在框706,更新(或遞增)與每個(gè)FIS相關(guān)的引用計(jì)數(shù),以反映FIS當(dāng)前正由濾波器驅(qū)動(dòng)器使用。在一實(shí)施例中,引用計(jì)數(shù)包括于圖5所示的每個(gè)FIS的專用頭標(biāo)內(nèi)。只要引用計(jì)數(shù)大于零,與FIS相關(guān)的存儲器保持有效。當(dāng)任一濾波器驅(qū)動(dòng)器取得對FIS的一引用時(shí),引用計(jì)數(shù)便得到遞增。每個(gè)濾波器驅(qū)動(dòng)器向FIS釋放引用時(shí),凈計(jì)數(shù)遞減。當(dāng)凈計(jì)數(shù)為零時(shí),刪除FIS且清空其存儲器。引用計(jì)數(shù)保證含有特定FIS及其相關(guān)文件名的存儲器至少按需保持有效。處理在框707繼續(xù),處理在此結(jié)束。
在一實(shí)施例中,過程700對CREATE操作不同地運(yùn)行。對CREATE操作,鏈接到文件的SCB的高速緩存器數(shù)據(jù)結(jié)構(gòu)(例如FISs)尚未生成,因?yàn)槲募形从晌募到y(tǒng)打開。對濾波器驅(qū)動(dòng)器在前-CREATE期間請求的文件名,文件名通過檢查與文件對象相關(guān)的操作數(shù)據(jù)結(jié)構(gòu)(例如IRP-CTRL)高速緩存而生成。如果文件名不能從操作數(shù)據(jù)結(jié)構(gòu)高速緩存生成,請求文件名提供者產(chǎn)生它們(見圖8),但文件名高速緩存于操作數(shù)據(jù)結(jié)構(gòu)高速緩存單元中,就得到后-CREATE間隔。在后-CREATE,假如CREATE操作成功,則生成高速緩存數(shù)據(jù)結(jié)構(gòu)。如果文件名有效且未發(fā)生穿越(見圖12)則高速緩存文件名(見圖10)。
圖8是根據(jù)本發(fā)明執(zhí)行的示例文件名請求處理過程的邏輯流程圖。當(dāng)圖7所示過程700進(jìn)入框702則過程進(jìn)入框801。處理在框802繼續(xù)。
在框802,濾波器管理器接收來自濾波器驅(qū)動(dòng)器對包括與文件名相關(guān)的文件對象的文件名的請求,以及對文件名請求的格式(例如標(biāo)準(zhǔn)化的、開放的或短的)。處理在框803繼續(xù)。
在框803,濾波器管理器從發(fā)出文件名請求的濾波器驅(qū)動(dòng)器判斷文件名提供者。如前所述,等級高于作為文件名提供者運(yùn)行的第二濾波器驅(qū)動(dòng)器的第一濾波器驅(qū)動(dòng)器使用第二濾波器驅(qū)動(dòng)器作為其文件名詢問的文件名提供者。驅(qū)動(dòng)器棧內(nèi)濾波器驅(qū)動(dòng)器的等級由濾波器管理器事先確定。另外,需要以文件名提供者運(yùn)行的濾波器驅(qū)動(dòng)器事前已向?yàn)V波器管理器登記。如果請求濾波器驅(qū)動(dòng)器的等級高于指定的文件名提供者,該場合的文件名提供者是最接近但等級低于請求濾波器驅(qū)動(dòng)器的文件名提供者。如果請求濾波器驅(qū)動(dòng)器沒有其他濾波器驅(qū)動(dòng)器作為等級較低的文件名提供者運(yùn)行,則文件系統(tǒng)作為請求濾波器驅(qū)動(dòng)器的文件名提供者運(yùn)行。一旦確定請求濾波器驅(qū)動(dòng)器的文件名提供者,處理在框804繼續(xù)。
在框804,搜索對應(yīng)已高速緩存于濾波器管理器提供的數(shù)據(jù)結(jié)構(gòu)內(nèi)的文件名請求的FIS。如前面結(jié)合圖4所述,根據(jù)請求的文件名格式(例如標(biāo)準(zhǔn)化的、開放的、短的)組織數(shù)據(jù)結(jié)構(gòu)。根據(jù)兩個(gè)關(guān)鍵字(Key1、Key2)(見圖5)搜尋對應(yīng)所請求文件名格式的數(shù)據(jù)結(jié)構(gòu)。第一關(guān)鍵字是與文件的特定開放例有關(guān)的文件對象。文件對象幫助規(guī)定是否在流級或文件對象級高速緩存FIS,這在圖10的討論中較詳細(xì)地討論。第二關(guān)鍵字是在框803識別的文件名提供者。如果事先已存儲一FIS,根據(jù)這兩個(gè)關(guān)鍵字(Key1、Key2)搜索濾波器驅(qū)動(dòng)器數(shù)據(jù)結(jié)構(gòu),定位現(xiàn)有FIS。處理到框805繼續(xù),在此,處理返回過程700并在圖7所示的框704處繼續(xù)。
圖9是根據(jù)本發(fā)明執(zhí)行的示例文件名生成過程的邏輯流程圖。當(dāng)圖7所示過程700進(jìn)入框704時(shí),過程900進(jìn)入框901。處理在判定框902繼續(xù)。
在判定框902,判斷等級較低的一濾波器驅(qū)動(dòng)器是否作為文件名提供方者運(yùn)行。如果不是,文件名由文件系統(tǒng)提供,處理進(jìn)入框906。但是,如果是,處理在框903繼續(xù)。
在框903,使用名稱回叫來檢索來自文件名提供者的文件名。所用的回叫類型取決于請求濾波器驅(qū)動(dòng)器是否已請求目標(biāo)文件名。文件名提供者登記兩回叫。第一回叫,CreateDestinationNameCallback,是在目標(biāo)名稱由高于文件名提供者的濾波器驅(qū)動(dòng)器請求時(shí)調(diào)用的。第二回叫,CreateFileNameCallback,是當(dāng)文件名(非目標(biāo)文件名)由高于文件名提供者的第二濾波器請求時(shí)向第一濾波器驅(qū)動(dòng)器調(diào)用的。
目標(biāo)文件名是規(guī)定為重命名操作或硬鏈路生成操作的目標(biāo)名稱。硬鏈路指文件名的別名使用卷上的相同物理比特有不止一個(gè)文件名。用卷上相同比特表示的數(shù)個(gè)文件名中的每一個(gè)表示為一硬鏈路。目標(biāo)文件名由文件名提供者根據(jù)重命名或硬鏈路參數(shù)而生成。在一實(shí)施例中,以兩格式(標(biāo)準(zhǔn)化格式或開放格式)中的一種提供目標(biāo)文件名。該實(shí)施例中,不是所有的文件名段一開始是從文件名分析的。Volume和Share段一開始是從文件名分析的。一旦對FIS的指示字回到濾波器驅(qū)動(dòng)器,濾波器驅(qū)動(dòng)器請求進(jìn)一步從文件名分析FinalComponent、Extension、Stream和ParentDir段。
在一實(shí)施例中,目標(biāo)文件名不是高速緩存于濾波器管理器提供的數(shù)據(jù)結(jié)構(gòu)(例如每流上下文)中。目標(biāo)文件名高速緩存于濾波器管理器的專用數(shù)據(jù)結(jié)構(gòu)(例如IRP-CTRL)的操作中。目標(biāo)文件名在重命名或硬鏈路生成操作持續(xù)時(shí)間被高速緩存。一旦使用名稱回叫,處理進(jìn)入框904。
在框904,濾波器管理器從文件名提供方接收文件名,不管文件名提供者是來自請求濾波器驅(qū)動(dòng)器且等級較低的另一濾波器驅(qū)動(dòng)器還是文件系統(tǒng)。處理進(jìn)入框905,在此,處理返回過程700且繼續(xù)于圖7所示的框705。
圖10是根據(jù)本發(fā)明執(zhí)行的示例文件名高速緩存過程的邏輯流程圖。當(dāng)圖7所示過程700進(jìn)入框705時(shí),過程1000進(jìn)入框1001。處理在判定框1002繼續(xù)。
在判決框1002,對由濾波器管理器從名稱提供者接收的文件名當(dāng)前是否在重命名處理中作出判斷。重命名指文件重命名、目錄重命名或硬鏈路生成操作。當(dāng)啟動(dòng)影響由濾波器管理器接收的文件名的重命名時(shí),暫停FIS的高速緩存,不高速緩存與文件名相關(guān)的FIS,一部分高速緩存被清除。如果重命名正在進(jìn)行,處理進(jìn)入框1009,在此,不高速緩存FIS且過程進(jìn)入框1010。
然而,如果重命名不在進(jìn)行,處理繼續(xù)到框1003,在此,把為一特定文件名生成的FIS相關(guān)的時(shí)間戳(TS)和濾波器管理器時(shí)間戳(FTS)作比較。濾波器管理器時(shí)間戳對應(yīng)最后一個(gè)重命名程序完成時(shí)。如果重命名完成于生成FIS的同時(shí)或之后(例如FTS≥TS),F(xiàn)IS對將來詢問文件名不再有效。但是,如果濾波器管理器時(shí)間戳小于FIS時(shí)間戳(例如FTS<TS,F(xiàn)IS對將來詢問有效。處理在判定框1004繼續(xù)。
在判定框1004,判斷按照比較結(jié)果FIS的時(shí)間戳是否表示濾波器管理器時(shí)間戳(FTS)小于FIS的時(shí)間戳(TS)。如果時(shí)間戳表示FIS對將來詢問無效,過程在框1009繼續(xù),在此,不高速緩存FIS且處理進(jìn)入框1010。
然而,如果時(shí)間戳表示FIS對將來詢問有效,過程進(jìn)入判定框1005。
在判定框1005,確定與文件相關(guān)的文件名的個(gè)數(shù)。如前所討論,存儲在卷上的文件有多個(gè)硬鏈路,每個(gè)硬鏈路各自表示與文件相關(guān)的一獨(dú)特文件名。因此,如果硬鏈路數(shù)大于1,文件有不止一個(gè)文件名。與特定文件相關(guān)的文件名不大于1,處理在判定框1006繼續(xù)。但是,如果與特定文件號相關(guān)的文件名數(shù)目大于1,處理進(jìn)入框1008。
在判定框1006,對濾波器管理器從文件名提供者接收的文件名是否標(biāo)準(zhǔn)化格式作判斷。返回濾波器管理器的文件名是標(biāo)準(zhǔn)化格式時(shí),處理在判定框1007繼續(xù)。但是,返回濾波器管理器的文件名是另一格式(諸如短文件名或開放文件名)時(shí),處理進(jìn)入框1006。
在框1007,與濾波器管理器接收的文件名相關(guān)的FIS高速緩存于流級。高速緩存于流級的FIS使對FIS的指示字返回請求對應(yīng)特定流的文件名的任一濾波器驅(qū)動(dòng)器。因此,需要較少結(jié)構(gòu),因?yàn)樘囟‵IS可用于共享同一流的多個(gè)文件對象。處理進(jìn)入塊1010,在此,處理返回過程700且在圖7的框706繼續(xù)。
在框1008,與由濾波器管理器接收的文件名相關(guān)的FIS高速緩存于文件對象級。高速緩存于文件對象級的FIS適用于文件的特定開放場合。高速緩存于文件對象級的FIS對應(yīng)特定文件對象。即使特定文件對象與第二文件對象共享同一流,存儲于文件對象級的FIS適用特定文件對象而非第二文件對象。處理進(jìn)入框1010,在此,處理返回過程700且在圖7的框706繼續(xù)。
在一實(shí)施例中,當(dāng)FIS不再有效時(shí),與FIS相關(guān)的存儲器空間未得到分配。在釋放存儲器空間前,濾波器管理器檢查與FIS相關(guān)的引用計(jì)數(shù)。直到引用計(jì)數(shù)為零才釋放與特定FIS相關(guān)的存儲器。
重命名圖11是根據(jù)本發(fā)明執(zhí)行的示例重命名過程的邏輯流程圖。過程1100始于框1101,在此,已啟動(dòng)重命名操作。處理在判定框1102繼續(xù)。
在判定框1102,對當(dāng)前進(jìn)行的重命名過程是否目錄重命名作判斷。與文件重命名相比,目錄重命名改變與目錄有關(guān)的所有文件的文件名。如果進(jìn)行中的重命名不涉及重命名目錄,處理在判定框1104繼續(xù)于。但是,如果進(jìn)行中的重命名進(jìn)行目錄名的修改,處理進(jìn)入框1103。
在框1103,響應(yīng)于目錄名的變化,濾波器管理器的與該目錄相關(guān)的高速緩存得到清除。實(shí)施高速緩存包括特定文件名的每個(gè)格式(例如標(biāo)準(zhǔn)化的、開放的、短的)的每個(gè)FIS。在一實(shí)施例中,清除與該目錄相關(guān)的高速緩存比用來更新高速緩存以反映目錄重命名的串對比更有效。清除高速緩存保證以后生成的文件名正確反映目錄名變化。當(dāng)濾波器驅(qū)動(dòng)器就含有新目錄名的文件名詢問濾波器管理器時(shí),則高速緩存可重新被駐入。處理在框1107繼續(xù),在此,過程結(jié)束。
在判定框1104,對當(dāng)前進(jìn)行的重命名過程是否對應(yīng)硬鏈接生成操作作判斷。當(dāng)生成硬鏈接時(shí),它在流級影響文件名。換句話說,當(dāng)生成硬鏈接時(shí),在流級高速緩存的FIS不再對文件的所有開放場合有效。如果重命名過程對應(yīng)硬鏈接生成操作,處理在框1105繼續(xù)。
在框1105,在流級清除與硬鏈接生成操作相關(guān)的高速緩存。對應(yīng)受制于硬鏈接的文件名的FIS不再存儲于流級(如果原來存儲于流級,見圖10),而是存儲于文件對象級。與有多個(gè)硬鏈接的文件相關(guān)的FIS對特定文件開放例有效,但不是對文件的所有開放場合有效。處理在框1107繼續(xù),在此,過程結(jié)束。
或者,如果重命名過程不對應(yīng)目錄重命名或硬鏈接生成操作,處理框1106繼續(xù)。
在框1106,與特定文件名有關(guān)的高速緩存在流級及在文件對象級一起被清除。因此,從與濾波器管理器相關(guān)的數(shù)據(jù)結(jié)構(gòu)(見圖4和5)刪除一文件名的每個(gè)格式的每個(gè)FIS。處理在框1107繼續(xù),在此,過程結(jié)束。
文件名穿越在一實(shí)施例中,本發(fā)明包括補(bǔ)償文件系統(tǒng)的文件名穿越能力的功能。文件名穿越涉及包括在存儲于文件系統(tǒng)內(nèi)的文件名中的長名稱/短名稱對。對穿越的支持由操作系統(tǒng)提供,使得任一讀/寫文件系統(tǒng)利用穿越功能。當(dāng)或者長名稱或者短名稱被刪除,但在一定時(shí)間間隔內(nèi)重新生成時(shí),發(fā)生文件名穿越。文件名穿越能力可實(shí)現(xiàn)對依賴于能保持文件總信息一小段時(shí)間的文件系統(tǒng)的程序的兼容性。這發(fā)生在刪除或重命名且用所述總信息重新引入新目錄項(xiàng)之后(如果生成或重命名發(fā)生使該名稱的文件短時(shí)段內(nèi)再次出現(xiàn))。從目錄去除名稱(重命名或刪除)時(shí),如果鍵入已被去除的名稱,短/長名稱對和諸如生成時(shí)間之類的某些其他屬性保存在高速緩存中。向目錄添加名稱(重命名或生成)時(shí),搜索高速緩存以了解是否有要恢復(fù)的信息。
圖12是根據(jù)本發(fā)明執(zhí)行的且與圖7所示過程700并行運(yùn)行的示例文件名穿越過程的邏輯流程圖。過程1200進(jìn)入開始框1201。處理在判定框1202繼續(xù)。
在判定框1202,請求濾波器驅(qū)動(dòng)器識別正在請求的文件名是否文件名穿越的候選對象。文件名穿越的候選對象是含有8.3格式的部分的文件。文件名穿越影響文件名的標(biāo)準(zhǔn)化版本,因?yàn)槎堂?即8.3格式的文件名)是為文件名的標(biāo)準(zhǔn)化版本被擴(kuò)展的。與文件相關(guān)的短文件名的變化相應(yīng)地改變標(biāo)準(zhǔn)化名稱。同樣,短文件名不變化時(shí),標(biāo)準(zhǔn)化文件名可以不變化。如果文件名不是封裝候選對象,處理進(jìn)入框1205,在此,當(dāng)文件名的CREATE操作成功完成時(shí),高速緩存對應(yīng)文件名的FIS。然而,如果文件名是穿越候選對象,處理在判定框1203繼續(xù)。
在判定框1203,對文件名為候選對象的文件名的穿越是否發(fā)生作判斷。如果未出現(xiàn)穿越,處理進(jìn)入框1205,在此,對應(yīng)文件名的FIS在文件名的CREATE操作成功完成時(shí)高速緩存。但是,如果文件名生成期間使用過文件名穿越,處理在框1204繼續(xù)。
在框1204,與生成的文件名相關(guān)的FIS不是高速緩存于由濾波器管理器提供的數(shù)據(jù)結(jié)構(gòu)內(nèi)。處理在框1206繼續(xù),在此,過程結(jié)束。
上述說明、例子和數(shù)據(jù)完整描述本發(fā)明的構(gòu)成的制造和使用。由于可不脫離本發(fā)明構(gòu)思和范圍完成本發(fā)明的許多實(shí)施例,本發(fā)明權(quán)利歸屬于此后所附權(quán)利要求書。
權(quán)利要求
1.一種管理文件系統(tǒng)濾波器驅(qū)動(dòng)器的文件名的方法,其特征在于,所述方法包括接收來自第一濾波器驅(qū)動(dòng)器的對規(guī)定格式的文件名的文件名請求;調(diào)用文件名提供方生成對應(yīng)文件名請求的文件名;高速緩存與從文件名提供方接收的文件名相對應(yīng)的生成文件名信息結(jié)構(gòu);及向第一濾波器驅(qū)動(dòng)器返還指向生成文件名信息結(jié)構(gòu)的指示字。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括判斷滿足文件名請求的文件名信息結(jié)構(gòu)在調(diào)用文件名提供者生成文件名前事先已高速緩存。
3.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括當(dāng)向第一濾波器驅(qū)動(dòng)器返還指示自時(shí)更新與生成文件名信息結(jié)構(gòu)相關(guān)的引用計(jì)數(shù),使得該生成文件名信息結(jié)構(gòu)在由第一濾波器驅(qū)動(dòng)器使用的同時(shí)得到維護(hù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括當(dāng)向第一濾波器驅(qū)動(dòng)器返還指示字時(shí)更新與生成文件名信息結(jié)構(gòu)相關(guān)的時(shí)間戳,使得在高速緩存該生成文件信息結(jié)構(gòu)之前判斷文件名信息結(jié)構(gòu)的有效性。
5.如權(quán)利要求1所述的方法,其特征在于,所述接收文件名請求還包括接收這樣一個(gè)文件名請求該文件名請求給定第一濾波器驅(qū)動(dòng)器的標(biāo)識符、對應(yīng)由文件名標(biāo)識的文件的開放場合的文件對象,及文件名格式。
6.如權(quán)利要求5所述的方法,其特征在于,所述文件名格式包括標(biāo)準(zhǔn)化的、開放的和短的格式中的至少一種。
7.如權(quán)利要求1所述的方法,其特征在于,所述呼叫文件名提供者還包括當(dāng)?shù)诙V波器驅(qū)動(dòng)器用作文件名提供則時(shí)從第一濾波器驅(qū)動(dòng)器調(diào)用等級較低的第二濾波器驅(qū)動(dòng)器。
8.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括判斷重命名程序是否在進(jìn)行及當(dāng)重命名程序修改至少一部分文件名時(shí)清除合適比例的文件名信息結(jié)構(gòu)高速緩存。
9.如權(quán)利要求1所述的方法,其特征在于,所述生成文件名信息結(jié)構(gòu)高速緩存于流級和文件對象級中的一個(gè)。
10.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括判斷是否進(jìn)行重命名;比較重命名完成時(shí)間和該生成文件名信息結(jié)構(gòu)建立時(shí)間;及當(dāng)重命名完成時(shí)間晚于該生成文件名信息結(jié)構(gòu)建立時(shí)間時(shí),避免向第一濾波器驅(qū)動(dòng)器返還指示字。
11.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括通過判斷文件名穿越何時(shí)已發(fā)生來補(bǔ)償文件名穿越及已發(fā)生文件名穿越時(shí)避免高速緩存該生成文件名信息結(jié)構(gòu)。
12.一種有計(jì)算機(jī)可執(zhí)行成分的計(jì)算機(jī)可讀媒介,其特征在于,所述計(jì)算機(jī)可讀媒介包括用來管理文件系統(tǒng)的第一濾波器驅(qū)動(dòng)器的文件名請求的第一組分,所述第一組分配置成接收第一濾波器驅(qū)動(dòng)器對規(guī)定格式的文件名的文件名請求;判斷滿足文件名請求的文件名信息結(jié)構(gòu)是否事先已高速緩存,及當(dāng)文件名信息結(jié)構(gòu)事先已高速緩存時(shí)向?yàn)V波器驅(qū)動(dòng)器返還指向文件名信息結(jié)構(gòu)的指示字;及當(dāng)文件名信息結(jié)構(gòu)事先未得到高速緩存時(shí)調(diào)用文件名提供者生成對應(yīng)文件名請求的文件名;高速緩存與從文件名提供方接收的文件名相對應(yīng)的生成文件名信息結(jié)構(gòu);及向第一成分返還指向生成文件名信息結(jié)構(gòu)的指示字。
13.如權(quán)利要求12所述的計(jì)算機(jī)可讀媒介,其特征在于,所述第一組分安放在文件系統(tǒng)和與操作系統(tǒng)相關(guān)的外部應(yīng)用程序之間,使得第一組分除接收和處理第一濾波器驅(qū)動(dòng)器的文件名請求外,還接收和處理文件系統(tǒng)的輸入/輸出請求。
14.如權(quán)利要求12所述的計(jì)算機(jī)可讀媒介,其特征在于,所述第一組分包括文件名信息結(jié)構(gòu)被高速緩存于其中的文件名高速緩存數(shù)據(jù)結(jié)構(gòu),其中,文件名高速緩存數(shù)據(jù)結(jié)構(gòu)是根據(jù)對應(yīng)文件名信息結(jié)構(gòu)的文件名格式而組織的。
15.如權(quán)利要求12所述的計(jì)算機(jī)可讀媒介,其特征在于,所述文件名格式是標(biāo)準(zhǔn)化的、開放的和短的格式中的至少一種。
16.一種用數(shù)據(jù)結(jié)構(gòu)編碼的計(jì)算機(jī)可讀媒介,其特征在于,所述計(jì)算機(jī)可讀媒介包括一包括引用計(jì)數(shù)和時(shí)間戳的頭標(biāo),其中,引用計(jì)數(shù)幫助防止數(shù)據(jù)結(jié)構(gòu)被刪除直到引用計(jì)數(shù)為預(yù)定整數(shù)為止,而時(shí)間戳幫助判斷特定時(shí)間點(diǎn)上數(shù)據(jù)結(jié)構(gòu)的有效性;及含有指向卷上文件的文件名的指示字的第一數(shù)據(jù)字段,其中,每個(gè)指示字指向文件名的預(yù)定段。
17.如權(quán)利要求16所述的計(jì)算機(jī)可讀媒介,其特征在于,所述頭標(biāo)和第一數(shù)據(jù)字段存儲于根據(jù)文件名格式安排的樹數(shù)據(jù)結(jié)構(gòu)內(nèi),所述格式是標(biāo)準(zhǔn)化的、開放的和短的格式中的至少一種。
18.如權(quán)利要求17所述的計(jì)算機(jī)可讀媒介,其特征在于,所述樹數(shù)據(jù)結(jié)構(gòu)包括根據(jù)對應(yīng)于與卷上文件相關(guān)的文件對象的第一關(guān)鍵字存取的節(jié)點(diǎn),及對應(yīng)文件名提供者的第二關(guān)鍵字,使得特定節(jié)點(diǎn)提供指向?qū)?yīng)文件名的數(shù)據(jù)結(jié)構(gòu)的指示字。
19.一種有用來管理文件系統(tǒng)濾波器驅(qū)動(dòng)器的文件名的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒介,其特征在于,所述指令包括接收第一濾波器驅(qū)動(dòng)器對規(guī)定格式的文件名的文件名請求;判斷滿足文件名請求的文件名信息結(jié)構(gòu)是否事先已高速緩存,及當(dāng)文件名信息結(jié)構(gòu)事先已高速緩存時(shí)向第一濾波器驅(qū)動(dòng)器返還指向文件名信息結(jié)構(gòu)的指示字;及當(dāng)文件名信息結(jié)構(gòu)事先未高速緩存時(shí)當(dāng)文件名信息結(jié)構(gòu)事先未高速緩存時(shí)調(diào)用文件名提供者生成對應(yīng)文件名請求的文件名;高速緩存與從文件名提供方接收的文件名相對應(yīng)的生成文件名信息結(jié)構(gòu);及向第一濾波器驅(qū)動(dòng)器返還指向生成文件名信息結(jié)構(gòu)的指示字。
20.如權(quán)利要求19所述的計(jì)算機(jī)可讀媒介,其特征在于,所述指令還包括當(dāng)向第一濾波器驅(qū)動(dòng)器返還指示字時(shí)更新與生成文件名信息結(jié)構(gòu)相關(guān)的引用計(jì)數(shù),使得生成文件名信息結(jié)構(gòu)在由第一濾波器驅(qū)動(dòng)器使用的同時(shí)得到維護(hù)。
21.如權(quán)利要求19所述的計(jì)算機(jī)可讀媒介,其特征在于,所述指令還包括當(dāng)向第一濾波器驅(qū)動(dòng)器返還指示字時(shí)更新與生成文件名信息結(jié)構(gòu)相關(guān)的時(shí)間戳,使得在高速緩存生成文件信息結(jié)構(gòu)之前判斷文件名信息結(jié)構(gòu)的有效性。
22.如權(quán)利要求19所述的計(jì)算機(jī)可讀媒介,其特征在于,所述接收文件名請求還包括接收文件名請求,該文件名請求給定第一濾波器驅(qū)動(dòng)器的標(biāo)識符、對應(yīng)由文件名標(biāo)識的文件的開放場合的文件對象,及文件名格式。
23.如權(quán)利要求22所述的計(jì)算機(jī)可讀媒介,其特征在于,所述文件名格式包括標(biāo)準(zhǔn)化的、開放的和短的格式中的至少一種。
24.如權(quán)利要求19所述的計(jì)算機(jī)可讀媒介,其特征在于,所述指令還包括判斷重命名程序是否在進(jìn)行及當(dāng)重命名程序修改至少一部分文件名時(shí)清除合適比例的文件名信息結(jié)構(gòu)高速緩存。
25.如權(quán)利要求19所述的計(jì)算機(jī)可讀媒介,其特征在于,所述生成文件名信息結(jié)構(gòu)高速緩存在流級和文件對象級中的一個(gè)。
全文摘要
所述是管理文件系統(tǒng)中濾波器驅(qū)動(dòng)器的文件名的一種方法和系統(tǒng)。本發(fā)明包括處理來自濾波器驅(qū)動(dòng)器的文件名詢問的濾波器管理器。濾波器管理器向請求濾波器驅(qū)動(dòng)器返還指向與所請求文件名類型相對應(yīng)的文件名信息結(jié)構(gòu)的指示字。濾波器管理器還管理包括能在各種濾波器驅(qū)動(dòng)器間共享的信息的文件名信息結(jié)構(gòu)的高速緩存,緩沖對濾波器管理器文件名的詢問。濾波器管理器的高速緩存功能提高效率并降低文件系統(tǒng)內(nèi)文件名詢問的總開銷,方法是通過減小文件系統(tǒng)濾波器驅(qū)動(dòng)器檢索所需文件名部分所要求的文件名操作數(shù)目。
文檔編號G06F17/30GK1477518SQ0314573
公開日2004年2月25日 申請日期2003年6月30日 優(yōu)先權(quán)日2002年6月28日
發(fā)明者R·普迪派蒂, R 普迪派蒂, E·C·布朗, 布朗, N·R·克里斯琴森, 克里斯琴森 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1