專利名稱:用于后綁定/動態(tài)路徑名解析的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算系統(tǒng),尤其涉及標識儲存在計算系統(tǒng)上的資源的定位的路徑名。
背景技術(shù):
在計算機操作系統(tǒng)中,路徑名是標識文件或目錄的定位的字母數(shù)字字符的序列。最簡單類型的路徑名是文件名本身。當由文件名指定路徑名時,操作系統(tǒng)在當前工作目錄中查找文件。如果文件駐留在不同的目錄中,指定路徑使操作系統(tǒng)能夠定位該文件。將路徑名翻譯成操作系統(tǒng)語言的過程稱為路徑名解析。
現(xiàn)有系統(tǒng)的一個問題是路徑名本質(zhì)上是靜態(tài)的。當前,還沒有用于在路徑用戶的上下文中可定制或估算的路徑名組件的機制。一旦創(chuàng)建了路徑名,不論哪一用戶登錄、路徑名解析出現(xiàn)在哪一機器上等等,該相同路徑名都將解析為相同的數(shù)據(jù)。這一局限已經(jīng)困擾計算機系統(tǒng)用戶和設(shè)計者一段時間了。
直到現(xiàn)在,本領(lǐng)域的技術(shù)人員仍然不懂用于動態(tài)路徑名解析的機制。
發(fā)明內(nèi)容
依照本發(fā)明的一個方面,具有計算機可執(zhí)行組件的計算機可讀媒質(zhì)包括包含變量/值映射的數(shù)據(jù)結(jié)構(gòu)和路徑名解析器。路徑名解析器被配置以在路徑名中標識變量、從數(shù)據(jù)結(jié)構(gòu)中檢索與所標識的變量關(guān)聯(lián)的值、并且修改路徑名,使得采用來自數(shù)據(jù)結(jié)構(gòu)的值替換該變量。
依照本發(fā)明的另一方面,一種計算機可讀媒質(zhì)具有計算機可執(zhí)行指令。計算機可執(zhí)行指令包括接收包括變量的路徑名;通過將該變量映射到數(shù)據(jù)結(jié)構(gòu)中對應的值來解析路徑名;向由所解析的路徑名指向的對象返回一句柄;以及通過向數(shù)據(jù)結(jié)構(gòu)添加變量/值對來擴展該數(shù)據(jù)結(jié)構(gòu)。
依照本發(fā)明的再一方面,使用可擴充數(shù)據(jù)結(jié)構(gòu)對計算機可讀媒質(zhì)進行編碼??蓴U充數(shù)據(jù)結(jié)構(gòu)包括第一字段和第二字段。第一字段包括對包括在路徑名中的變量的標識。第二字段包括該變量的值。路徑名包括可操作來指向?qū)ο蟮闹怠?br>
依照本發(fā)明的再一方面,一種計算機實現(xiàn)的方法包括在由請求對對象的進行訪問的組件所提供的路徑名中標識變量;將該變量映射到數(shù)據(jù)結(jié)構(gòu)中的相應值;通過使用相應值替換路徑名中的變量來修改路徑名,使解析的路徑名創(chuàng)建指向該對象的路徑;以及向發(fā)出請求的組件返回經(jīng)修改的路徑名。
圖1所示是可以在本發(fā)明的一個示例性實施例中使用的示例性計算裝置。
圖2所示是用于實踐本發(fā)明的示例性環(huán)境的結(jié)構(gòu)圖。
圖3所示是依照本發(fā)明執(zhí)行的路徑名解析過程的示例性概覽邏輯流程圖。
圖4所示是依照本發(fā)明執(zhí)行的數(shù)據(jù)結(jié)構(gòu)擴展過程的示例性概覽邏輯流程圖。
具體實施例方式
簡言之,本發(fā)明涉及用于后綁定(late-binding)/動態(tài)路徑名解析的系統(tǒng)和方法。路徑名解析可由變量標識器、路徑名引擎和數(shù)據(jù)結(jié)構(gòu)執(zhí)行。在請求通過路徑名對對象進行訪問時,變量標識器在路徑名中標識變量。路徑名引擎通過參考具有變量/值映射的數(shù)據(jù)結(jié)構(gòu)估算該變量。數(shù)據(jù)結(jié)構(gòu)可儲存在當前用戶的描述表(context)中。路徑名引擎通過使用來自數(shù)據(jù)結(jié)構(gòu)的其對應值替換路徑名中的變量來修改該路徑名,并返回修改的路徑名。
這里將首先參考可以實現(xiàn)本發(fā)明的實施例的說明性計算環(huán)境來描述本發(fā)明。接著,將描述本發(fā)明的一個特定實現(xiàn)的詳細示例。還會包括對于特定實現(xiàn)的特定細節(jié)的替代實現(xiàn)??梢岳斫猓景l(fā)明的具體實施形式不限于這里所描述的實施例。
說明性操作環(huán)境參考圖1,用于實現(xiàn)本發(fā)明的示例性系統(tǒng)包括計算裝置,如計算裝置100。在非常基本的配置中,計算裝置100通常包括至少一個處理單元102和系統(tǒng)存儲器104。根據(jù)計算裝置的確切配置和類型,系統(tǒng)存儲器可以是易失(如RAM)、非易失(如ROM、閃存等等)或兩者的某一組合。系統(tǒng)存儲器104通常包括操作系統(tǒng)105、一個或多個程序模塊106,并可包括程序數(shù)據(jù)107。依照本發(fā)明,操作系統(tǒng)105還可包括路徑解析器120。這一基本配置在圖1中由虛線108內(nèi)的組件說明。
計算裝置100可具有另外的特點或功能。例如,計算裝置100也可包括另外的數(shù)據(jù)存儲設(shè)備(可移動和/或不可移動),如,磁盤、光盤或帶。這類另外的存儲在圖1中由可移動存儲109和不可移動存儲110說明。計算機存儲媒質(zhì)可包括以用于儲存信息的任一方法或技術(shù)實現(xiàn)的易失和非易失、可移動和不可移動媒質(zhì),信息如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)。系統(tǒng)存儲器104、可移動存儲109和不可移動存儲110都是計算機存儲媒質(zhì)的示例。計算機存儲媒質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備、或可以用來儲存所期望的信息并可由計算裝置100訪問的任一其它媒質(zhì)。計算裝置100也具有(多個)輸入設(shè)備112,如鍵盤、鼠標、輸入筆、語音輸入設(shè)備、觸摸輸入設(shè)備等等。也可包括(多個)輸出設(shè)備,如顯示器、揚聲器、打印機等等。這些設(shè)備在本領(lǐng)域中是眾所周知的,并且不需要在這里詳細討論。
計算裝置100也可包含允許該裝置如通過網(wǎng)絡(luò)與其它計算裝置118進行通信的通信連接116。通信連接116是通信媒質(zhì)的一個示例。通信媒質(zhì)通??捎芍T如載波或其它傳輸機制中的已調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)包含,并包括任一信息傳送媒質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指以對信號中的信息進行編碼的方式對其一個或多個特征進行設(shè)置或改變的信號。作為示例而非局限,通信媒質(zhì)包括有線媒質(zhì),如有線網(wǎng)絡(luò)或直接連線連接、以及無線媒質(zhì),如聲學、RF、紅外和其它無線媒質(zhì)。這里使用的術(shù)語計算機可讀媒質(zhì)包括存儲媒質(zhì)和通信媒質(zhì)。
路徑名解析器的結(jié)構(gòu)參考圖2,示出了用于實踐本發(fā)明的示例性環(huán)境的結(jié)構(gòu)圖。圖2所示的示例性環(huán)境是用于文件系統(tǒng)的路徑/鏈接子系統(tǒng)環(huán)境200,包括依照本發(fā)明的路徑名解析器120。該環(huán)境包括請求組件205,可以是請求通過路徑名206對對象(如,對象212)的訪問的任一組件。例如,請求組件205可以是以下的任一一個或多個電子郵件消息中的嵌入式路徑或統(tǒng)一資源定位器(URL);以及具有包括在腳本中的變量的路徑。
在本實施例中,用來指對象212的路徑名206包括變量。例如,這一路徑名的一個示例可以是“servershare@userphonelist.doc”。在該示例中,“user(用戶)”項通過使用“@”字符被標識為變量。也可以使用其它字符。
路徑名解析器120包括變量標識器210、路徑名引擎220和數(shù)據(jù)結(jié)構(gòu)222。在這一特定實現(xiàn)中,變量標識器210在用戶模式中操作,路徑名引擎220和數(shù)據(jù)結(jié)構(gòu)駐留在內(nèi)核模式中。路徑名引擎220響應請求組件205并向變量標識器210請求變量估算。作為替代,請求組件205直接與變量標識器210進行通信來請求變量估算。
變量標識器210在路徑名206中標識變量。在這一特定實現(xiàn)中,通過在路徑名206中查找獨特前綴來標識變量,在本示例中為“@”字符。獨特前綴可以是一個或多個字符的任一組合。變量標識器210將標識的變量返回到路徑名引擎220。
路徑名引擎220通過參考數(shù)據(jù)結(jié)構(gòu)222估算變量。數(shù)據(jù)結(jié)構(gòu)222儲存大量的映射到對應值的變量名。這些值可以是字符串,或者可以是導致串的到任意可執(zhí)行代碼的參考點。路徑名引擎220在數(shù)據(jù)結(jié)構(gòu)222中搜索變量。僅當在數(shù)據(jù)結(jié)構(gòu)中儲存了值時,才找得到對應的值,因此每一變量具有適當定義的值范圍,因為唯一可用的值是儲存在數(shù)據(jù)結(jié)構(gòu)222中的值。如果該變量在數(shù)據(jù)結(jié)構(gòu)222中不存在,則將該路徑名標識為字符串而非包括變量的路徑名。這允許將合法的字符用作標識變量的前綴。作為替代,可以使用不合法的字符來標識變量,在這一情況下,如果變量在數(shù)據(jù)結(jié)構(gòu)222中不存在,將返回錯誤。
如果在數(shù)據(jù)結(jié)構(gòu)中存在對該變量的正確值,則將該值返回到變量標識器210。變量標識器210然后可以通過用該變量的值替換該變量來修改由請求組件205提供的路徑名206。以這一方式,修改的路徑名指向?qū)ο?12。變量標識器然后可以請求將修改的路徑名解析為對對象212的句柄并將該句柄返回到請求組件205。
在一個實施例中,數(shù)據(jù)結(jié)構(gòu)222可以對每一用戶唯一,使不同的用戶擁有一組不同的變量/值映射。這允許原文相同的路徑名(包括變量)基于登錄的是哪一用戶而映射到不同的對象。例如,如果在動態(tài)路徑名中使用了諸如“@username”的變量,該變量將基于是哪一用戶登錄到計算系統(tǒng)而計算為不同的值。在另一示例中,諸如“@L-146”的變量可以指辦公室位置。該變量可以在標識該辦公室內(nèi)的打印機的路徑名中使用,但是具有一個基于該辦公室的當前占有者的名字。因此,數(shù)據(jù)結(jié)構(gòu)222可包括將辦公室位置變量映射到該辦公室的當前占有者的用戶名的表。許多其它的替換方案對本領(lǐng)域的技術(shù)人員也是顯見的。
在該實現(xiàn)中,任何特許的應用能夠向數(shù)據(jù)結(jié)構(gòu)222寫入值和/或變量,由此令該機制可擴充。作為替代,數(shù)據(jù)結(jié)構(gòu)222可以是大小固定的,使用有限數(shù)量的值,使得無法任意添加值??梢栽诰哂杏晌募到y(tǒng)200的需求所確定的一個潛在值范圍的數(shù)據(jù)結(jié)構(gòu)222中定義獨特的變量。
可以以許多方式定義對應于變量的值。例如,值可以是用戶定義的或者值可以是上下文特定的(如,可以由操作系統(tǒng)或環(huán)境的狀態(tài)定義值)??梢蕴峁V泛使用的一些基本值,如對應于定義為“user(用戶)”的變量的值。
后綁定/動態(tài)路徑名解析的過程參考圖3,示出了依照本發(fā)明的路徑名解析過程的示例性概覽邏輯流程圖。過程在起始塊300進入,其中,請求組件請求對由路徑名標識的對象的訪問。過程繼續(xù)到塊310。
在塊310,在路徑名中定義變量。可以通過將路徑名分析成其構(gòu)成部分并搜索獨特的前綴字符,例如“@”來標識變量。如果找到變量,過程繼續(xù)到塊320。
在塊320,在數(shù)據(jù)結(jié)構(gòu),如具有變量/值映射的表中執(zhí)行對變量的搜索。在判別塊330,確定是否在數(shù)據(jù)結(jié)構(gòu)中找到用于該變量的條目。如果在數(shù)據(jù)結(jié)構(gòu)中找到該變量,則過程繼續(xù)到塊340。如果數(shù)據(jù)結(jié)構(gòu)中未找到該變量,則過程繼續(xù)到塊360,其中,將該變量作為不需要解析的字符串處理。
在塊340,從數(shù)據(jù)結(jié)構(gòu)中檢索與該變量關(guān)聯(lián)的值,過程繼續(xù)到塊350。在塊350,使用對應的值來替換路徑名中的變量來組成完整的路徑名,過程繼續(xù)到塊360。在塊360,將完整的路徑名返回到請求組件。過程繼續(xù)到塊370,完成了路徑名解析。
向數(shù)據(jù)結(jié)構(gòu)添加變量/值對的過程參考圖4,示出了依照本發(fā)明執(zhí)行的用于擴展數(shù)據(jù)結(jié)構(gòu)的示例性過程的邏輯流程圖??梢酝ㄟ^添加新的變量/值對來擴展該數(shù)據(jù)結(jié)構(gòu)。
過程在塊400開始,其中,系統(tǒng)管理員決定向數(shù)據(jù)結(jié)構(gòu)放入更多的變量和/或?qū)?。在判別塊410,確定該操作系統(tǒng)是否支持后綁定/動態(tài)路徑名。如果該操作系統(tǒng)支持后綁定/動態(tài)路徑名,則過程繼續(xù)到塊430。如果該操作系統(tǒng)不支持后綁定/動態(tài)路徑名,則過程繼續(xù)到塊420。在塊420,發(fā)布錯誤消息,通知系統(tǒng)管理員操作系統(tǒng)不支持后綁定/動態(tài)路徑名,過程繼續(xù)到塊460。
在塊430,向系統(tǒng)管理員提示輸入變量/值對。過程繼續(xù)到塊440。在塊440,系統(tǒng)管理員向系統(tǒng)輸入變量/值對。過程繼續(xù)到塊450。在塊450,向數(shù)據(jù)結(jié)構(gòu)添加變量/值對。過程在塊460結(jié)束。
可以理解,依照本發(fā)明向數(shù)據(jù)結(jié)構(gòu)添加變量/值對也可以由腳本執(zhí)行,如在用戶登錄時。此外,可以設(shè)置包括預定義變量/值映射的政策。類似地,具有足夠的權(quán)限來以保護模式改變數(shù)據(jù)結(jié)構(gòu)的軟件組件可以直接訪問并修改數(shù)據(jù)結(jié)構(gòu)中的變量/值對。以這一方式,可以創(chuàng)建在特定用戶、若干組件在其上執(zhí)行的特定硬件或軟件的上下文中、或基于一些其它標準解析的變量/值映射。
以上說明、示例和數(shù)據(jù)提供了本發(fā)明的制造和組成部分的使用的完整描述。由于可以在不脫離本發(fā)明的精神和范圍的情況下作出本發(fā)明的許多實施例,因此本發(fā)明包含在所附權(quán)利要求書中。
權(quán)利要求
1.一種具有計算機可執(zhí)行組件的計算機可讀媒質(zhì),其特征在于,它包括一數(shù)據(jù)結(jié)構(gòu),它包括變量/值映射;一路徑名解析器,它被配置成在路徑名中標識變量、從所述數(shù)據(jù)結(jié)構(gòu)中檢索與所述標識的變量關(guān)聯(lián)的值以及修改所述路徑名,使得采用來自所述數(shù)據(jù)結(jié)構(gòu)的所述值替換所述變量。
2.如權(quán)利要求1所述的計算機可讀媒質(zhì),其特征在于,所述路徑名解析器包括一變量標識器,它被配置成在所述路徑名中標識所述變量。
3.如權(quán)利要求1所述的計算機可讀媒質(zhì),其特征在于,所述路徑名解析器包括一路徑名引擎,它被配置成通過執(zhí)行以下步驟來標識所述變量在所述數(shù)據(jù)結(jié)構(gòu)中搜索所述變量;訪問所述對應的值;以及在所述路徑名中插入所述值代替所述變量,使得所述路徑標識對象的定位。
4.如權(quán)利要求1所述的計算機可讀媒質(zhì),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)在操作系統(tǒng)的內(nèi)核模式中實現(xiàn)。
5.如權(quán)利要求1所述的計算機可讀媒質(zhì),其特征在于,所述變量/值對由用戶在所述數(shù)據(jù)結(jié)構(gòu)中定義。
6.如權(quán)利要求1所述的計算機可讀媒質(zhì),其特征在于,所述變量/值對由所述計算機可讀媒質(zhì)在其中操作的上下文在所述數(shù)據(jù)結(jié)構(gòu)中定義。
7.一種具有計算機可執(zhí)行指令的計算機可讀媒質(zhì),其特征在于,所述計算機可執(zhí)行指令包括接收包括變量的路徑名;通過將所述變量映射到數(shù)據(jù)結(jié)構(gòu)中的對應值來解析所述路徑名;向由所述解析的路徑名指向的對象返回一句柄;以及通過向所述數(shù)據(jù)結(jié)構(gòu)添加變量/值對來擴展所述數(shù)據(jù)結(jié)構(gòu)。
8.如權(quán)利要求7所述的具有計算機可執(zhí)行指令的計算機可讀媒質(zhì),其特征在于,所述計算機可執(zhí)行指令還包括在所述路徑名中標識所述變量。
9.如權(quán)利要求8所述的具有計算機可執(zhí)行指令的計算機可讀媒質(zhì),其特征在于,所述計算機可執(zhí)行指令還包括在操作系統(tǒng)的內(nèi)核中實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)中搜索所述變量。
10.如權(quán)利要求9所述的具有計算機可執(zhí)行指令的計算機可讀媒質(zhì),其特征在于,所述計算機可執(zhí)行指令還包括在所述路徑中插入對應于所述變量的所述值代替所述變量。
11.一種使用可擴充數(shù)據(jù)結(jié)構(gòu)編碼的計算機可讀媒質(zhì),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)包括第一字段,包括對包括在路徑名中的變量的標識;以及第二字段,包括用于所述變量的值,所述路徑名包括可操作來指向?qū)ο蟮闹怠?br>
12.如權(quán)利要求11所述的使用可擴充數(shù)據(jù)結(jié)構(gòu)來編碼的計算機可讀媒質(zhì),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)儲存在操作系統(tǒng)的內(nèi)核中。
13.如權(quán)利要求11所述的使用可擴充數(shù)據(jù)結(jié)構(gòu)來編碼的計算機可讀媒質(zhì),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)可通過添加變量/值對來擴展。
14.一種計算機實現(xiàn)的方法,其特征在于,它包括在由請求訪問對象的組件提供的路徑名中標識變量;將所述變量映射到數(shù)據(jù)結(jié)構(gòu)中對應的值;通過用所述對應值在路徑名中替換所述變量來修改所述路徑名,使得所述解析的路徑名創(chuàng)建指向所述對象的路徑;以及將所述修改的路徑名返回到所述請求組件。
15.如權(quán)利要求14所述的計算機實現(xiàn)的方法,其特征在于,它還包括接收包括變量的路徑名。
16.如權(quán)利要求14所述的用于解析路徑名的計算機實現(xiàn)的方法,其特征在于,它還包括在操作系統(tǒng)的內(nèi)核中實現(xiàn)的所述數(shù)據(jù)結(jié)構(gòu)中搜索所述變量。
17.一種具有用于執(zhí)行權(quán)利要求14所述的方法的計算機可執(zhí)行指令的計算機可讀媒質(zhì)。
全文摘要
可以由在用戶或內(nèi)核模式操作的變量標識器、在內(nèi)核模式中操作的路徑名引擎和數(shù)據(jù)結(jié)構(gòu)來執(zhí)行后綁定/動態(tài)路徑名解析。變量標識器在路徑名中標識變量。路徑名引擎通過將所述變量轉(zhuǎn)換為字符串來估算所述變量,以建立到對象文件的路徑。路徑名引擎通過將所述變量映射到儲存在所述數(shù)據(jù)結(jié)構(gòu)中的對應值對所述變量確定潛在字符串值的范圍。每一變量具有較佳定義的范圍的值,因為唯一可用的值是被選擇來儲存在所述數(shù)據(jù)結(jié)構(gòu)中的值。用于建立值的機制是可擴充的,使得在任何時刻可以在數(shù)據(jù)結(jié)構(gòu)中實現(xiàn)變量/值對。
文檔編號G06F12/00GK1577329SQ20041005573
公開日2005年2月9日 申請日期2004年7月29日 優(yōu)先權(quán)日2003年7月29日
發(fā)明者D·C·斯蒂爾, B·杜威, R·納加, V·V·戈特格 申請人:微軟公司