專利名稱:發(fā)現(xiàn)對(duì)象接口的技術(shù)的制作方法
發(fā)現(xiàn)對(duì)象接口的技術(shù)
背景技術(shù):
面向?qū)ο缶幊?OOP)是使用對(duì)象設(shè)計(jì)軟件程序的編程技術(shù)。對(duì)象可包括具有數(shù)據(jù)字段、方法、屬性和事件的定義集合的數(shù)據(jù)結(jié)構(gòu)的離散集合。每個(gè)對(duì)象能夠接收消息、處理數(shù)據(jù)并向其他對(duì)象發(fā)送消息。可在同一進(jìn)程或不同進(jìn)程中執(zhí)行其他對(duì)象。進(jìn)程是正被執(zhí)行的軟件程序的實(shí)例。取決于操作系統(tǒng),進(jìn)程可被實(shí)現(xiàn)為一個(gè)或多個(gè)執(zhí)行線程,其同時(shí)執(zhí)行來(lái)自軟件程序的指令。典型地,不同進(jìn)程(或在一些情況下,單個(gè)進(jìn)程的不同線程)中執(zhí)行的對(duì)象利用某一形式的進(jìn)程間通信(IPC)在不同進(jìn)程之間交換數(shù)據(jù)。IPC技術(shù)可包括涉及消息傳遞、同步、共享存儲(chǔ)器以及遠(yuǎn)程過(guò)程調(diào)用(RPC)的操作。基于諸如在進(jìn)程或進(jìn)程的線程之間的通信的帶寬和延遲、以及被傳送的數(shù)據(jù)的類型之類的因素,可使用不同的IPC技術(shù)。IPC技術(shù)的改進(jìn)可導(dǎo)致更有效的軟件程序和架構(gòu)。正是針對(duì)這些或其他考慮而已經(jīng)需要本改進(jìn)。
發(fā)明內(nèi)容
提出本發(fā)明內(nèi)容以簡(jiǎn)化的形式介紹以下在具體實(shí)施方式
中進(jìn)一步描述的概念選集。本發(fā)明內(nèi)容既不意圖標(biāo)識(shí)要求保護(hù)主題的關(guān)鍵特征或重要特征,也不意圖被用于輔助確定要求保護(hù)主題的范圍。各個(gè)實(shí)施例總體上針對(duì)軟件編程技術(shù)。具體地,一些實(shí)施例針對(duì)增強(qiáng)的IPC技術(shù), 其被設(shè)計(jì)為改進(jìn)不同進(jìn)程或進(jìn)程線程中操作的對(duì)象之間的通信。增強(qiáng)的IPC技術(shù)以安全和獨(dú)立的方式,允許在一個(gè)進(jìn)程(或線程)中運(yùn)行的一個(gè)對(duì)象容易地發(fā)現(xiàn)和連接到在不同的進(jìn)程(或線程)中運(yùn)行的另一對(duì)象。例如,在一個(gè)實(shí)施例中,設(shè)備可包括與存儲(chǔ)器通信性耦連的處理器。存儲(chǔ)器可存儲(chǔ)具有對(duì)象關(guān)聯(lián)組件和對(duì)象發(fā)現(xiàn)組件的IPC組件。對(duì)象關(guān)聯(lián)組件可被安排為生成映射信息, 其表示應(yīng)用對(duì)象和系統(tǒng)對(duì)象之間的映射。更具體地,映射信息可表示針對(duì)第一進(jìn)程中執(zhí)行的應(yīng)用程序的應(yīng)用對(duì)象和針對(duì)第二進(jìn)程中執(zhí)行的系統(tǒng)程序的系統(tǒng)對(duì)象的系統(tǒng)對(duì)象句柄的應(yīng)用對(duì)象接口。對(duì)象關(guān)聯(lián)組件可創(chuàng)建針對(duì)存儲(chǔ)器映射文件的存儲(chǔ)器映射文件名,并在存儲(chǔ)器映射文件中存儲(chǔ)具有映射信息的記錄。對(duì)象發(fā)現(xiàn)組件允許系統(tǒng)對(duì)象,在諸如進(jìn)程崩潰的情況下,使用關(guān)于應(yīng)用對(duì)象和/或存儲(chǔ)器映射文件中存儲(chǔ)的應(yīng)用對(duì)象接口的信息來(lái)發(fā)現(xiàn)應(yīng)用對(duì)象。這可通過(guò)允許系統(tǒng)對(duì)象使用一條已知的信息(諸如系統(tǒng)對(duì)象句柄)生成存儲(chǔ)器映射文件名來(lái)完成。以此方式,系統(tǒng)對(duì)象可生成獨(dú)立于應(yīng)用對(duì)象的存儲(chǔ)器映射文件名,由此消除與應(yīng)用對(duì)象進(jìn)行通信以在訪問(wèn)存儲(chǔ)器映射文件之前取得存儲(chǔ)器映射文件名的任何需要。描述并要求了其他實(shí)施例。提供閱讀以下具體實(shí)施方式
和查看關(guān)聯(lián)附圖,這些和其他特征及優(yōu)勢(shì)將是清楚的。將理解,對(duì)于所要求的各方面,前述總體描述和以下具體實(shí)施方式
兩者均僅是說(shuō)明性的而非限制性的。
圖1例示了 IPC系統(tǒng)的實(shí)施例。圖2例示了 IPC組件的實(shí)施例。圖3例示了存儲(chǔ)器映射文件的實(shí)施例。圖4A例示了用戶接口視圖的實(shí)施例。圖4B例示了修改的用戶接口視圖的實(shí)施例。圖5例示了第一邏輯流的實(shí)施例。圖6例示了第二邏輯流的實(shí)施例。圖7例示了計(jì)算架構(gòu)的實(shí)施例。
具體實(shí)施例方式各種實(shí)施例目的為增強(qiáng)的IPC技術(shù),以促進(jìn)在不同進(jìn)程或單個(gè)進(jìn)程的不同線程中操作的對(duì)象的發(fā)現(xiàn)和通信。一些實(shí)施例利用存儲(chǔ)器映射文件來(lái)存儲(chǔ)發(fā)現(xiàn)操作中的有用信息,諸如關(guān)于對(duì)象和/或用于對(duì)象的接口的信息。例如,在一個(gè)實(shí)施例中,存儲(chǔ)器映射文件可存儲(chǔ)關(guān)于應(yīng)用對(duì)象和應(yīng)用對(duì)象標(biāo)識(shí)符(諸如應(yīng)用接口標(biāo)識(shí)符(IID))的信息。存儲(chǔ)器映射文件具有唯一的和可創(chuàng)建的存儲(chǔ)器映射文件名,其可由在任何一個(gè)線程中的任何一個(gè)對(duì)象利用單段共享數(shù)據(jù)(例如,諸如對(duì)象句柄的唯一標(biāo)識(shí)符)自動(dòng)生成。以此方式,在不同進(jìn)程 (或線程)中執(zhí)行的不同對(duì)象可發(fā)現(xiàn)并直接互相連接而不必通過(guò)其他對(duì)象或程序發(fā)送消息。 因此,實(shí)施例可改進(jìn)軟件程序的可承受性、可擴(kuò)縮性、模塊性、可擴(kuò)展性或互操作性。圖1例示了 IPC系統(tǒng)100的框圖,其包括或?qū)崿F(xiàn)增強(qiáng)的IPC技術(shù),以促進(jìn)在不同的軟件程序及其關(guān)聯(lián)對(duì)象之間的發(fā)現(xiàn)和通信。例如,在一個(gè)實(shí)施例中,IPC系統(tǒng)100可包括具有多個(gè)組件130、132和136的計(jì)算機(jī)實(shí)現(xiàn)的IPC系統(tǒng)100。作為此處使用的術(shù)語(yǔ)“系統(tǒng)”和 “組件”意圖指的是與計(jì)算機(jī)有關(guān)的實(shí)體,包括硬件、軟件和硬件的組合、軟件或執(zhí)行中的軟件。例如,組件可被實(shí)現(xiàn)為處理器上運(yùn)行的進(jìn)程、處理器、硬盤驅(qū)動(dòng)器、多個(gè)存儲(chǔ)驅(qū)動(dòng)器(光學(xué)和/或磁存儲(chǔ)介質(zhì)的)、對(duì)象、可執(zhí)行程序、執(zhí)行線程、程序和/或計(jì)算機(jī)。通過(guò)例示的方式,服務(wù)器上運(yùn)行的應(yīng)用和服務(wù)器兩者可以是組件。一個(gè)或多個(gè)組件可駐留在進(jìn)程和/或執(zhí)行線程內(nèi),且組件可定位在一臺(tái)計(jì)算機(jī)上和/或如給定的實(shí)現(xiàn)方式所期望的那樣分布在兩臺(tái)或多臺(tái)計(jì)算機(jī)之間。實(shí)施例不限于該環(huán)境。在圖1示出的例示實(shí)施例中,IPC系統(tǒng)100可被實(shí)現(xiàn)為電子設(shè)備的一部分。電子設(shè)備的例子可包括但不限于移動(dòng)設(shè)備、個(gè)人數(shù)字助理、移動(dòng)計(jì)算設(shè)備、智能電話、蜂窩電話、手機(jī)、單向?qū)ず魴C(jī)、雙向?qū)ず魴C(jī)、消息設(shè)備、計(jì)算機(jī)、個(gè)人計(jì)算機(jī)(PC)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)、手持式計(jì)算機(jī)、平板計(jì)算機(jī)、服務(wù)器、服務(wù)器陣列或服務(wù)器組、網(wǎng)上服務(wù)器、網(wǎng)絡(luò)服務(wù)器、因特網(wǎng)服務(wù)器、工作站、小型計(jì)算機(jī)、大型計(jì)算機(jī)、超級(jí)計(jì)算機(jī)、網(wǎng)絡(luò)電器、 網(wǎng)上電器、分布式計(jì)算系統(tǒng)、多處理器系統(tǒng)、基于處理器的系統(tǒng)、消費(fèi)電子產(chǎn)品、游戲設(shè)備、 可編程消費(fèi)電子產(chǎn)品、電視、數(shù)字電視、機(jī)頂盒、無(wú)線接入點(diǎn)、基站、用戶臺(tái)、移動(dòng)用戶中心、 無(wú)線電網(wǎng)絡(luò)控制器、路由器、集線器、網(wǎng)關(guān)、網(wǎng)橋、交換機(jī)、機(jī)器或其組合。雖然圖1示出的 IPC系統(tǒng)100在某一拓?fù)渲芯哂杏邢迶?shù)目的元件,可預(yù)想到的是,如給定的實(shí)現(xiàn)方式所期望的、IPC系統(tǒng)100在替代拓?fù)渲锌砂ǜ嗷蚋僭=M件130、132和136可經(jīng)由各種類型的通信介質(zhì)通信性地耦連。組件130、132和 136可在彼此之間協(xié)調(diào)操作。協(xié)調(diào)可涉及單向或雙向地交換信息。例如,組件130、132和136可以在通信介質(zhì)上傳送的信號(hào)的方式來(lái)傳送信息。信息可被實(shí)現(xiàn)為分配給各種信號(hào)線的信號(hào)。在這樣的分配中,每個(gè)消息是信號(hào)。然而,其他實(shí)施例可替代地采用數(shù)據(jù)消息??赏ㄟ^(guò)各種連接發(fā)送這樣的數(shù)據(jù)消息。示例連接包括并行接口、串行接口和總線接口。例如,在一個(gè)實(shí)施例中,IPC系統(tǒng)100可包括或?qū)崿F(xiàn)諸如通信性耦連到存儲(chǔ)器106 的處理器102之類的處理系統(tǒng)。存儲(chǔ)器106可存儲(chǔ)IPC組件130。處理器102 (或另一處理器)可執(zhí)行IPC組件130,以總體地管理各種軟件程序及在不同進(jìn)程或處理線程中執(zhí)行的關(guān)聯(lián)對(duì)象之間的IPC操作。例如,IPC組件130可允許來(lái)自一個(gè)軟件程序的對(duì)象使用共享存儲(chǔ)器技術(shù)和唯一名稱分配來(lái)發(fā)現(xiàn)另一軟件程序的對(duì)象、并與之連接和通信。可按照給定的OPP體系架構(gòu)、參考或模型來(lái)實(shí)現(xiàn)軟件程序。總體上,對(duì)象可包括具有數(shù)據(jù)字段、方法、屬性和事件的定義集合的數(shù)據(jù)結(jié)構(gòu)的離散集合。每個(gè)對(duì)象能夠接收消息、處理數(shù)據(jù)并向其他對(duì)象發(fā)送消息。換句話說(shuō),每個(gè)對(duì)象可被視為具有不同角色或責(zé)任的獨(dú)立“機(jī)器”。這樣,軟件程序可表示交互對(duì)象的集合。進(jìn)程是正被執(zhí)行的軟件程序的實(shí)例。其包含程序代碼及其當(dāng)前活動(dòng)。取決于操作系統(tǒng)(0S),進(jìn)程可由同時(shí)執(zhí)行指令的多個(gè)執(zhí)行線程構(gòu)成。軟件程序是存儲(chǔ)在存儲(chǔ)器104中的指令的被動(dòng)集合(passive collection).進(jìn)程是處理器102對(duì)那些指令的實(shí)際執(zhí)行。一些進(jìn)程可與同一軟件程序相關(guān)聯(lián)。例如,開(kāi)始同一程序的幾個(gè)實(shí)例經(jīng)常意味著多于一個(gè)進(jìn)程正被執(zhí)行。在各種實(shí)施例中,處理器102可被布置為執(zhí)行不同進(jìn)程中的不同軟件程序。例如, 在圖1示出的例示實(shí)施例中,處理器102執(zhí)行第一進(jìn)程104中的應(yīng)用程序110和第二進(jìn)程 114中的系統(tǒng)程序120。用于應(yīng)用程序110的例子可包括來(lái)自獨(dú)立或互相關(guān)的應(yīng)用(例如, 字處理器、電子制表、演示、繪圖、數(shù)據(jù)庫(kù)、筆記等,諸如華盛頓州雷德蒙德的微軟公司制作的MICR0S0FT 0FFICE)套件中的產(chǎn)品程序。用于系統(tǒng)程序120的例子可包括被實(shí)現(xiàn)用于前述電子設(shè)備(例如,計(jì)算設(shè)備)的操作系統(tǒng)(OS)及相關(guān)聯(lián)的圖形用戶接口(GUI),諸如華盛頓州雷德蒙德的微軟公司制作的MICROSOFT WINDOWS 。可預(yù)想到,這些僅僅是用于軟件程序 110、120的示例,而且需要進(jìn)程間通信支持的任何軟件程序都可被用于給定的實(shí)現(xiàn)方式。實(shí)施例不限于該環(huán)境。值得注意的是,雖然圖1例示了單個(gè)處理器102執(zhí)行不同線程104、114的,但可預(yù)想到,不同的處理器可各自執(zhí)行不同的線程104、114。而且,雖然圖1示出了處理器102執(zhí)行不同進(jìn)程104、114,但可預(yù)想到,單個(gè)進(jìn)程可具有利用IPC組件130的不同的處理線程。當(dāng)被執(zhí)行時(shí),軟件程序110、120可每個(gè)都在運(yùn)行時(shí)間期間實(shí)例化被設(shè)計(jì)為彼此交互的一個(gè)或多個(gè)對(duì)象。如所示,應(yīng)用程序Iio可實(shí)例化應(yīng)用對(duì)象112,且系統(tǒng)程序120可實(shí)例化系統(tǒng)對(duì)象122。用于應(yīng)用對(duì)象112的例子可包括呈現(xiàn)文檔的文檔對(duì)象。系統(tǒng)對(duì)象122 的例子可包括用于GUI的窗口對(duì)象來(lái)呈現(xiàn)文檔對(duì)象。其他對(duì)象是可能的??深A(yù)想到的是, 對(duì)象112、122可具有彼此共同的特征,且總體上軟件對(duì)象包括具有數(shù)據(jù)字段、方法、屬性和事件的定義集合的數(shù)據(jù)結(jié)構(gòu)的離散集合。進(jìn)一步地,對(duì)象112、122能夠接收消息、處理數(shù)據(jù)并向其他對(duì)象發(fā)送消息(包括彼此發(fā)送)。應(yīng)用對(duì)象112還可包括應(yīng)用對(duì)象接口 114。應(yīng)用對(duì)象接口 114 一般可包括用于與另一對(duì)象傳遞消息的接口。例如,如果應(yīng)用對(duì)象112是用于字處理器的文檔,則應(yīng)用對(duì)象接口 114可被用于接收來(lái)自輸入設(shè)備的擊鍵以顯示在文檔上。例如,在各種實(shí)施例中,應(yīng)用對(duì)象接口 114可符合使得應(yīng)用對(duì)象112能與諸如系統(tǒng)對(duì)象122的其他對(duì)象交互的對(duì)象模型和編程參數(shù)集。例如,在一個(gè)實(shí)施例中,應(yīng)用對(duì)象接口 114可被實(shí)現(xiàn)為Microsoft組件對(duì)象模型(COM)接口。COM接口是允許訪問(wèn)應(yīng)用對(duì)象112的相關(guān)函數(shù)或方法的集合。典型地,通過(guò)指向COM接口的指針來(lái)訪問(wèn)COM接口。同樣可以為符合不同類型的對(duì)象模型和編程參數(shù)的應(yīng)用對(duì)象112實(shí)現(xiàn)其他對(duì)象接口。實(shí)施例不限于該環(huán)境。系統(tǒng)對(duì)象122還可包括系統(tǒng)對(duì)象句柄124。系統(tǒng)對(duì)象句柄IM是系統(tǒng)程序120分配給其創(chuàng)建的每個(gè)系統(tǒng)對(duì)象的唯一標(biāo)識(shí)符。系統(tǒng)對(duì)象句柄1 可用于唯一地標(biāo)識(shí)系統(tǒng)對(duì)象 124,以便其可被諸如應(yīng)用對(duì)象112之類的其他對(duì)象使用。系統(tǒng)對(duì)象句柄123可具有以由公開(kāi)對(duì)象接口的程序和使用(consume)對(duì)象接口的程序兩者重新創(chuàng)建的方式分配給它們的 “對(duì)象名”。例如,在一個(gè)實(shí)施例中,系統(tǒng)程序120可被實(shí)現(xiàn)為MICROSOFT WINDOWS 0S,系統(tǒng)對(duì)象122可被實(shí)現(xiàn)為用于其⑶I的窗口對(duì)象,且系統(tǒng)對(duì)象句柄IM可包括窗口句柄(HWND)。 由于HWND不會(huì)同時(shí)分配給兩個(gè)系統(tǒng)對(duì)象,所以給定的HWND是唯一的。因?yàn)閷?duì)象112、122在不同進(jìn)程104、114 (或在一些情況下,單個(gè)進(jìn)程中的不同線程)中執(zhí)行,所以對(duì)象112、122可能需要某一形式的進(jìn)程間通信(IPC)以跨越不同進(jìn)程104、 114的處理邊界來(lái)交換數(shù)據(jù)。為此,IPC組件130可實(shí)現(xiàn)各種增強(qiáng)的IPC技術(shù),以支持與消息傳遞、同步、共享存儲(chǔ)器和遠(yuǎn)程過(guò)程調(diào)用(RPC)相關(guān)的操作。如所示,IPC組件130可尤其包括對(duì)象關(guān)聯(lián)組件132、存儲(chǔ)器映射文件134和對(duì)象發(fā)現(xiàn)組件136等。例如,在各種實(shí)施例中,IPC組件130、對(duì)象關(guān)聯(lián)組件132和/或?qū)ο蟀l(fā)現(xiàn)組件136可被實(shí)現(xiàn)為一個(gè)或多個(gè)應(yīng)用程序接口(API),其被存儲(chǔ)為調(diào)用程序(例如,如應(yīng)用程序110和系統(tǒng)程序120)可用的軟件庫(kù)的一部分。然而,實(shí)施例不限于此類實(shí)現(xiàn)方式。在一個(gè)實(shí)施例中,API可以具有運(yùn)行時(shí)間執(zhí)行的二進(jìn)制形式。圖2例示了 IPC組件130的更詳細(xì)框圖。更具體地,圖2例示了在對(duì)象關(guān)聯(lián)組件 132、存儲(chǔ)器映射文件134和對(duì)象發(fā)現(xiàn)組件136之間的示例信息流。信息可被實(shí)現(xiàn)為分配給各種信號(hào)線的信號(hào)。在這樣的分配中,每個(gè)消息是信號(hào)。然而,替代實(shí)施例可采用數(shù)據(jù)消息。 可通過(guò)各種連接發(fā)送這樣的數(shù)據(jù)消息。示例連接包括并行接口、串行接口和總線接口。對(duì)象關(guān)聯(lián)組件132 —般可被布置為將各種對(duì)象關(guān)聯(lián)在一起,以便其能彼此交互或互操作,例如,作為觀察者/主題對(duì)象或客戶端/服務(wù)器對(duì)象。關(guān)聯(lián)可包括用于在對(duì)象之間建立和移除連接的各種類型的信息。例如,在一個(gè)實(shí)施例中,處理器102可執(zhí)行對(duì)象關(guān)聯(lián)組件132以生成映射信息202,其表示在對(duì)象112、122之間的某一形式的映射或關(guān)聯(lián)。例如, 映射信息202可包括映射第一進(jìn)程104中執(zhí)行的應(yīng)用程序110的應(yīng)用對(duì)象112與第二進(jìn)程 114中執(zhí)行的系統(tǒng)程序120的系統(tǒng)對(duì)象122的系統(tǒng)對(duì)象句柄124的應(yīng)用對(duì)象接口 114的信息(例如,指針、參考、句柄、名字對(duì)象(moniker)等)。對(duì)象關(guān)聯(lián)組件132可創(chuàng)建存儲(chǔ)器映射文件134以存儲(chǔ)映射信息202。存儲(chǔ)器映射文件134可包括軟件程序110、120可訪問(wèn)的存儲(chǔ)器106中的共享存儲(chǔ)器的一部分。存儲(chǔ)器映射文件134包含虛擬存儲(chǔ)器中的文件內(nèi)容。在文件和存儲(chǔ)器空間之間的該映射使得包括多個(gè)進(jìn)程的軟件程序能通過(guò)閱讀并直接寫入虛擬存儲(chǔ)器而修改文件。存儲(chǔ)器映射文件134 可存儲(chǔ)映射信息202并由頁(yè)面文件(paging file)支持。頁(yè)面文件上將設(shè)置有系統(tǒng)訪問(wèn)控制列表(SACL),其不允許以低集成級(jí)別運(yùn)行的進(jìn)程訪問(wèn)頁(yè)面文件,從而訪問(wèn)所公開(kāi)的服務(wù)和接口。管理集成級(jí)別的技術(shù)可包括訪問(wèn)控制條目(ACE)集成技術(shù)等。CN 102541543 A
可跨越多個(gè)進(jìn)程共享存儲(chǔ)器映射文件134。這樣,軟件程序110、120可經(jīng)由存儲(chǔ)器映射文件134跨越進(jìn)程邊界共享數(shù)據(jù)。例如,應(yīng)用程序110可將某些數(shù)據(jù)寫入存儲(chǔ)器映射文件134,且系統(tǒng)程序120可從存儲(chǔ)器映射文件134中讀取數(shù)據(jù),反之亦然。在一個(gè)實(shí)施例中,存儲(chǔ)器映射文件134可包括或被實(shí)現(xiàn)為記錄陣列,每個(gè)記錄具有映射信息202和任何關(guān)聯(lián)字段(例如,頭、終結(jié)符、元數(shù)據(jù)等)的集合。在一個(gè)實(shí)施例中,應(yīng)用程序110可創(chuàng)建并管理存儲(chǔ)器映射文件134,即,應(yīng)用程序 110調(diào)用對(duì)象關(guān)聯(lián)組件132。以此方式,在系統(tǒng)程序120和/或系統(tǒng)對(duì)象122具有意外的關(guān)閉或異常終止事件的情景中,存儲(chǔ)器映射文件134將保持可發(fā)現(xiàn)。系統(tǒng)程序120可重啟或重實(shí)例化系統(tǒng)對(duì)象122。然后,系統(tǒng)程序120和/或系統(tǒng)對(duì)象122可嘗試?yán)脤?duì)象發(fā)現(xiàn)組件136發(fā)現(xiàn)應(yīng)用對(duì)象112。替代地,系統(tǒng)程序120可創(chuàng)建并管理存儲(chǔ)器映射文件134。然而,有可能是這種情景,如果應(yīng)用程序110要具有意外的關(guān)閉或重啟事件,則相關(guān)聯(lián)的系統(tǒng)對(duì)象也同樣會(huì)被關(guān)閉,且一旦應(yīng)用程序110重啟,則被重實(shí)例化,因此具有更少用于在對(duì)象之間發(fā)現(xiàn)操作的需要。實(shí)施例不限于該環(huán)境。當(dāng)被調(diào)用時(shí),對(duì)象關(guān)聯(lián)組件132可創(chuàng)建存儲(chǔ)器映射文件和用于存儲(chǔ)器映射文件 134的存儲(chǔ)器映射文件名204。存儲(chǔ)器映射文件名204包括用于存儲(chǔ)器映射文件134的唯一標(biāo)識(shí)符。在一個(gè)實(shí)施例中,在維護(hù)足夠的唯一性以避免與其他進(jìn)程的沖突的同時(shí),可由在進(jìn)程104、114兩者中的對(duì)象112、122創(chuàng)建存儲(chǔ)器映射文件名204。在一個(gè)實(shí)施例中,如以下參考圖5的描述,可使用系統(tǒng)對(duì)象122的系統(tǒng)對(duì)象句柄IM創(chuàng)建存儲(chǔ)器映射文件名204。對(duì)象關(guān)聯(lián)組件132可在存儲(chǔ)器映射文件134中存儲(chǔ)具有映射信息202的記錄。一旦存儲(chǔ)器映射文件134已被創(chuàng)建了,則對(duì)象關(guān)聯(lián)組件132可在存儲(chǔ)器映射文件134中存儲(chǔ)一個(gè)或多個(gè)記錄,每個(gè)記錄具有用于關(guān)聯(lián)對(duì)象(例如,對(duì)象112、122)的映射信息202??梢詤⒖紙D3更詳細(xì)地描述針對(duì)存儲(chǔ)器映射文件134及其存儲(chǔ)的記錄的例子。一旦對(duì)象關(guān)聯(lián)組件132創(chuàng)建存儲(chǔ)器映射文件134并存儲(chǔ)具有映射信息202的記錄,則可使用對(duì)象發(fā)現(xiàn)組件136從存儲(chǔ)器映射文件134中取出映射信息202。對(duì)象發(fā)現(xiàn)組件136允許系統(tǒng)對(duì)象122諸如在系統(tǒng)崩潰的情況下使用存儲(chǔ)器映射文件134發(fā)現(xiàn)應(yīng)用對(duì)象112。這可通過(guò)允許系統(tǒng)對(duì)象122使用一段已知的信息,諸如系統(tǒng)對(duì)象句柄124 (例如, HWND),來(lái)生成存儲(chǔ)器映射文件名204。以此方式,系統(tǒng)對(duì)象122可生成獨(dú)立于應(yīng)用對(duì)象112 的存儲(chǔ)器映射文件名204,這意指系統(tǒng)對(duì)象122無(wú)需詢問(wèn)應(yīng)用對(duì)象112以在訪問(wèn)存儲(chǔ)器映射文件134之前取得存儲(chǔ)器映射文件名204。例如,在圖2示出的例示實(shí)施例中,對(duì)象發(fā)現(xiàn)組件136接收服務(wù)請(qǐng)求210,確定用于系統(tǒng)對(duì)象122的系統(tǒng)對(duì)象句柄124,并使用系統(tǒng)對(duì)象句柄IM創(chuàng)建用于存儲(chǔ)器映射文件134 的存儲(chǔ)器映射文件名204。由于系統(tǒng)對(duì)象122由系統(tǒng)程序120創(chuàng)建,該系統(tǒng)程序120將系統(tǒng)對(duì)象句柄1 分配給系統(tǒng)對(duì)象122,對(duì)象發(fā)現(xiàn)組件136可從由進(jìn)程114使用的同一地址空間內(nèi)取得系統(tǒng)對(duì)象句柄124。為了創(chuàng)建存儲(chǔ)器映射文件名204,對(duì)象發(fā)現(xiàn)組件136可調(diào)用用于初始地創(chuàng)建存儲(chǔ)器映射文件名204的同一 API,將系統(tǒng)對(duì)象句柄IM作為API簽名的輸入?yún)?shù)來(lái)傳遞。替代地,對(duì)象發(fā)現(xiàn)組件136可使用同一或類似的邏輯作為該API,以僅使用系統(tǒng)對(duì)象句柄1 來(lái)再生成存儲(chǔ)器映射文件名204。然后,對(duì)象發(fā)現(xiàn)組件136可使用存儲(chǔ)器映射文件名204定位存儲(chǔ)器映射文件134,并從存儲(chǔ)器映射文件134取得具有映射信息202 的記錄。對(duì)象發(fā)現(xiàn)組件136可對(duì)映射信息202進(jìn)行解碼以發(fā)現(xiàn)用于應(yīng)用對(duì)象112的應(yīng)用對(duì)象接口 114的指針、參考、句柄或其他位置信息。對(duì)象發(fā)現(xiàn)組件136可將位置信息返回指系統(tǒng)對(duì)象122。系統(tǒng)對(duì)象122可使用位置信息以發(fā)現(xiàn)應(yīng)用對(duì)象112及其應(yīng)用對(duì)象接口 114,并使用應(yīng)用對(duì)象接口 114在應(yīng)用對(duì)象112和系統(tǒng)對(duì)象122之間建立消息連接。圖3例示了用于存儲(chǔ)器映射文件134的例子。在圖3示出的例示實(shí)施例中,存儲(chǔ)器映射文件Π4可包括記錄302-a的陣列。每個(gè)記錄302-a可包括具有標(biāo)頭304_b和映射信息306-c集的數(shù)據(jù)結(jié)構(gòu)。例如,映射信息306-c可表示映射信息202。值得注意的是,如此處使用的“a”和“b”和“C”和類似的標(biāo)志符意圖是表示任何正整數(shù)的變量。因此,例如,如果實(shí)現(xiàn)方式設(shè)置值為a = 5,則記錄302-a的完整集合可包括記錄302-1、302-2、302-3、302-4和302-5。實(shí)施例不限于該環(huán)境。標(biāo)頭304-b可描繪具有映射信息306-c集的記錄302-a的開(kāi)頭。在一個(gè)實(shí)施例中, 每個(gè)標(biāo)頭304-b可包括簽名、映射信息306-c的大小和服務(wù)標(biāo)識(shí)符。這可如以下表1所例示
表 1___
DWORDIdwSig|“ffSVC,,
ULARGE—INTEGER cbStreamSize~ 編組流大小 GUID!serviced |服務(wù)標(biāo)識(shí)符一
在標(biāo)頭304-b之后是映射信息306-c。如例示,存儲(chǔ)器映射文件134可包含具有至少兩
個(gè)記錄的陣列,包括記錄302-1,其包括標(biāo)頭304-1和映射信息306-1,和記錄302-2,其包括
標(biāo)頭304-2和映射信息306-2??捎帽恢甘緸槲募K結(jié)符308的特殊數(shù)據(jù)結(jié)構(gòu)終止陣列。在一個(gè)實(shí)施例中,文件終結(jié)符308可被實(shí)現(xiàn)為標(biāo)頭304-b,頭304-b具有有效的簽名,設(shè)置為0 (0)的流大小和設(shè)置為GUID_NULL的服務(wù)標(biāo)識(shí)符。同樣可使用其他文件終結(jié)符。一旦被創(chuàng)建了,存儲(chǔ)器映射文件在注冊(cè)進(jìn)程中保持打開(kāi),且每個(gè)記錄302-a被存儲(chǔ)在全局列表中,其維護(hù)系統(tǒng)對(duì)象句柄124 (例如,HWND)、應(yīng)用對(duì)象接口 114 (例如,接口標(biāo)識(shí)符)和標(biāo)識(shí)記錄302-a的文件映射句柄之間的映射。這個(gè)全局列表可存儲(chǔ)在線程本地存儲(chǔ)(TLS)隙中并因此是每個(gè)線程的。文件映射句柄僅對(duì)發(fā)起進(jìn)程有意義并在去注冊(cè)接口時(shí)使用。圖4A例示了適合于使用IPC系統(tǒng)100的用戶接口視圖400。如圖4A所示,用戶接口視圖400例示了代表應(yīng)用對(duì)象112的多個(gè)應(yīng)用對(duì)象402-d。假定應(yīng)用對(duì)象402-d中的每一個(gè)對(duì)應(yīng)于與應(yīng)用程序110類似的不同應(yīng)用程序,并被布置為對(duì)應(yīng)的應(yīng)用程序呈現(xiàn)用戶接口 406-f。進(jìn)一步假定應(yīng)用對(duì)象402-d中的每一個(gè)使用IPC組件130與對(duì)應(yīng)的系統(tǒng)對(duì)象 404-e相關(guān)聯(lián)或映射至對(duì)應(yīng)的系統(tǒng)對(duì)象404-e。例如,每個(gè)系統(tǒng)對(duì)象404_e可以是系統(tǒng)對(duì)象 122的代表,并可被實(shí)現(xiàn)為系統(tǒng)程序120生成的⑶I窗口。在操作中,應(yīng)用對(duì)象402-d中的每一個(gè)可進(jìn)行操作以在系統(tǒng)對(duì)象404-e的各個(gè)窗口中呈現(xiàn)各個(gè)用戶接口 406-f。例如,應(yīng)用對(duì)象402-1可在系統(tǒng)對(duì)象404-1中呈現(xiàn)用戶接口 406-1,且應(yīng)用對(duì)象402-3可在系統(tǒng)對(duì)象406-3中呈現(xiàn)用戶接口 406-3。如所示,假定系統(tǒng)對(duì)象404-3是比系統(tǒng)對(duì)象404-l、404-2. . . 404-e更大的窗口。因?yàn)橄到y(tǒng)對(duì)象404-3是初級(jí)窗口,而其他系統(tǒng)對(duì)象404-1、404-2. . . 404-e是次級(jí)窗口,所以這可能發(fā)生。如箭頭408 指示,當(dāng)用戶接口視圖400呈現(xiàn)在電子設(shè)備上時(shí),這可以是所期望的,該電子設(shè)備具有被設(shè)計(jì)為允許多個(gè)應(yīng)用程序同時(shí)運(yùn)行,并允許用戶在系統(tǒng)對(duì)象404-e的初級(jí)窗口和次級(jí)窗口之間切換應(yīng)用對(duì)象402-d和關(guān)聯(lián)用戶接口 406-f的處理系統(tǒng)。用戶接口視圖400可提供允許控制用戶接口視圖400 (例如,指針、按鈕、手勢(shì)等)的各種GUI工具。圖4B例示了適合于使用IPC系統(tǒng)100的用戶接口視圖400。圖4B例示了當(dāng)用戶從系統(tǒng)對(duì)象404-1到系統(tǒng)對(duì)象404-3切換應(yīng)用對(duì)象402-1和關(guān)聯(lián)用戶接口 406-1時(shí)的用戶接口視圖400,反之亦然。為了完成這個(gè),系統(tǒng)程序120可使用IPC組件130以移除在應(yīng)用對(duì)象402-1和系統(tǒng)對(duì)象404-1之間的現(xiàn)存連接,并在應(yīng)用對(duì)象402-1和系統(tǒng)對(duì)象404-3之間建立新的連接,反之亦然。替代地,系統(tǒng)程序120可為應(yīng)用對(duì)象402-1生成與系統(tǒng)對(duì)象 404-3類似的新的系統(tǒng)對(duì)象404-e (例如,系統(tǒng)對(duì)象404-5),以替換系統(tǒng)對(duì)象404-3。可以參照一個(gè)或多個(gè)邏輯流進(jìn)一步描述上述實(shí)施例的操作。可預(yù)想到的是,除非另有指示,代表邏輯流不必以呈現(xiàn)的順序或以任何具體的順序執(zhí)行。此外,關(guān)于邏輯流描述的各種活動(dòng)可以串行或并行方式執(zhí)行。如設(shè)計(jì)或性能約束的給定集合所期望的,可使用所描述的實(shí)施例中的一個(gè)或多個(gè)硬件元件和/或軟件元件或替代元件來(lái)實(shí)現(xiàn)邏輯流。例如, 邏輯流可被實(shí)現(xiàn)為由邏輯設(shè)備(例如,通用或?qū)S糜?jì)算機(jī))執(zhí)行的邏輯(例如,計(jì)算機(jī)程序指令)。圖5例示了邏輯流500的一個(gè)實(shí)施例。例如,邏輯流500可代表此處描述的一個(gè)或多個(gè)實(shí)施例,諸如IPC組件130的對(duì)象關(guān)聯(lián)組件132,執(zhí)行的一些或所有操作。在圖5示出的例示實(shí)施例中,在框502處,邏輯流500可創(chuàng)建用于在第一進(jìn)程中執(zhí)行的應(yīng)用程序的應(yīng)用對(duì)象,應(yīng)用對(duì)象具有應(yīng)用對(duì)象接口。例如,應(yīng)用程序110可創(chuàng)建第一進(jìn)程104中執(zhí)行的一個(gè)或多個(gè)應(yīng)用對(duì)象112,每個(gè)應(yīng)用對(duì)象112具有應(yīng)用對(duì)象接口 114。在框504,邏輯流500可啟動(dòng)創(chuàng)建用于在第二進(jìn)程中執(zhí)行的系統(tǒng)程序的系統(tǒng)對(duì)象, 系統(tǒng)對(duì)象具有系統(tǒng)對(duì)象句柄。例如,應(yīng)用程序Iio和/或應(yīng)用對(duì)象112可啟動(dòng)創(chuàng)建用于在第二進(jìn)程114中執(zhí)行的系統(tǒng)程序120的系統(tǒng)對(duì)象122,系統(tǒng)對(duì)象122具有系統(tǒng)對(duì)象句柄124。 在一個(gè)實(shí)施例中,系統(tǒng)對(duì)象句柄1 可包括由系統(tǒng)程序120分配的HWND。在框506,邏輯流500可映射應(yīng)用對(duì)象接口和系統(tǒng)對(duì)象句柄。例如,應(yīng)用程序110 和/或應(yīng)用對(duì)象112可調(diào)用對(duì)象關(guān)聯(lián)組件132以映射應(yīng)用對(duì)象接口 114和系統(tǒng)對(duì)象句柄 124。對(duì)象關(guān)聯(lián)組件132可允許應(yīng)用程序110來(lái)注冊(cè)應(yīng)用對(duì)象接口 114和用于應(yīng)用程序 110 “擁有”的系統(tǒng)對(duì)象122上的應(yīng)用對(duì)象112的其他服務(wù)。這允許IPC系統(tǒng)100中的其他進(jìn)程發(fā)現(xiàn)和使用注冊(cè)的接口和服務(wù)。應(yīng)用程序Iio可通過(guò)調(diào)用注冊(cè)API以將應(yīng)用對(duì)象接口 114和系統(tǒng)對(duì)象句柄124 (例如,HWND)相關(guān)聯(lián),來(lái)公開(kāi)應(yīng)用對(duì)象112的應(yīng)用對(duì)象接口 114。 一旦這已經(jīng)完成了,了解系統(tǒng)對(duì)象句柄124的任何進(jìn)程可獲取用于在給定情景中使用的應(yīng)用對(duì)象接口 114。在一個(gè)實(shí)施例中,對(duì)象關(guān)聯(lián)組件132可使用COM API集合來(lái)執(zhí)行注冊(cè)操作。去注冊(cè)接口本質(zhì)上逆轉(zhuǎn)注冊(cè)操作。通過(guò)例子的方式,應(yīng)用程序110可通過(guò)具有以下簽名的RegisterWindowService (注冊(cè)窗口服務(wù))API將服務(wù)和HWND相關(guān)聯(lián)
STDAPI RegisterWindowService (—in HWND hwnd,
— in REFGUID
serviceld,RegisterWindowService (注冊(cè)窗口服務(wù))的偽代碼如下(為簡(jiǎn)潔起見(jiàn)而沒(méi)有錯(cuò)誤檢
查)
STDAPI RegisterWindowService(—in HWND hwnd,
—in REFGUID serviceld, —in IUnknown 氺punk)
{
wchar_t szFileMappingName[150];
_CreateFileMappingName (hwnd, szFileMappingName, ARRAYSIZE(szFileMappingName)); IStream ^pStream;
CreateStreamOnHGlobal(NULL, TRUE, &pStream); CoMarshalInterface(pStream, —uuidof(punk), punk, MSHCTX—LOCAL, NULL, MSHLFLAGS—TABLESTRONG); HANDLE hMapping;
—AddServiceToFiIeMapping(pStream,
szFileMappiηgName, serviceld,
pSecurityAttributes, &hMapping);
_gHWNDMappingHo1der. AddMapping(hwnd, serviceld, hMapping);
ι
在創(chuàng)建系統(tǒng)對(duì)象122期間,應(yīng)用程序110可初始化適當(dāng)線程上的COM,并注冊(cè)應(yīng)用對(duì)象接口 114,如下
int APIENTRY wffinMain (_in HINSTANCE hlnstance,
_in_opt HINSTANCE, —in PWSTR, —in int nCmdShow)
{
if (SUCCEEDED(Colnitialize(NULL)))
{
if (SUCCEEDED (CreateApplicationWindow(hlnstance, nCmdShow)))
{
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg); DispatchMessage(&msg);
ι}
CoUninitialize ();
ι
return O;
ι
LRESULT CALLBACK WndProc(HWND hffnd, UINT message, WPARAM wParam, LPARAM
IParam)
{
switch (message) {
case WM_NCCREATE:
{
IObjectProvider ^pProvider; —CreateObjectProvider(&pProvider); RegisterWindowService(hWnd,
SID—SomeSystemService, pProvider);
ι
break;
應(yīng)用程序110可使用具有如下簽名的QueryWindowService (詢問(wèn)窗口服務(wù))API詢問(wèn)系統(tǒng)程序120的接口
STDAPI QueryWindowService (_in HWND hwnd,
——in REFGUID serviceld, ——in REFIID riid,
—deref—out void
水水ppvObject);
QueryWindowService (詢問(wèn)窗口服務(wù))的偽代碼如下
STDAPI QueryWindowService (—in HWND hwnd, ——in REFGUID serviceId,—in
REFIID riid, _deref—out void 氺氺ppvObject)
{
^ppvObject = NULL;
wchar_t szFileMappingName[150];
_CreateFiIeMappingName(hwnd, szFiIeMappingName, ARRAYSIZE(szFileMappingName)); IStream ^pStream;
—GetServiceFromFileMapping(szFileMappingName, serviceId, &pStream); CoUnmarshalInterface(pStream, riid, ppvObject);
ι
在注冊(cè)操作期間,對(duì)象關(guān)聯(lián)組件130可執(zhí)行COM編組(marshaling)操作,以創(chuàng)建表示映射信息202,306-c的編組COM接口流。編組COM接口流可包括一系列表示編組數(shù)據(jù)包的字節(jié)。例如,編組數(shù)據(jù)包可包括針對(duì)以下信息的這樣的數(shù)據(jù)字段,諸如簽名(例如,微軟擴(kuò)展對(duì)象線或“MEOW”簽名)、一個(gè)或多個(gè)標(biāo)志、接口標(biāo)識(shí)符(IID)、CLSID、任選的保留數(shù)據(jù)、數(shù)據(jù)字節(jié)計(jì)數(shù)和定制編組數(shù)據(jù)(例如,定制代理的初始化數(shù)據(jù))。同樣可使用其他數(shù)據(jù)字段。編組COM接口流可被作為存儲(chǔ)器映射文件134的記錄302-a的一部分存儲(chǔ)。系統(tǒng)程序120可使用對(duì)象發(fā)現(xiàn)組件136,以定位存儲(chǔ)器映射文件134,定位給定的編組COM接口流,并執(zhí)行解編組操作以獲得用于應(yīng)用對(duì)象接口 114的IID。在框508,邏輯流500可創(chuàng)建用于存儲(chǔ)器映射文件的存儲(chǔ)器映射文件名。例如,對(duì)象關(guān)聯(lián)組件132可創(chuàng)建用于存儲(chǔ)器映射文件134的存儲(chǔ)器映射文件名204。在一個(gè)實(shí)施例中,可使用系統(tǒng)對(duì)象122的系統(tǒng)對(duì)象句柄IM創(chuàng)建存儲(chǔ)器映射文件名204。因?yàn)闆](méi)有兩個(gè)進(jìn)程可在同時(shí)包含同一句柄值,所以系統(tǒng)對(duì)象句柄IM提供適合的唯一性級(jí)別(特別是為HWND)。因此,利用作為映射文件名204的一部分的HWND確保至少與賦予HWND的類似的唯一性級(jí)別。如下示出了適合于以“HWND接口 [HWND] ”形式創(chuàng)建用于存儲(chǔ)器映射文件134的存儲(chǔ)器映射文件名的應(yīng)用程序接口(API)的例子
static const wchar_t _gszHwndInterfacePrefix[] = L〃冊(cè)NDInterface:〃; HRESULT _CreateFileMappingName (_in HWND hwnd,
—out—ecount(cchName) PWSTR pszName, —in—range(>, 0) unsigned int cchName)
{
wchar_t szGuid[40];
StringFromGUID2(riid, szGuid, ARRAYSIZE(szGuid)); return StringCchPrintf(pszName,
cchName, L"%s%llx",
_gszHwndInterfacePrefix,
reinterpret—cast〈unsigned long long> (hwnd)); 在框510,邏輯流500可在存儲(chǔ)器映射文件中存儲(chǔ)具有映射信息的記錄。例如,對(duì)象關(guān)聯(lián)組件132可在存儲(chǔ)器映射文件134中存儲(chǔ)具有映射信息306-c的記錄302_a。繼續(xù)先前的COM例子,在應(yīng)用對(duì)象接口 114注冊(cè)期間,系統(tǒng)對(duì)象句柄IM或HWND 被驗(yàn)證為屬于調(diào)用進(jìn)程,其在此處是應(yīng)用程序110。然后,因?yàn)镠WND在機(jī)器之間沒(méi)有意義,所以將使用指示本地機(jī)器用途的CoMarshal Interface方法將應(yīng)用對(duì)象接口 114編組為編組COM接口流(例如,IMream)。然后,將存儲(chǔ)在編組COM接口流中的編組信息保存在存儲(chǔ)器映射文件134中。存儲(chǔ)器映射文件134的存儲(chǔ)器映射文件名204將是由 CreateFlieMappingName (創(chuàng)建文件映射名)方法返回的同一標(biāo)識(shí)符。這使其他進(jìn)程能讀取編組信息。然后,存儲(chǔ)器映射文件將具有被施加到其的SYSTEM_MANDATORY_LABEL_ACE,指定 SYSTEM_MANDAT0RY_LABEL_N0_READ_UP | SYSTEM_MANDAT0RY_LABEL_N0_WRITE_UP 這將確保以低于調(diào)用應(yīng)用的集成級(jí)別運(yùn)行的應(yīng)用將不能訪問(wèn)注冊(cè)到高集成級(jí)別應(yīng)用的接口。取決于與窗口相關(guān)聯(lián)的服務(wù)的數(shù)目,存儲(chǔ)器映射文件134將典型地包含多于一個(gè)編組COM接口流。如參照?qǐng)D3所述,存儲(chǔ)器映射文件134本質(zhì)上包含編組COM接口流的陣列。維護(hù)這個(gè)映射的類的定義的例子如下
class CHWNDMap
{
CHWNDMap () _tlsSlot (TlsAlloc ())
{
}
HRESULT AddMapping(—in HWND const hwnd, —in REFGUID serviceld,— in HANDLE const hMapping) const;
HRESULT RemoveAll (—in HWND const hwnd) const;
HRESULT RemoveMapping(—in HWND const hwnd, —in REFGUID serviceld, HANDLE ^phFileMapping) const;
struct HWND_FILEMAPPING
{
HWND const_hwnd;
GUID_serviceld;
HANDLE const _hFiIeMapping;
};
DWORD const _tlsSlot;
};
圖6例示了邏輯流600的一個(gè)實(shí)施例。例如,邏輯流600可代表由此處描述的一個(gè)或多個(gè)實(shí)施例,諸如IPC組件130的對(duì)象發(fā)現(xiàn)組件136,執(zhí)行的一些或所有操作。在圖6示出的例示實(shí)施例中,在框602,邏輯流600可接收用于應(yīng)用對(duì)象的服務(wù)請(qǐng)求。例如,對(duì)象發(fā)現(xiàn)組件136可接收針對(duì)應(yīng)用對(duì)象112的服務(wù)請(qǐng)求210 (例如,API調(diào)用)。在框604,邏輯流600可確定用于系統(tǒng)對(duì)象的系統(tǒng)對(duì)象句柄。例如,對(duì)象發(fā)現(xiàn)組件 136可確定用于系統(tǒng)對(duì)象122的系統(tǒng)對(duì)象句柄124。對(duì)象發(fā)現(xiàn)組件136可使用將系統(tǒng)對(duì)象句柄1 分配給系統(tǒng)對(duì)象122的系統(tǒng)程序120所提供的信息,確定系統(tǒng)對(duì)象句柄124。在框606,邏輯流600可使用系統(tǒng)對(duì)象句柄創(chuàng)建用于存儲(chǔ)器映射文件的存儲(chǔ)器映射文件名。例如,對(duì)象發(fā)現(xiàn)組件136可使用系統(tǒng)對(duì)象句柄IM創(chuàng)建(或重新創(chuàng)建)用于存儲(chǔ)器映射文件134的存儲(chǔ)器映射文件名204。在框608,邏輯流600可從存儲(chǔ)器映射文件取得具有映射信息的記錄,映射信息表示在用于第一進(jìn)程中執(zhí)行的應(yīng)用程序的應(yīng)用對(duì)象的應(yīng)用對(duì)象接口和用于第二進(jìn)程中執(zhí)行的系統(tǒng)程序的系統(tǒng)對(duì)象的系統(tǒng)對(duì)象句柄之間的映射。例如,對(duì)象發(fā)現(xiàn)組件136可從存儲(chǔ)器映射文件134取得具有映射信息306-c的記錄302-a。映射信息306_c可表示在用于第一進(jìn)程104中執(zhí)行的應(yīng)用程序110的應(yīng)用對(duì)象112的應(yīng)用對(duì)象接口 114和用于第二進(jìn)程114 中執(zhí)行的系統(tǒng)程序120的系統(tǒng)對(duì)象122的系統(tǒng)對(duì)象句柄IM之間的映射。繼續(xù)以前圖5的例子,對(duì)象發(fā)現(xiàn)組件136可使用與由對(duì)象關(guān)聯(lián)組件132使用來(lái)初始創(chuàng)建存儲(chǔ)器映射文件名204相同的CreateFileMappingName (創(chuàng)建文件映射名)方法來(lái)構(gòu)造存儲(chǔ)器映射文件名204 (和IID)。對(duì)象發(fā)現(xiàn)組件136可定位存儲(chǔ)器映射文件名,并使用IID將來(lái)自存儲(chǔ)器映射文件134的編組信息重組在IStream中。應(yīng)用對(duì)象接口 114使用 CoUmarshalInterface API 來(lái)解編組。在異常應(yīng)用終止的情況下,IPC組件130可被布置為確保正確地清除OS資源。例如,當(dāng)進(jìn)程終止且到存儲(chǔ)器映射文件134的最后句柄被關(guān)閉時(shí),內(nèi)核(kernel)將正確地清除存儲(chǔ)器映射文件134。這些API的實(shí)現(xiàn)方式僅保持存儲(chǔ)器映射文件134打開(kāi)足夠久以讀取來(lái)自存儲(chǔ)器映射文件134的數(shù)據(jù)并將其放入IMream。可使用COM操作清除在異常應(yīng)用終止之后留下的任何代理/存根(stub)。如果另一進(jìn)程正在保持到因?yàn)閼?yīng)用終止而不再可用的對(duì)象的代理,則它將開(kāi)始接收指示對(duì)象已不在的RPC錯(cuò)誤。如果應(yīng)用未能調(diào)用去注冊(cè)操作,則維護(hù)在HWND、服務(wù)標(biāo)識(shí)符和文件映射句柄之間的映射的全局列表將被泄露(作為堆泄露),但是,當(dāng)應(yīng)用終止時(shí),其可由OS再生(reclaim)??傮w上由IPC系統(tǒng)100 (具體地由IPC組件130)實(shí)現(xiàn)的增強(qiáng)的IPC技術(shù)提供了優(yōu)于傳統(tǒng)的IPC技術(shù)的各種優(yōu)勢(shì)。例如,增強(qiáng)的IPC技術(shù)使應(yīng)用能通知在HWND級(jí)的接口和服務(wù)。在另一例子中,增強(qiáng)的IPC技術(shù)使應(yīng)用能動(dòng)態(tài)地在運(yùn)行時(shí)間移除或改變接口和服務(wù)的通知。在再一例子中,增強(qiáng)的IPC技術(shù)允許資源回收。在再一例子中,增強(qiáng)的IPC技術(shù)適應(yīng)較差的應(yīng)用設(shè)計(jì)。在再一例子中,增強(qiáng)的IPC技術(shù)允許這樣的情景,其中如果應(yīng)用正常終止 (未崩潰)但是應(yīng)用未能正常釋放資源,則由這個(gè)特征分配的資源可由操作系統(tǒng)再生。在再一例子中,增強(qiáng)的IPC技術(shù)適應(yīng)應(yīng)用崩潰。在再一例子中,增強(qiáng)的IPC技術(shù)允許這樣的情景, 其中如果應(yīng)用異常終止,則操作系統(tǒng)應(yīng)清除HWND接口約定(contract)。最后,增強(qiáng)的IPC 技術(shù)提供管理安全性的能力。這些僅是例子,且增強(qiáng)的IPC技術(shù)也提供其他優(yōu)勢(shì)。圖7例示了適合于實(shí)現(xiàn)前述的各種實(shí)施例的示例計(jì)算體系架構(gòu)700的實(shí)施例。計(jì)算體系架構(gòu)700包括各種普通的計(jì)算元件,諸如一個(gè)或多個(gè)處理器、協(xié)處理器、存儲(chǔ)器單元、芯片組、控制器、外圍設(shè)備、接口、振蕩器、定時(shí)設(shè)備、視頻卡、音頻卡、多媒體輸入/輸出 (I/O)組件等等。然而,實(shí)施例不限于由計(jì)算體系架構(gòu)700的實(shí)現(xiàn)方式。如圖7所示,計(jì)算體系架構(gòu)700包括處理單元704、系統(tǒng)存儲(chǔ)器706和系統(tǒng)總線 708。處理單元704可以是各種商業(yè)可得的處理器中的任何一種。雙微處理器和其他多處理器架構(gòu)也可被采用為處理單元704。系統(tǒng)總線708為包括但不限于系統(tǒng)存儲(chǔ)器706的系統(tǒng)組件提供至處理單元704的接口。系統(tǒng)總線708可以是一些類型的總線結(jié)構(gòu)中的任何一種,其還可使用各種商業(yè)可得的總線體系架構(gòu)中的任何一種與存儲(chǔ)器總線(具有或沒(méi)有存儲(chǔ)器控制器)、外圍總線和本地總線互連。系統(tǒng)存儲(chǔ)器706可包括各種類型的存儲(chǔ)器單元,諸如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、動(dòng)態(tài)RAM (DRAM)、雙倍數(shù)據(jù)速率DRAM (DDRAM)、同步DRAM (SDRAM)、靜態(tài)RAM (SRAM)、可編程ROM (PROM)、可擦除可編程ROM (EPR0M)、電可擦除可編程ROM (EEPR0M)、 閃存、諸如鐵電聚合物存儲(chǔ)器的聚合物存儲(chǔ)器、雙向存儲(chǔ)器、相變或鐵電存儲(chǔ)器、硅-氧化物-氮化物-氧化物-硅(S0N0S)存儲(chǔ)器、磁或光學(xué)卡、或適合于存儲(chǔ)信息的任何其他類型的介質(zhì)。在圖7示出的例示實(shí)施例中,系統(tǒng)存儲(chǔ)器706可包括非易失性存儲(chǔ)器710和/或易失性存儲(chǔ)器712?;据斎?輸出系統(tǒng)(BIOS)可被存儲(chǔ)在非易失性存儲(chǔ)器710中。計(jì)算機(jī)702可包括各種類型的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括內(nèi)部硬盤驅(qū)動(dòng)器(HDD) 714、磁軟盤驅(qū)動(dòng)器(FDD)716以從可移除磁盤718讀取或?qū)懭肟梢瞥疟P718、以及光盤驅(qū)動(dòng)器720以從可移除光盤722讀取或?qū)懭肟梢瞥獗P722(例如,⑶-ROM或DVD)。HDD714、FDD716和光盤驅(qū)動(dòng)器720可由HDD接口 724、FDD接口 7 和光驅(qū)動(dòng)器接口 7 分別連接至系統(tǒng)總線708。用于外圍驅(qū)動(dòng)器實(shí)現(xiàn)方式的HDD接口 7 可包括通用串行總線(USB)和 IEEE1395接口技術(shù)中的至少一個(gè)或兩者。驅(qū)動(dòng)器和相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)提供數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可執(zhí)行指令等等的易失性和/或非易失性存儲(chǔ)。例如,多個(gè)程序模塊可被存儲(chǔ)在驅(qū)動(dòng)器或存儲(chǔ)器單元710、 712中,這包括操作系統(tǒng)730、一個(gè)或多個(gè)應(yīng)用程序732、其他程序模塊734和程序數(shù)據(jù)736。 例如,一個(gè)或多個(gè)應(yīng)用程序732、其他程序模塊734和程序數(shù)據(jù)736可包括IPC系統(tǒng)100、應(yīng)用程序110、系統(tǒng)程序120、IPC組件130、對(duì)象關(guān)聯(lián)組件132、存儲(chǔ)器映射文件134和對(duì)象發(fā)現(xiàn)組件136等等。用戶可通過(guò)一個(gè)或多個(gè)有線/無(wú)線輸入設(shè)備(例如,鍵盤738和諸如鼠標(biāo)740的指示設(shè)備)在計(jì)算機(jī)702中鍵入命令和信息。其他輸入設(shè)備可包括麥克風(fēng)、紅外(IR)遠(yuǎn)程控制、控制桿、游戲板、輸入筆、觸摸屏等。這些或其他輸入設(shè)備經(jīng)常通過(guò)輸入設(shè)備接口 742(耦連至系統(tǒng)總線708,但也可由其他接口諸如并行端口、IEEE1394串行端口、游戲端口、USB端口、頂接口等等連接)連接至處理單元704。監(jiān)視器744或其他類型的顯示設(shè)備也經(jīng)由諸如視頻適配器746的接口連接至系統(tǒng)總線708。除監(jiān)視器744外,計(jì)算機(jī)典型地包括諸如揚(yáng)聲器、打印機(jī)等等的其他外圍輸出設(shè)備。計(jì)算機(jī)702可使用經(jīng)由有線和/或無(wú)線通信至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)(諸如遠(yuǎn)程計(jì)算機(jī)748)的邏輯連接在網(wǎng)絡(luò)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)748可以是工作站、服務(wù)器計(jì)算機(jī)、 路由器、個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)、基于微處理器的娛樂(lè)家用電器、對(duì)等設(shè)備或其他普通的網(wǎng)絡(luò)節(jié)點(diǎn),并典型地包括關(guān)于計(jì)算機(jī)702描述的許多或所有元件(盡管為了簡(jiǎn)潔的目的, 僅例示了存儲(chǔ)器/存儲(chǔ)設(shè)備750)。所描繪的邏輯連接包括至局域網(wǎng)(LAN)752和/或更大的網(wǎng)絡(luò)(例如,廣域網(wǎng)(WAN)754)的有線/無(wú)線連接性。這樣的LAN和WAN網(wǎng)絡(luò)環(huán)境是辦公室和公司中的普通事物,并促進(jìn)諸如內(nèi)聯(lián)網(wǎng)的企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò),所有這些可連接至全球通信網(wǎng)絡(luò)(例如,因特網(wǎng))。當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),通過(guò)有線和/或無(wú)線通信網(wǎng)絡(luò)接口或適配器756將計(jì)算機(jī)702連接至LAN 752。適配器756可便于至LAN 752的有線/無(wú)線通信,其還可包括其上布置的用于與適配器756的無(wú)線功能進(jìn)行通信的無(wú)線接入點(diǎn)。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)702可包括調(diào)制解調(diào)器758,或被連接至WAN 7 上的通信服務(wù)器,或具有用于通過(guò)WAN 754 (諸如通過(guò)因特網(wǎng)的方式)建立通信的其他手段。調(diào)制解調(diào)器758,其可以是內(nèi)部的或外部的和有線和/或無(wú)線設(shè)備,經(jīng)由輸入設(shè)備接口 742連接至系統(tǒng)總線708。在網(wǎng)絡(luò)環(huán)境中,涉及計(jì)算機(jī)702描述的程序模塊或其部分可被存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器/存儲(chǔ)設(shè)備750中。將預(yù)想到,示出的網(wǎng)絡(luò)連接是示例性的,而且可以使用在計(jì)算機(jī)之間建立通信鏈接的其他手段。計(jì)算機(jī)702可操作為使用IEEE 802標(biāo)準(zhǔn)族與有線和無(wú)線設(shè)備或?qū)嶓w進(jìn)行通信,諸如操作性地布置在與例如打印機(jī)、掃描儀、臺(tái)式和/或便攜式計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、 通信衛(wèi)星,任何與無(wú)線地可檢測(cè)的標(biāo)簽(例如,公用電話間(kiosk)、報(bào)攤、休息室)相關(guān)聯(lián)的設(shè)備或位置和電話進(jìn)行無(wú)線通信(例如,IEEE 802. 11空中調(diào)制技術(shù))中的無(wú)線設(shè)備。這包括至少Wi-Fi(或無(wú)線保真)、WiMax和Bluetooth 無(wú)線技術(shù)。因此,通信可以是如同傳統(tǒng)網(wǎng)
1絡(luò)的預(yù)定義結(jié)構(gòu)或簡(jiǎn)單地在至少兩個(gè)設(shè)備之間的ad hoc通信。Wi-Fi網(wǎng)絡(luò)使用被稱為IEEE 802. Ilx (a、b、g等)的無(wú)線電技術(shù)提供安全、可靠、快速的無(wú)線連接性。Wi-Fi網(wǎng)絡(luò)可被用于連接計(jì)算機(jī)至彼此、至因特網(wǎng)及至有線網(wǎng)絡(luò)(其使用IEEE 802. 3-相關(guān)的介質(zhì)和功能)。可使用硬件元件、軟件元件或其組合實(shí)現(xiàn)各種實(shí)施例。硬件元件的例子可包括設(shè)備、組件、處理器、微處理器、電路、電路元件(例如,晶體管、電阻器、電容器、電感器等等)、 集成電路、專用集成電路(ASIC)、可編程邏輯設(shè)備(PLD),數(shù)字信號(hào)處理器(DSP)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、存儲(chǔ)器單元、邏輯門、寄存器、半導(dǎo)體器件、芯片、微芯片、芯片組等等。軟件元件的例子可包括軟件組件、程序、應(yīng)用、計(jì)算機(jī)程序、應(yīng)用程序、系統(tǒng)程序、機(jī)器程序、操作系統(tǒng)軟件、中間件、固件、軟件模塊、例程、子例程、函數(shù)、方法、過(guò)程、軟件接口、應(yīng)用程序接口(API)、指令集、計(jì)算代碼、計(jì)算機(jī)代碼、代碼片段、計(jì)算機(jī)代碼片段、字、值、符號(hào)或其組合。如給定的實(shí)現(xiàn)方式所期望的,確定是否使用硬件元件和/或軟件元件實(shí)現(xiàn)實(shí)施例可根據(jù)任何數(shù)目的因素(諸如期望的計(jì)算速率、功率級(jí)別、熱容忍度、處理周期預(yù)算、輸入數(shù)據(jù)速率、輸出數(shù)據(jù)速率、存儲(chǔ)器資源、數(shù)據(jù)總線速度和其他設(shè)計(jì)或性能約束)而不同。一些實(shí)施例可包括制品。制品可包括用來(lái)存儲(chǔ)邏輯的存儲(chǔ)介質(zhì)。存儲(chǔ)介質(zhì)的例子可包括能夠存儲(chǔ)電子數(shù)據(jù)的一種或多種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括易失性存儲(chǔ)器或非易失性存儲(chǔ)器,可移除或不可移除存儲(chǔ)器,可擦除或不可擦除存儲(chǔ)器,可寫或不可寫存儲(chǔ)器等。 邏輯的例子可包括各種軟件元件,諸如軟件組件、程序、應(yīng)用、計(jì)算機(jī)程序、應(yīng)用程序、系統(tǒng)程序、機(jī)器程序、操作系統(tǒng)軟件、中間件、固件、軟件模塊、例程、子例程、函數(shù)、方法、過(guò)程、軟件接口、應(yīng)用程序接口(API)、指令集、計(jì)算代碼、計(jì)算機(jī)代碼、代碼片段、計(jì)算機(jī)代碼片段、 字、值、符號(hào)或其任意組合。例如,在一個(gè)實(shí)施例中,制品可存儲(chǔ)可執(zhí)行計(jì)算機(jī)程序指令,其在被計(jì)算機(jī)執(zhí)行時(shí),使得計(jì)算機(jī)根據(jù)描述的實(shí)施例執(zhí)行方法和/或操作。可執(zhí)行計(jì)算機(jī)程序指令可包括任何適合的類型的代碼(諸如源代碼、編譯代碼、解釋代碼、可執(zhí)行代碼、靜態(tài)代碼、動(dòng)態(tài)代碼等)??筛鶕?jù)預(yù)定義計(jì)算機(jī)語(yǔ)言、方式或句法實(shí)現(xiàn)可執(zhí)行計(jì)算機(jī)程序指令,用于指示計(jì)算機(jī)執(zhí)行某一功能。可使用任何適合的高級(jí)、低級(jí)、面向?qū)ο蟮?、虛擬的、編譯的和 /或解釋編程語(yǔ)言實(shí)現(xiàn)指令??墒褂帽磉_(dá)“一個(gè)實(shí)施例”或“實(shí)施例”及其導(dǎo)出物描述一些實(shí)施例。這些術(shù)語(yǔ)意指結(jié)合被包括在至少一個(gè)實(shí)施例中的實(shí)施例描述的具體的特征、結(jié)構(gòu)或特性。在本說(shuō)明書(shū)中的各種地方的短語(yǔ)“在一個(gè)實(shí)施例”的出現(xiàn)不必全部指向同一實(shí)施例??墒褂帽磉_(dá)“耦連”和“連接”及其導(dǎo)出物描述一些實(shí)施例。這些術(shù)語(yǔ)不必意圖為彼此的同義詞。例如,使用術(shù)語(yǔ)“連接”和/或“耦連”描述一些實(shí)施例以指示彼此直接物理或電接觸的兩個(gè)或多個(gè)元件。然而,術(shù)語(yǔ)“耦連”還可意指兩個(gè)或多個(gè)元件不彼此直接接觸,但仍彼此協(xié)作或交互。需要強(qiáng)調(diào)的是,提供了本公開(kāi)的摘以符合37 C. F. R Section 1.72(b),其要求將允許讀者快速確定技術(shù)公開(kāi)的性質(zhì)的摘要。它被提交為具有以下理解它將不被用于解釋或限制權(quán)利要求的范圍或意義。此外,在前述具體實(shí)施方式
中,可看到,為了使得本公開(kāi)流暢的目的,在單個(gè)實(shí)施例中一起集合了各個(gè)特征。這種公開(kāi)的方法不應(yīng)被解釋為反映所要求的實(shí)施例需要比每個(gè)權(quán)利要求中明確引用的特征更多的特征的意圖。相反,如以下權(quán)利要求所反映的,本發(fā)明主題在于比單個(gè)所公開(kāi)的實(shí)施例的所有特征更少的特征。因此,以下權(quán)利要求在此被合并到具體實(shí)施方式
中,每個(gè)權(quán)利要求本身作為單獨(dú)的實(shí)施例。在所附權(quán)利要求中,術(shù)語(yǔ)“包括”和“其中”被分別用作相應(yīng)術(shù)語(yǔ)“包含”和“其中”的直接英語(yǔ)等價(jià)物。此外,術(shù)語(yǔ)“第一”、“第二”、“第三”等僅僅被用作標(biāo)記,而不意圖對(duì)它們的對(duì)象強(qiáng)加序號(hào)要求。 盡管已經(jīng)以特定于結(jié)構(gòu)特征和/或方法動(dòng)作的語(yǔ)言描述了本主題,但將理解,在所附權(quán)利要求中定義的主題不必限于上述特定特征或動(dòng)作。相反,上述特定特征和動(dòng)作被公開(kāi)為實(shí)現(xiàn)權(quán)利要求的示例形式。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括創(chuàng)建用于第一進(jìn)程中執(zhí)行的應(yīng)用程序的應(yīng)用對(duì)象,所述應(yīng)用對(duì)象具有應(yīng)用對(duì)象接口 ;啟動(dòng)創(chuàng)建用于第二進(jìn)程中執(zhí)行的系統(tǒng)程序的系統(tǒng)對(duì)象,所述系統(tǒng)對(duì)象具有系統(tǒng)對(duì)象句柄;映射所述應(yīng)用對(duì)象接口和所述系統(tǒng)對(duì)象句柄;創(chuàng)建用于存儲(chǔ)器映射文件的存儲(chǔ)器映射文件名;以及在所述存儲(chǔ)器映射文件中存儲(chǔ)具有所述映射信息的記錄。
2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括將所述存儲(chǔ)器映射文件名創(chuàng)建為能由所述應(yīng)用程序和所述系統(tǒng)程序兩者創(chuàng)建的唯一值。
3.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括使用所述系統(tǒng)對(duì)象句柄創(chuàng)建所述存儲(chǔ)器映射文件名。
4.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括使用被布置為接收所述系統(tǒng)對(duì)象句柄作為輸入并輸出所述存儲(chǔ)器映射文件名的應(yīng)用程序接口來(lái)創(chuàng)建所述存儲(chǔ)器映射文件名。
5.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括創(chuàng)建用于所述映射信息的標(biāo)頭。
6.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括創(chuàng)建用于所述映射信息的標(biāo)頭,所述標(biāo)頭包括簽名、所述映射信息的大小和服務(wù)標(biāo)識(shí)符。
7.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括在所述存儲(chǔ)器映射文件中存儲(chǔ)具有在所述映射信息之前的標(biāo)頭的記錄。
8.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括在所述存儲(chǔ)器映射文件中存儲(chǔ)具有映射信息的第二記錄。
9.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,在所述存儲(chǔ)器映射文件中存儲(chǔ)具有終結(jié)符的第三記錄。
10.一種包括存儲(chǔ)介質(zhì)的產(chǎn)品,所述存儲(chǔ)介質(zhì)包含指令,當(dāng)其被執(zhí)行時(shí)使得系統(tǒng)能實(shí)現(xiàn)如權(quán)利要求1-9中任一個(gè)所述的方法。
11.一種設(shè)備,包括處理器(102);以及與所述處理器通信性地耦連的存儲(chǔ)器(106),所述存儲(chǔ)器存儲(chǔ)具有對(duì)象關(guān)聯(lián)組件 (132)的進(jìn)程間通信組件(130),所述對(duì)象關(guān)聯(lián)組件在由處理器執(zhí)行時(shí),可操作來(lái)生成映射信息(202)、創(chuàng)建用于存儲(chǔ)器映射文件(134)的存儲(chǔ)器映射文件名(204),并在所述存儲(chǔ)器映射文件中存儲(chǔ)具有所述映射信息的記錄(302),所述映射信息表示用于第一進(jìn)程(104) 中執(zhí)行的應(yīng)用程序(110)的應(yīng)用對(duì)象(112)的應(yīng)用對(duì)象接口(114)和用于第二進(jìn)程(114) 中執(zhí)行的系統(tǒng)程序(120)的系統(tǒng)對(duì)象(122)的系統(tǒng)對(duì)象句柄(124)之間的映射。
12.如權(quán)利要求11所述的設(shè)備,包括對(duì)象發(fā)現(xiàn)組件(136),其可操作來(lái)接收服務(wù)請(qǐng)求 (210),確定系統(tǒng)對(duì)象句柄,使用所述系統(tǒng)對(duì)象句柄創(chuàng)建用于所述存儲(chǔ)器映射文件的存儲(chǔ)器映射文件名,并從所述存儲(chǔ)器映射文件取得具有映射信息的記錄。
13.如權(quán)利要求11所述的設(shè)備,包括對(duì)象發(fā)現(xiàn)組件,其可操作來(lái)使用來(lái)自映射信息的應(yīng)用接口標(biāo)識(shí)符(IID)在所述應(yīng)用對(duì)象和系統(tǒng)對(duì)象之間建立消息連接。
14.如權(quán)利要求11所述的設(shè)備,所述存儲(chǔ)器映射文件存儲(chǔ)具有用于映射信息的標(biāo)頭的記錄,所述標(biāo)頭包括簽名、映射信息的大小和服務(wù)標(biāo)識(shí)符。
15.如權(quán)利要求11所述的設(shè)備,所述存儲(chǔ)器映射文件在存儲(chǔ)器映射文件中存儲(chǔ)文件終結(jié)符(308),以指示所述存儲(chǔ)器映射文件的結(jié)束。
全文摘要
描述了用于發(fā)現(xiàn)對(duì)象接口的技術(shù)。對(duì)象關(guān)聯(lián)組件可操作來(lái)生成映射信息,其表示用于第一進(jìn)程中執(zhí)行的應(yīng)用程序的應(yīng)用對(duì)象的應(yīng)用對(duì)象接口和用于第二進(jìn)程中執(zhí)行的系統(tǒng)程序的系統(tǒng)對(duì)象的系統(tǒng)對(duì)象句柄之間的映射,創(chuàng)建用于存儲(chǔ)器映射文件的存儲(chǔ)器映射文件名,并在存儲(chǔ)器映射文件中存儲(chǔ)具有映射信息的記錄。描述并要求保護(hù)其他實(shí)施例。
文檔編號(hào)G06F9/44GK102541543SQ201110429179
公開(kāi)日2012年7月4日 申請(qǐng)日期2011年12月20日 優(yōu)先權(quán)日2010年12月20日
發(fā)明者C.古扎克, D.喬治夫, G.德貝克 申請(qǐng)人:微軟公司