專利名稱::用于與輔助計算設(shè)備的一致程序交互的接口的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及計算機系統(tǒng),尤其涉及一種用于在計算機系統(tǒng)與輔助設(shè)備之間傳達信息的改進的系統(tǒng)和方法。
背景技術(shù):
:序號為10/429,930和10/429,932的美國專利申請一般針對具有為主計算機系統(tǒng)提供某個輔助計算功能的輔助處理和輔助機制的計算機系統(tǒng)的概念。例如,即使當主計算機顯示器不容易看得見時(例如,當合上膝上型計算機的蓋子和/或主計算機被斷電時),膝上型計算機的蓋子或側(cè)邊上的小型LCD也可以為用戶提供有用信息(例如,會議地點和時間)??梢蕴峁┛丶?例如,諸如采取按鈕形式的一組用戶可選擇的響應(yīng)或支持的動作),以允許用戶與輔助設(shè)備交互,例如,選擇對通知的響應(yīng),查看不同類型的數(shù)據(jù),滾動通過日歷數(shù)據(jù)中的約會,閱讀電子郵件消息,閱讀指示,等等。有些類似于被置入移動主計算機的輔助LCD屏幕的有移動電話、音樂播放設(shè)備、袖珍型個人計算機、個人數(shù)字助理等等,當例如在物理上和/或經(jīng)由無線(例如,“藍牙”或紅外線)鏈路與其耦合時或者在與計算機耦合之后的任何時刻,如果設(shè)備持久保存來自計算機的數(shù)據(jù),并且只要設(shè)備被編程為允許主計算機利用其顯示器和/或其他功能,它們的每一個就可以用作主計算機系統(tǒng)的輔助設(shè)備。一般而言,實際上可以用任何方法與計算機系統(tǒng)接口的具有I/O能力的任何設(shè)備可以潛在地用作輔助計算設(shè)備。但是,盡管可能有可以用作計算機系統(tǒng)的輔助顯示器的眾多不同的設(shè)備,但當前沒有現(xiàn)存的平臺或API(應(yīng)用程序編程接口)供主計算機系統(tǒng)上的程序與輔助顯示器交互?,F(xiàn)存的系統(tǒng)要么被關(guān)閉,由此,ISV(獨立軟件銷售商)不能擴展平臺的功能;要么沒有被明確設(shè)計成用于與輔助顯示器的普通交互類型,因而用起來既不簡易、又不一致。需要一種供運行于主計算機系統(tǒng)上的程序簡單地、一致地與各種類型的輔助顯示器交互的方法,而不管各種設(shè)備實現(xiàn)之間的差異如何。應(yīng)用程序不應(yīng)該被要求處理每個設(shè)備的特定性能,但如果需要的話,應(yīng)該能夠詢問設(shè)備性能,以便在每個設(shè)備上顯示定制信息。
發(fā)明內(nèi)容簡言之,本發(fā)明提供一種系統(tǒng)和方法,包含包括接口集的輔助顯示平臺,它提供一種簡明、一致的方法供客戶機應(yīng)用程序(即在主計算機系統(tǒng)上運行的程序)與各種類型的輔助顯示器交互,而不管各種設(shè)備實現(xiàn)之間的差異如何,也無須處理每個設(shè)備的特定性能(除非需要)。該交互包括顯示從客戶機應(yīng)用程序發(fā)送的信息,包括將要被呈現(xiàn)在設(shè)備上的任何達成一致意見的格式的數(shù)據(jù)、通知或內(nèi)容;設(shè)備也可以將事件或數(shù)據(jù)發(fā)送到客戶機應(yīng)用程序。用戶可以配置在哪些設(shè)備上顯示哪些客戶機應(yīng)用程序的數(shù)據(jù)。該體系結(jié)構(gòu)經(jīng)由輔助顯示器API集向客戶機應(yīng)用程序展示輔助設(shè)備,該輔助顯示器API集在一個示例性實現(xiàn)中采取COM(組件對象模型)接口的形式。API集允許獨立于設(shè)備上的固件和連接協(xié)議而按普通的方式向客戶機應(yīng)用程序展示各種類型的設(shè)備。該API集指定提供各種功能,包括向系統(tǒng)注冊客戶機應(yīng)用程序,為一個或多個附加設(shè)備發(fā)送通知,以及從一個或多個附加設(shè)備接收事件或數(shù)據(jù)。事件可以包括導(dǎo)航事件、內(nèi)容請求事件、內(nèi)容更改事件等。一般而言,客戶機應(yīng)用程序?qū)?nèi)容和通知發(fā)送到輔助設(shè)備,在那里,輔助設(shè)備應(yīng)用程序高速緩存和/或呈現(xiàn)該內(nèi)容。根據(jù)XML模式來描述將鼓勵大多數(shù)設(shè)備和應(yīng)用程序支持的簡單內(nèi)容格式。該API集對于通過它發(fā)送的內(nèi)容而言是不可知的。所以,該API集也支持將自定義數(shù)據(jù)發(fā)送到消耗該數(shù)據(jù)的自定義端點,其中,端點指定通信目的地(例如,特定的輔助設(shè)備應(yīng)用程序)和關(guān)于該數(shù)據(jù)的合約(例如,格式)。輔助設(shè)備也能夠顯示客戶機應(yīng)用程序發(fā)送的通知(例如,在特殊區(qū)域內(nèi)或在其他內(nèi)容上面),并且能夠根據(jù)從主計算機系統(tǒng)提供的數(shù)據(jù)來生成其自己的通知。該API集還便于從輔助設(shè)備返回事件和數(shù)據(jù)。在一項實現(xiàn)中,用包括COM接口集的代碼(例如,非受管C++代碼)來實現(xiàn)客戶機API集。客戶機應(yīng)用程序在其進程中創(chuàng)建這些對象/接口中的一個或多個對象/接口的實例,然后使用那些對象來與輔助顯示平臺進行通信。注冊對象(例如,AuxiliaryDisplayRegistrar(輔助顯示器注冊))實現(xiàn)接口(例如,IAuxiliaryDisplayRegistrar),由此,客戶機應(yīng)用程序?qū)⒈旧碜詾楫斍斑\行。AuxiliaryDisplayRegistrar類維護與API接口使用的設(shè)備相對應(yīng)的接口指針的列表。AuxiliaryDisplayRegistrar類也接收指出“何時從該系統(tǒng)中添加或移除設(shè)備”的設(shè)備事件,并適當?shù)馗缕浔镜亓斜?,以及通知可能會受到變化影響的任何現(xiàn)存客戶機。AuxiliaryDisplayRegistrar類也負責(zé)執(zhí)行應(yīng)用程序和設(shè)備許可檢驗,以確定是否授權(quán)客戶機應(yīng)用程序使用該設(shè)備。通知管理器對象實現(xiàn)接口(例如,IAuxiliaryDisplayNotificationManager(輔助顯示器通知管理器接口)),由此,客戶機應(yīng)用程序可以請求和撤回附加設(shè)備上的通知。AuxiliaryDisplayRegistrar對象在客戶機應(yīng)用程序提出通知注冊請求(例如,經(jīng)由RegisterNotifications(注冊通知)方法)時例示通知管理器對象,并讓通知管理器對象了解(例如,向其提供指針)為通知啟用的每個設(shè)備,并將指向IAuxiliaryDisplayNotificationManager接口的指針返回給請求客戶機應(yīng)用程序。當應(yīng)用程序使用該接口來請求顯示通知時,通知管理器對象經(jīng)由回叫從客戶機應(yīng)用程序中拉出通知信息(例如,標題、消息、圖標/圖像數(shù)據(jù)和截止時間),并將通知發(fā)送到被授權(quán)供那個客戶機應(yīng)用程序使用的設(shè)備。對于內(nèi)容,響應(yīng)于來自客戶機應(yīng)用程序的Register(注冊)方法調(diào)用,AuxiliaryDisplayRegistrar類創(chuàng)建內(nèi)容管理器對象(例如,實現(xiàn)IAuxiliaryDisplayContentManager(輔助顯示器內(nèi)容管理器)接口的對象)。該內(nèi)容管理器對象利用在注冊期間傳遞的(客戶機應(yīng)用程序的)應(yīng)用程序ID和端點ID(數(shù)據(jù)應(yīng)該去的地方)來初始化,并為接口提供供客戶機應(yīng)用程序用來添加內(nèi)容、移除特殊內(nèi)容、或移除所有內(nèi)容的方法。該接口包括Add(添加)方法,它詢問客戶機應(yīng)用程序,以獲得關(guān)于適用于該調(diào)用的部分屬性的值;然后,根據(jù)結(jié)果,迭代通過設(shè)備,向客戶機應(yīng)用程序請求內(nèi)容,并將該內(nèi)容向下發(fā)送到設(shè)備。應(yīng)用程序可以指定將單個內(nèi)容發(fā)送到其所有被授權(quán)的設(shè)備;或者它們可以指定不同的內(nèi)容(例如,為設(shè)備的性能定制的內(nèi)容)可以個別地被發(fā)送到其不同的設(shè)備中的每個設(shè)備。移除調(diào)用試圖從每個設(shè)備中移除一個特定內(nèi)容。內(nèi)容由應(yīng)用程序范圍內(nèi)唯一的持久唯一標識符來標識。對于事件,另一個方法處理設(shè)立事件宿,從而允許客戶機應(yīng)用程序傳遞用于事件通知的接口指針。事件可以包括關(guān)于設(shè)備添加和移除或連接和斷開的事件通知(包括由應(yīng)用程序/設(shè)備授權(quán)中的變化生成的事件通知)、響應(yīng)于對于連接設(shè)備的屬性的查詢的事件、關(guān)于按鍵的通知事件、以及當輔助設(shè)備需要它當前不可用(在高速緩存中或其他地方)的一個內(nèi)容時所生成的內(nèi)容-請求事件。輔助設(shè)備上的應(yīng)用程序也能夠生成諸如設(shè)備導(dǎo)航事件、選擇事件和與上下文菜單動作有關(guān)的事件等事件。其他事件可以是占先的,例如,預(yù)期需要數(shù)據(jù)。事件的特定語義和內(nèi)容由端點(例如,設(shè)備應(yīng)用程序)來定義,但是,一般而言,事件標識它來自那里的設(shè)備、它來自那里的設(shè)備應(yīng)用程序/端點、以及伴隨它的數(shù)據(jù)。通過以下結(jié)合附圖的詳細說明,其他優(yōu)點將變得一目了然。在這些附圖中圖1是框圖,表示本發(fā)明可以被并入其中的常規(guī)個人計算機系統(tǒng)的形式的通用計算設(shè)備;圖2A-2E是通常表示各種設(shè)備上的輔助顯示器的布置位置的示例性圖示;圖3是根據(jù)本發(fā)明的一個方面的、通常表示示例分層體系結(jié)構(gòu)的框圖,通過該范例分層體系結(jié)構(gòu),客戶機應(yīng)用程序可以與任意輔助顯示設(shè)備的固件交換數(shù)據(jù);圖4是根據(jù)本發(fā)明的各個方面的、用于與輔助顯示設(shè)備進行通信的過程中的各種組件的示例表示;圖5是根據(jù)本發(fā)明的一個方面的、用于允許應(yīng)用程序與基本輔助顯示設(shè)備交換數(shù)據(jù)的基于安裝或基于執(zhí)行的機制的示例表示;圖6是根據(jù)本發(fā)明的一個方面的端點的示例表示,通過這些端點,輔助知曉客戶機應(yīng)用程序與各種輔助顯示設(shè)備應(yīng)用程序交換數(shù)據(jù);圖7是根據(jù)本發(fā)明的一個方面的、通常表示API集的對象的框圖,客戶機應(yīng)用程序調(diào)用該API集的對象來與輔助顯示設(shè)備的固件交換數(shù)據(jù);圖8是根據(jù)本發(fā)明的一個方面的順序圖,它通常表示客戶機應(yīng)用程序與API對象之間的注冊、調(diào)用和回叫,以便從應(yīng)用程序獲得內(nèi)容,用于傳達給一個或多個輔助顯示設(shè)備;以及圖9是根據(jù)本發(fā)明的一個方面的順序圖,它通常表示客戶機應(yīng)用程序與API對象之間的注冊、調(diào)用和回叫,以便從應(yīng)用程序獲得通知數(shù)據(jù),用于傳達給一個或多個輔助顯示設(shè)備。具體實施例方式示例性操作環(huán)境圖1是框圖,表示本發(fā)明可以被并入其中的個人計算機系統(tǒng)的形式的計算設(shè)備120。本領(lǐng)域的技術(shù)人員將會理解圖1中所描繪的個人計算機系統(tǒng)120意在僅僅起說明的作用,并且,本發(fā)明可以利用包括手持設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程的消費者電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機、大型計算機、無頭服務(wù)器等的其他計算機系統(tǒng)配置來加以實踐。也可以在分布式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程記憶存儲設(shè)備中。個人計算機系統(tǒng)120包括處理單元121、系統(tǒng)存儲器122和系統(tǒng)總線123,系統(tǒng)總線123將包括該系統(tǒng)存儲器的各種系統(tǒng)組件耦合到處理單元121。系統(tǒng)總線123可以是幾種類型的總線結(jié)構(gòu)中的任一種,包括存儲總線或存儲控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。系統(tǒng)存儲器包括只讀存儲器(ROM)124和隨機存取存儲器(RAM)125。基本輸入/輸出系統(tǒng)126(BIOS)被存儲在ROM124中,該基本輸入/輸出系統(tǒng)包含有助于在計算機120內(nèi)的各個元件之間傳送信息(例如,在啟動期間)的基本例程。個人計算機120可以進一步包括用于從硬盤(未示出)讀取并對其寫入的硬盤驅(qū)動器127、用于從可移動磁盤129讀取或?qū)ζ鋵懭氲拇疟P驅(qū)動器128、以及用于從可移動光盤131(例如,CD-ROM或其他光學(xué)介質(zhì))讀取或?qū)ζ鋵懭氲墓獗P驅(qū)動器130。硬盤驅(qū)動器127、磁盤驅(qū)動器128和光盤驅(qū)動器130分別由硬盤驅(qū)動器接口132、磁盤驅(qū)動器接口133和光盤驅(qū)動器接口134連接到系統(tǒng)總線123。這些驅(qū)動器及其關(guān)聯(lián)的計算機可讀介質(zhì)為計算機120提供計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的非易失性存儲。雖然這里所描述的示例性計算機系統(tǒng)使用硬盤、可移動磁盤129和可移動光盤131,但是,本領(lǐng)域的技術(shù)人員應(yīng)該理解也可以在示例性計算機系統(tǒng)中使用可以存儲可由計算機存取的數(shù)據(jù)的其他類型的計算機可讀介質(zhì),例如,盒式磁帶、閃存卡、數(shù)字視頻光盤、伯努里式磁帶匣、隨機存取存儲器(RAM)、只讀存儲器(ROM)等。許多程序模塊可以被存儲在硬盤、磁盤129、光盤131、ROM124或RAM125上,包括操作系統(tǒng)135(例如,WindowsXP)、一個或多個應(yīng)用程序136(例如,MicrosoftOutlook)、其他程序模塊137和程序數(shù)據(jù)138。用戶可以通過輸入設(shè)備(例如,鍵盤140和定點設(shè)備142)來將命令和信息輸入個人計算機120。其他輸入設(shè)備(未示出)可以包括話筒、操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、掃描儀等等。這些和其他的輸入設(shè)備經(jīng)常通過被耦合到系統(tǒng)總線的串行端口接口146而被連接到處理單元121,但也可由其他接口(例如,并行端口、游戲端口或通用串行總線(USB))來連接。監(jiān)視器147或其他類型的顯示設(shè)備也經(jīng)由接口(例如,視頻適配器148)而被連接到系統(tǒng)總線123。除監(jiān)視器147以外,個人計算機還通常包括諸如揚聲器和打印機等其他外圍輸出設(shè)備(未示出)。輔助顯示器200是額外的輸出設(shè)備,并且例如可以經(jīng)由輔助顯示器接口155而被連接到系統(tǒng)總線123。輔助顯示器101也可以通過串行接口或通過其他接口(例如,并行端口、游戲端口、紅外線或無線連接、通用串行總線(USB)或其他外圍設(shè)備連接)連接到計算設(shè)備120。圖1中的輸入設(shè)備201可以提供一個或多個致動器,以便與輔助顯示器200連接和/或控制輔助顯示器200,并且,例如可以是該輔助顯示設(shè)備的一部分,但作為選擇,可以獨立于它,并經(jīng)由輸入設(shè)備接口156(可以是串行接口)或通過其他接口(例如,并行端口、游戲端口、紅外線或無線連接、通用串行總線(USB)或其他外圍設(shè)備連接)而被連接到系統(tǒng)總線123。個人計算機120可以使用與一臺或多臺遠程計算機(例如,遠程計算機149)的邏輯連接而在網(wǎng)絡(luò)化環(huán)境中進行操作。遠程計算機149可以是另一臺個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他常見的網(wǎng)絡(luò)節(jié)點,它通常包括以上相對于個人計算機120而描述的許多或所有元件,盡管圖1中只展示了記憶存儲設(shè)備150。圖1中所描繪的邏輯連接包括局域網(wǎng)(LAN)151和廣域網(wǎng)(WAN)152。這類網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍的計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中很普遍。當被用于LAN網(wǎng)絡(luò)環(huán)境中時,個人計算機120通過網(wǎng)絡(luò)接口或適配器153而被連接到局域網(wǎng)151。當被用于WAN網(wǎng)絡(luò)環(huán)境中時,個人計算機120通常包括調(diào)制解調(diào)器154或用于通過廣域網(wǎng)152(例如,因特網(wǎng))建立通信的其他裝置。調(diào)制解調(diào)器154(可以是內(nèi)置的,也可以是外置的)經(jīng)由串行端口接口146而被連接到系統(tǒng)總線123。在網(wǎng)絡(luò)化環(huán)境中,相對于個人計算機120或其各個部分而描繪的程序模塊可以被存儲在遠程記憶存儲設(shè)備中。將會理解所示的這些網(wǎng)絡(luò)連接起示例性的作用,可以使用在計算機之間建立通信鏈路的其他手段。應(yīng)該注意,計算機系統(tǒng)不需要完全操作以供輔助設(shè)備根據(jù)本發(fā)明運作。的確,當計算機被斷電時,例如,當計算機系統(tǒng)處于睡眠狀態(tài)或休止模式時,和/或當用戶還沒有登錄或經(jīng)由安全機制被關(guān)在系統(tǒng)以外時,輔助設(shè)備至少在默認程度上或在用戶配置的程度上仍然可以運作。當主顯示器被關(guān)閉或不可操作(例如,被斷開)時,輔助設(shè)備可以對主顯示器進行補充,也可以用作代替顯示器,以便為用戶提供一些信息。例如,諸如如何為主顯示器加電的信息可能會有幫助,如同與移動計算機連接的輔助顯示設(shè)備上的會議房間號碼和/或指示一樣,當主顯示器關(guān)閉和/或不容易看得見(例如,膝上型計算機的蓋子被關(guān)閉)時,用戶可以查看該信息。輔助設(shè)備可以播放音頻和/或視頻,顯示圖像,顯示日歷信息,顯示電子郵件等等。為了在這些斷電模式中啟用和控制通信,固件可以存在,被存儲在非易失性存儲器中,只要某個電源可用,當被次級處理器裝載和操作時,固件啟用輔助顯示器以及要被使用的其他輔助組件。注意,如這里所使用的,術(shù)語“固件”和“設(shè)備硬件”本質(zhì)上是等效的,并且通??梢员徽J為表示輔助存儲器、其中的代碼和/或它在其上運行的次級處理器。圖2A-2E分別示出了計算設(shè)備上的或與計算設(shè)備相關(guān)聯(lián)的關(guān)于輔助顯示屏幕200a-200e的布置的示例性位置。如圖2A和2B中所示的,輔助顯示屏幕200a可以被放置在獨立(陸上通訊線或移動)電話202的前面、后面或其他表面上,(如果諸如經(jīng)由藍牙技術(shù)等別的方式連接,則它不需要在物理上耦合)和/或另一個輔助顯示屏幕200b可以被放置在移動計算機204或圖形輸入板計算設(shè)備(未示出)的邊緣或蓋子上。關(guān)于輔助顯示屏幕200c(圖2C)的另一個地方可以是在安裝于計算機上的電話上或在連在計算機上的外圍設(shè)備上(例如,在監(jiān)視器206上或在鍵盤(未示出)上)。圖2D和2E分別示出了與計算機連接的獨立控制臺208或某個其他的外殼210(例如,主板的外殼)的面板上的輔助顯示屏幕200d和200e的額外布置。本領(lǐng)域的技術(shù)人員將會理解輔助顯示屏幕可以被放置在任何計算設(shè)備或具有顯示性能的其他設(shè)備的任何表面上——例如,被放置在具有與計算機的無線或其他連接的手表上、被放置在遠程控制設(shè)備上、被放置在遠程壁裝式單元上等等。的確,輔助顯示器不需要在物理上接近主計算機系統(tǒng),因為連接可以在LAN或WAN上或甚至在因特網(wǎng)上。從圖2A-2E中應(yīng)該明白,輔助顯示器可以采取任何數(shù)量的已知類型的顯示器的形式(例如,一個或多個LED、2行字母數(shù)字顯示器、單色顯示器或彩色顯示器)。本領(lǐng)域的技術(shù)人員將會理解本發(fā)明也可以將其他計算或通信設(shè)備的顯示器用作輔助顯示器200。這些其他計算或通信設(shè)備包括通用計算機、手機、以及諸如尋呼機或個人數(shù)字助理(PDA)等手持設(shè)備。此外,本發(fā)明可以將在計算設(shè)備120的屏幕上的顯示區(qū)域內(nèi)實現(xiàn)的虛擬輔助顯示器(例如,圖形用戶界面的屏幕保護程序或組件)用作輔助顯示器200,包括在用戶登錄之前。輔助顯示器200可以包括上述任何形式的組合,也可以在物理上或在邏輯上與諸如一個或多個LED等指示器組合和/或結(jié)合虛擬輔助顯示器來使用。即使在沒有屏幕的條件下,或當其屏幕被斷電時,輔助設(shè)備也可以提供功能。例如,輔助設(shè)備可以播放音頻、收集數(shù)據(jù)(例如,供以后下載到主計算機)、執(zhí)行計算等等。顯示器也可以包括一個或多個LED或類似物,而不是全屏幕。這樣,雖然許多好處和優(yōu)點起因于具有輔助顯示屏幕,并且因而輔助設(shè)備在這里可以被稱作“輔助顯示器”,但是,不需要顯示器。一般而言,如這里提到的,輔助顯示器本質(zhì)上可以由能夠被感知的任何事物組成,包括任何視覺、聽覺和/或觸覺表示。用于與輔助設(shè)備的程序交互的接口本發(fā)明一般針對與輔助設(shè)備的通信,例如,提供內(nèi)容、通知和其他信息供顯示在輔助設(shè)備上,并可能從該設(shè)備獲得返回信息(例如,基于與輔助設(shè)備的用戶交互的事件)。如將會理解的,有許多類型的設(shè)備可以用作輔助顯示設(shè)備,包括不一定具有顯示器但可以提供諸如聲音或光的某個輸出的設(shè)備。雖然這里使用許多例子,包括膝上型計算機蓋子、移動電話、袖珍個人計算機、基于數(shù)字圖像的圖片幀、廚房顯示器、電視機、媒體播放器、包括鬧鐘、手表等的時鐘上的顯示器,但是,本發(fā)明不局限于這些例子的任一個,而是預(yù)期運用能夠輸出感覺信息的任何設(shè)備,即使是被稱作輔助“顯示器”。例如,其他類型的設(shè)備包括被嵌入或使用消費者電子設(shè)備(例如,電冰箱、家庭影劇院接收器、DVD播放器等)的主顯示器、壁掛式顯示器、汽車、運輸或其他車輛裝置(例如,將汽車/火車/飛機中的顯示器用作輔助顯示器)、主計算機系統(tǒng)的鍵盤或其他輸入設(shè)備、PDA(包括非移動電話PDA)等的輔助設(shè)備。同樣,本發(fā)明不局限于用于將輔助設(shè)備耦合到另一個計算機系統(tǒng)的任何特定機制,因而不局限于這里所使用的有線或無線例子。連接可以相對接近或相對遙遠,本質(zhì)上可以在任何地方,例如,在LAN或WAN上、或在因特網(wǎng)上的虛擬專用連接上。參考附圖中的圖3,示出一示例體系結(jié)構(gòu),它經(jīng)由輔助顯示器API集304向包括應(yīng)用程序302和其他程序(例如,操作系統(tǒng)組件)的客戶機展示輔助設(shè)備300和/或301。在以下描述的一個示例性實現(xiàn)中,API集304采取C++可存取COMAPI的形式。API304提供關(guān)于各種功能的API,包括向系統(tǒng)注冊客戶機應(yīng)用程序306(程序的組件或可能是程序本身),向附加設(shè)備發(fā)送內(nèi)容,向附加設(shè)備發(fā)送通知,以及從附加設(shè)備接收事件。事件可以包括導(dǎo)航事件、內(nèi)容請求事件、內(nèi)容更改事件等。與以下所描述的本發(fā)明的各個方面相一致,API集304的運用只向使用API集304的客戶機展示“輔助顯示系統(tǒng)”;對單獨的設(shè)備的其他(非API)訪問是可行的,但不是必要的。結(jié)果,對于獨立軟件銷售商,在將程序組件注冊為客戶機應(yīng)用程序(經(jīng)由API集304)之后,可以使用對同一API集304的另一個調(diào)用來將內(nèi)容發(fā)送到任何輔助設(shè)備,而不管該設(shè)備的實際類型和性能如何。雖然用戶體驗可能不同,但是,應(yīng)用程序不需要適應(yīng)存在的輔助設(shè)備。注意,應(yīng)用程序也可以獲得關(guān)于輔助設(shè)備的性能信息,并且可以根據(jù)性能來選擇采取不同的動作,但該應(yīng)用程序不需要為了使用該設(shè)備而這樣做。這是因為本發(fā)明提供處理進一步的通信的體系結(jié)構(gòu),從而從包括使數(shù)據(jù)適應(yīng)任何特定設(shè)備的復(fù)雜任務(wù)中釋放該應(yīng)用程序。API層304被寫在便攜式設(shè)備API集310上,便攜式設(shè)備API集310經(jīng)由用戶模式驅(qū)動程序框架312與該設(shè)備的驅(qū)動程序進程進行通信。便攜式設(shè)備API集310啟用與諸如MP3播放器、數(shù)碼照相機等便攜式設(shè)備的連接,并由輔助顯示器來利用。便攜式設(shè)備API集310將輔助顯示器映射到便攜式設(shè)備種類,并且它允許列舉該設(shè)備的性能。一般而言,客戶機應(yīng)用程序306將內(nèi)容和通知發(fā)送到輔助設(shè)備。該設(shè)備能夠顯示通知,并能夠根據(jù)從主計算機系統(tǒng)提供的數(shù)據(jù)來生成其自己的通知。該設(shè)備將信息以事件形式提供回給客戶機應(yīng)用程序306。注意,應(yīng)用層下面以及設(shè)備驅(qū)動程序324和325上面的組件通??梢员环Q作“輔助顯示平臺”。在圖4通常所示的一項實現(xiàn)中,平臺利用現(xiàn)存組件,包括便攜式設(shè)備API集310和“用戶模式驅(qū)動程序框架”(也被稱作UWDF的UMDF、或用戶模式Windows設(shè)備框架)、供用戶模式驅(qū)動程序在其中運行的沙箱環(huán)境,以提供與輔助顯示設(shè)備進行通信的統(tǒng)一方法。與本發(fā)明相一致,獨立于設(shè)備上的固件和連接協(xié)議,按普通方式展示各種類型的設(shè)備。返回到圖3中所示的框圖,多個設(shè)備可以同時被耦合到計算機,以用作輔助顯示器。用戶可以配置(例如,經(jīng)由控制面板或類似物)哪些客戶機應(yīng)用程序的數(shù)據(jù)被顯示在哪些設(shè)備上。系統(tǒng)數(shù)據(jù)供應(yīng)者308也可以將諸如時間數(shù)據(jù)、無線信號強度數(shù)據(jù)、計算機的音頻音量和無聲狀態(tài)、和/或電池電平數(shù)據(jù)等系統(tǒng)信息提供給輔助顯示器。在一項實現(xiàn)中,只要客戶機應(yīng)用程序306發(fā)送內(nèi)容,輔助顯示平臺都咨詢系統(tǒng)維護的矩陣,以確定哪個或哪些設(shè)備將要接收該信息。輔助顯示平臺的API304也將事件(和可能的其他信息)從輔助設(shè)備發(fā)送到客戶機應(yīng)用程序306,從而再次使用該矩陣來適當?shù)貙⑦@些事件發(fā)送回到這個(或這些)應(yīng)用程序。某些類型的輔助設(shè)備(例如,圖3中的顯示器301)被認為是“增強型”顯示器,因為它們利用某個SPOT(智能個人對象技術(shù))固件和某個呈現(xiàn)代碼來配置,并且尤其通常與可以經(jīng)由API304接收的任何信息相兼容。這里被稱作“基本”顯示器的其他輔助設(shè)備包括運行其他自定義固件、但能夠擔當輔助顯示器(例如,圖3中的基本遠程輔助(蜂窩式電話聽筒)顯示器300)的任何輔助顯示設(shè)備。用戶模式驅(qū)動程序框架提供用于將設(shè)備驅(qū)動程序(例如,324和325)耦合到輔助顯示平臺的設(shè)備驅(qū)動程序接口(DDI)。然后,這些驅(qū)動器將與API接收信息相對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)到適當?shù)挠布涌?傳輸),用于到輔助顯示設(shè)備的通信。例如,在圖3中,基本設(shè)備驅(qū)動程序324被示為(經(jīng)由先前定義的協(xié)議)將數(shù)據(jù)轉(zhuǎn)發(fā)到遠程堆棧和驅(qū)動程序327,用于到設(shè)備300的無線(例如,藍牙、Wi-FI、AM/FM紅外線等)通信,而增強型設(shè)備驅(qū)動器325被示為將數(shù)據(jù)轉(zhuǎn)發(fā)到基于USB的硬件328,盡管包括網(wǎng)絡(luò)傳輸(例如,基于TCP/IP的傳輸),但其他類型的傳輸是可行的。如可理解的,這些連接只是出于舉例目的而被示出,因為任何設(shè)備驅(qū)動程序?qū)⑦m當?shù)剞D(zhuǎn)發(fā)關(guān)于無線或有線通信的數(shù)據(jù)。本發(fā)明的一個方面針對允許對輔助顯示平臺的計劃性訪問的公用API集304??蛻魴CAPI集304支持對該平臺的訪問,并且如下所述,提供用于安裝和注冊、內(nèi)容管理(包括發(fā)送數(shù)據(jù))、通知管理、性能詢問、以及事件發(fā)生的機制??蛻魴C應(yīng)用程序發(fā)送到設(shè)備的內(nèi)容取決于向它注冊的端點。如上所述,大多數(shù)設(shè)備將會支持的一個類格式是簡單內(nèi)容格式,例如,基于描述布局原語的XML模式,該布局原語為ISV提供靈活性來開發(fā)跨越具有變化的顯示性能的多種不同的設(shè)備而運作的客戶機應(yīng)用程序。例如,簡單內(nèi)容格式可以支持包括圖像和文本的內(nèi)容頁、包括可以被選為動作的可滾動項目列表的菜單頁、包括用戶界面對話框和選項的對話、以及上下文菜單(例如,用戶可以通過其來調(diào)用上下文敏感動作)??蛻魴CAPI集304也支持發(fā)送自定義數(shù)據(jù)到消耗該數(shù)據(jù)的自定義端點,其中,端點指定通信目的地(例如,特定的輔助設(shè)備應(yīng)用程序)和關(guān)于該數(shù)據(jù)的合約(例如,格式)。API集304進一步便于返回來自輔助設(shè)備的事件和被發(fā)送到輔助設(shè)備的通知。根據(jù)本發(fā)明的一個方面,通過允許ISV以可以被呈現(xiàn)在任何輔助顯示器上的格式提供內(nèi)容,來提供用于擴展輔助顯示平臺的機制。為此目的,客戶機API304為輔助顯示平臺提供ISV用來擴展其應(yīng)用程序的框架。如下所述,一旦客戶機應(yīng)用程序向該平臺注冊,API集304就提供該機制,以便將內(nèi)容推入設(shè)備并響應(yīng)于來自設(shè)備的事件。參考圖5,在其最初安裝在主計算機系統(tǒng)上的期間,客戶機應(yīng)用程序306可以注冊本身。如圖5中標注為一(1)的箭頭所表示的,為此,當安裝應(yīng)用程序306時,安裝相關(guān)數(shù)據(jù)538被寫入注冊表540。對于輔助顯示功能,安裝包括在應(yīng)用程序的正規(guī)安裝過程期間,寫入指定的輔助顯示相關(guān)注冊表鍵集。應(yīng)用程序此刻指定包括其標題、圖標和被支持的端點的一些重要的值。例如,主注冊表鍵可以是[HKCUHKLM]\Software\Microsoft\Windows\AuxiliaryDisplay\Applications\<ApllicationID>,且參考采取唯一地識別特定客戶機應(yīng)用程序(并且也表示實現(xiàn)用于生存期管理的IauxiliaryDisplayApplication接口的COM對象的CLSID)的GUID的形式的應(yīng)用程序ID;友好名包括描述客戶機應(yīng)用程序的名稱的人可讀文本串;圖標表示客戶機應(yīng)用程序(例如,用于顯示在控制面板中和設(shè)備的外殼程序中),它最有可能被存儲為文件名和資源ID;并且,端點ID的優(yōu)先級列表包括這個客戶機應(yīng)用程序向其發(fā)送數(shù)據(jù)的設(shè)備應(yīng)用程序??梢詮娭茖嵤┳畲筇柎a,并且可以用數(shù)字標注端點(端點0、端點1),以便優(yōu)先級清楚明了。也要注意,策略(例如,來自系統(tǒng)管理員)可以駁回應(yīng)用程序根據(jù)輔助顯示器而請求的任何事物,例如,可以防止應(yīng)用程序使用設(shè)備。輔助顯示應(yīng)用程序的安裝過程使客戶機應(yīng)用程序在輔助顯示控制面板上可用,供用戶在設(shè)備上啟用。為此,當發(fā)生安裝時,可以向用戶示出通知;在圖5中,這由標注為二-A(2A)的箭頭來表示,在那里,與注冊表相關(guān)聯(lián)的代碼542(例如,注冊表編輯器代碼)經(jīng)由通知544向用戶界面546指出關(guān)于新近安裝的客戶機應(yīng)用程序的信息548可用。然后,用戶能夠調(diào)用控制面板窗550或類似物來允許用戶選擇一個或多個輔助設(shè)備連接到該客戶機應(yīng)用程序,即,在用戶的一個或多個輔助顯示設(shè)備中的任何一個輔助顯示設(shè)備上啟用該客戶機應(yīng)用程序306,圖5中通過標注為三(3)的箭頭表示了這一點。注意,通知544可以提供指令、鏈接或類似的信息來協(xié)助用戶選擇控制面板窗口中的正確圖標,以啟用用于輔助顯示的應(yīng)用程序。如上所述,為了便于選擇,可以提供復(fù)選框表格(許可表格)或類似物,以允許用戶選擇利用其啟用該新安裝的客戶機應(yīng)用程序306的一個或多個輔助設(shè)備。容易理解,用戶也能夠使用控制面板或類似的機制來啟用先前已被安裝、但未被啟用的應(yīng)用程序,禁用先前啟用的應(yīng)用程序,更改在其上啟用應(yīng)用程序的一個或多個設(shè)備等等。這樣,在圖5中,當客戶機應(yīng)用程序執(zhí)行時,它可能被啟用或可能不被啟用以用于一個或多個輔助設(shè)備,但如果不被啟用,則在被執(zhí)行時可能能夠這樣做。例如,在運行的應(yīng)用程序的注冊請求552期間,(以下參照圖7和圖8描述),如果還沒有被啟用,則注冊代碼554可以發(fā)送通知544。此時,用戶能夠決定是否為一個或多個輔助設(shè)備啟用應(yīng)用程序。用戶也可以決定在應(yīng)用程序正在運行的同時為一個或多個輔助設(shè)備啟用或禁用應(yīng)用程序;對客戶機應(yīng)用程序的這些更改將分別作為“設(shè)備添加”和“設(shè)備移除”事件而出現(xiàn)。注意,在所描述的實現(xiàn)中,用戶(或更高級策略)總是控制哪些應(yīng)用程序被允許向哪些設(shè)備發(fā)送內(nèi)容。雖然自動啟用是可行的,但是,從安全立場出發(fā),它是不合需要的,因此,在這個示例實現(xiàn)中,沒有計劃性方法可允許客戶機應(yīng)用程序在安裝過程期間利用輔助設(shè)備進行操作。一旦被啟用,客戶機應(yīng)用程序306就可以訪問平臺來向用戶授權(quán)的設(shè)備注冊,并且其后為這些經(jīng)授權(quán)的設(shè)備提供內(nèi)容。以下參照圖7-9來描述注冊和通信。與本發(fā)明的各個方面相一致,客戶機應(yīng)用程序不必處理設(shè)備的管理,因為這項工作由平臺來照料。相反,如下所述,客戶機應(yīng)用程序可以使用API集304(圖3)來發(fā)送內(nèi)容和通知。注意,客戶機應(yīng)用程序可以在支持高速緩存的設(shè)備上高速緩存數(shù)據(jù),例如允許離線訪問,由此,用戶能夠瀏覽已被應(yīng)用程序高速緩存在設(shè)備上的內(nèi)容。注意,在一項實現(xiàn)中,由于安全原因,應(yīng)用程序可以發(fā)送、但無法獲得被高速緩存在輔助設(shè)備上的內(nèi)容,并且,如下所述,相反只可以從輔助設(shè)備接收事件。但是,直截了當?shù)姆椒ㄊ翘峁┮环N系統(tǒng),其中,應(yīng)用程序可以讀取被高速緩存在輔助設(shè)備上的內(nèi)容。取代高速緩存(或除高速緩存以外),當用戶請求它時,應(yīng)用程序也可以按要求提供其內(nèi)容。在經(jīng)要求的情形中,當用戶經(jīng)由輔助顯示器與客戶機應(yīng)用程序交互時,平臺從應(yīng)用程序請求要顯示的內(nèi)容,經(jīng)由API集304接收它,并將內(nèi)容發(fā)送到設(shè)備。當主計算機系統(tǒng)在線時,平臺也可以為應(yīng)用程序提供事件,以便應(yīng)用程序知道用戶正在做什么,例如,應(yīng)用程序接收對應(yīng)于與輔助設(shè)備的用戶交互命令的事件。經(jīng)由API集和用于傳達內(nèi)容的簡單內(nèi)容格式,平臺移除了客戶機應(yīng)用程序具備關(guān)于通常在設(shè)備上呈現(xiàn)數(shù)據(jù)所需要的各種類型的設(shè)備、其固件、通信信道和驅(qū)動程序的特殊知識的需求。利用這個方法,該設(shè)計允許ISV避免處理設(shè)備管理和電信協(xié)議的細節(jié)。這樣,包括API集的平臺體系結(jié)構(gòu)允許ISV將內(nèi)容提供給被連接的輔助顯示設(shè)備,特別是支持簡單內(nèi)容格式的輔助顯示設(shè)備,這允許客戶機應(yīng)用程序提供能夠被呈現(xiàn)在任何服從設(shè)備上的數(shù)據(jù)。如下所述,這個格式指定基本文本和圖像布局、以及菜單和對話。倘若ISV選擇定制內(nèi)容(例如,根據(jù)顏色支持來提供不同的內(nèi)容),平臺也展示設(shè)備性能。而且,設(shè)備不只可以支持簡單內(nèi)容格式,并且,例如可以支持關(guān)于日歷(例如,vCalendar)的額外端點(被擴展的數(shù)據(jù)格式)、聯(lián)系人信息(例如,vCard)、或設(shè)備可以理解的任何其他格式。設(shè)備支持的數(shù)據(jù)格式只受設(shè)備限制;在主計算機系統(tǒng)上運行的客戶機應(yīng)用程序可以使用任何互相理解的數(shù)據(jù)格式來運用輔助顯示平臺與輔助顯示器進行通信。概括而言,輔助顯示器API集304(圖3)允許在主計算機系統(tǒng)上運行的經(jīng)授權(quán)的客戶機應(yīng)用程序發(fā)送內(nèi)容和通知,用于在輔助顯示設(shè)備上呈現(xiàn)數(shù)據(jù)。平臺提供設(shè)備連接和管理,并且,系統(tǒng)控制面板指定輔助顯示設(shè)置的用戶控制。API允許應(yīng)用程序向設(shè)備發(fā)送內(nèi)容和通知,并從設(shè)備接收事件。這個體系結(jié)構(gòu)允許不同等級的擴展性,包括平臺和API集使ISV應(yīng)用程序不必理解每個輔助顯示設(shè)備的特殊屬性。只有當被請求的時候,才展示設(shè)備性能。另外,輔助顯示平臺是連接不可知的,這體現(xiàn)在只要適當?shù)挠脩裟J捷o助顯示傳輸驅(qū)動程序存在,它與如何連接輔助顯示器的應(yīng)用程序不相關(guān),這本質(zhì)上可以經(jīng)由包括未來協(xié)議的任何連接和/或協(xié)議(例如,USB、藍牙、TCP/IP等)。如上所述,客戶機應(yīng)用程序使用所謂的端點來與設(shè)備進行通信。端點指定通信目的地(例如,日歷設(shè)備應(yīng)用程序)和關(guān)于在應(yīng)用程序與端點之間傳遞的數(shù)據(jù)的合約(例如,vCalendar格式)。在這個模型中,應(yīng)用程序指定它們可以與其進行通信的端點,而設(shè)備指定它們支持的端點。然后,由支持相同端點的設(shè)備與應(yīng)用程序之間的平臺建立通信。當與設(shè)備進行通信時,端點由主計算機系統(tǒng)所使用的唯一標識符(例如,GUID)來表示。設(shè)備上的每個設(shè)備應(yīng)用程序可以通告可從主計算機系統(tǒng)接受數(shù)據(jù)的一個或多個端點。端點被認為是跨越設(shè)備而一致的眾所周知的項目。端點指定被用來自和至主計算機系統(tǒng)傳達數(shù)據(jù)的數(shù)據(jù)格式;客戶機應(yīng)用程序負責(zé)適當?shù)貫樗c其通信的端點而格式化數(shù)據(jù),作為端點合約的一部分。端點的例子包括簡單內(nèi)容呈現(xiàn)器(數(shù)據(jù)格式是簡單內(nèi)容格式)、日歷呈現(xiàn)器(數(shù)據(jù)格式是iCal)和通知引擎。圖6示出了包括個人信息管理器(PIM)應(yīng)用程序670、媒體應(yīng)用應(yīng)用程序672和電話應(yīng)用應(yīng)用程序674的不同的示例客戶機應(yīng)用程序如何可以與包括增強型顯示器676和移動電話678的示例設(shè)備進行通信。應(yīng)用程序提供關(guān)于端點的數(shù)據(jù),并且,平臺使用該端點來確定將該數(shù)據(jù)傳達給哪個或哪些設(shè)備。這樣,在圖6的例子中,如經(jīng)由方框682和683所表示的,PIM應(yīng)用程序670指定日歷端點數(shù)據(jù)680,由增強型顯示器676作為該數(shù)據(jù)的副本681來消耗,增強型顯示器676也消耗來自媒體應(yīng)用程序672的普通端點數(shù)據(jù)。如經(jīng)由方框682、684和685所表示的,移動電話678消耗來自PIM應(yīng)用程序670和應(yīng)用程序672的普通數(shù)據(jù)。如經(jīng)由方框686和687所表示的,移動電話678也消耗電話端點數(shù)據(jù)。雖然在圖4的例子中未示出,但是,可以被支持的端點的其他例子包括電子郵件和聯(lián)系人數(shù)據(jù)。雖然對于本發(fā)明而言是不必要的,但是,可以為特殊內(nèi)容保留某些內(nèi)容標識符。例如,在每個客戶機應(yīng)用程序的內(nèi)容ID名字空間中保留最高級應(yīng)用程序“掃視(glance)”信息(作為內(nèi)容ID“0”元數(shù)據(jù)),以表示將要被顯示為關(guān)于那個應(yīng)用程序的最高級掃視信息的數(shù)據(jù)。掃視信息通常是簡明數(shù)據(jù),它被應(yīng)用程序認為非常重要,可用于顯示在設(shè)備的主菜單上(盡管用于單行顯示,這可能是被顯示的唯一內(nèi)容)。例如,對于電子郵件呈現(xiàn)器,最高級應(yīng)用程序掃視信息可能是“7個未讀的消息”;而對于日歷應(yīng)用程序,最高級應(yīng)用程序掃視信息可以描述下一次約會的時間和地點。API強制實施掃視信息格式化是可行的,例如,數(shù)據(jù)可能需要被提供為將要被接受的統(tǒng)一碼(Unicode)零終止字符串。在一項實現(xiàn)中,如圖7中通常所表示的,在包括COM接口集的非受管代碼中實現(xiàn)公用客戶機API集304??蛻魴C應(yīng)用程序在其過程中創(chuàng)建對象/接口中的一個或多個對象/接口的實例,然后使用那些對象與輔助顯示平臺進行通信。圖7表現(xiàn)了示出它們實現(xiàn)的主要類和接口的一般體系結(jié)構(gòu)圖;注意,每個COM對象也提供IUnknown(未知)接口,為清楚起見而從圖7中省略它。配置管理器760包括用于處理設(shè)備和應(yīng)用程序配置信息的共享內(nèi)部組件。CRegistrar(注冊者)類(對象)762實現(xiàn)IAuxiliaryDisplayRegistrar(輔助顯示器注冊者)接口、以及AuxiliaryDisplayRegistrarCoClass(聯(lián)合類)。CRegistrar類762保持與API實例使用的設(shè)備相對應(yīng)的IPortableDevice(便攜式設(shè)備)接口指針列表。這個列表在Register或RegisterNotifications(注冊通知)調(diào)用上被填充,并可以在任何時候被添加和移除。CRegistrar類762監(jiān)聽PnP設(shè)備事件764,以確定何時從該系統(tǒng)添加/移除設(shè)備,并且適當?shù)馗缕浔镜亓斜?,并通知受到該變化影響的任何現(xiàn)存的客戶機(CNotificationManager(通知管理器)或CContentManager(內(nèi)容管理器)對象)。CRegistrar類762也負責(zé)應(yīng)用程序和設(shè)備許可檢驗,以確定是否授權(quán)應(yīng)用程序使用設(shè)備,從而將共享的配置管理器庫用作進入該數(shù)據(jù)的接口。維護例示的對象(CNotificationManager或CContentManager)的列表;當對本身和CRegistrar的所有引用離開時(即,當API被卸載時),這些對象只是離開。CNotificationManager類/對象766實現(xiàn)IAuxiliaryDisplayNotificationManager(輔助顯示器通知管理器)接口。當創(chuàng)建CNotificationManager類766時,應(yīng)用程序標識符(ID)與實例相關(guān)聯(lián),并且,它沒有被更改。例示CNotificationManager對象766的CRegistrar對象762傳入與為通知而啟用的每個設(shè)備相對應(yīng)的一個IPortableDeviceContent(便攜式設(shè)備內(nèi)容)指針。在對象的整個生存期內(nèi),由來自CRegistrar對象762的類似的方法調(diào)用來實現(xiàn)對這個設(shè)備列表的隨后的更改。可能存儲有內(nèi)部元數(shù)據(jù),以便在顯示通知時跟蹤被提供回給調(diào)用應(yīng)用程序的cookies。CNotificationManager類/對象766負責(zé)采用IauxiliaryDisplayNotification(輔助顯示器通知)對象、提取數(shù)據(jù)、并使用便攜式設(shè)備API310的IPortableDeviceContent接口將它發(fā)送到每個設(shè)備。由于跨越各個設(shè)備而一致地對待通知,因此,可以為每個已知的設(shè)備重復(fù)相同的操作。Cnotification(通知)類768是數(shù)據(jù)容器。它實現(xiàn)IAuxiliaryDisplayNotification接口、以及AuxiliaryDisplayNotificationCoClass(所以,客戶機可以共同創(chuàng)建實例)。CContentManager類/對象770實現(xiàn)IAuxiliaryDisplayContentManager(輔助顯示器內(nèi)容管理器)接口。它由CRegistrar類762響應(yīng)于Register方法調(diào)用來創(chuàng)建。CContentManager類/對象770需要利用被傳遞到Register的應(yīng)用程序ID和端點ID來初始化,并且,這些一旦被設(shè)置,就不被更改。CRegistrar對象762負責(zé)咨詢配置表格,以確定為特定的應(yīng)用程序/端點對啟用哪些設(shè)備。然后,它向CContentManager傳遞關(guān)于每個匹配設(shè)備的IPortableDeviceContent接口指針。隨后的設(shè)備添加/移除將使用相同的機制來向CContentManager對象770傳達變化。此外,關(guān)于存儲在本地的每個設(shè)備接口,CContentManager對象770存儲對應(yīng)的CDeviceCapabilities(設(shè)備性能)對象772(或IAuxiliaryDisplayCapabilities(輔助顯示器性能)接口)。這是預(yù)期對這個對象的頻繁需求的優(yōu)化。在CContentManager對象770中提供方法,用于添加內(nèi)容、移除特殊內(nèi)容、或移除全部內(nèi)容。為此,Add(添加)方法調(diào)用詢問引入的IAuxiliaryDisplayContent接口,以獲得關(guān)于可應(yīng)用于該調(diào)用的部分屬性的值;然后,根據(jù)結(jié)果,迭代通過設(shè)備,向客戶機應(yīng)用程序請求內(nèi)容,并將內(nèi)容向下發(fā)送到設(shè)備。Remove(移除)調(diào)用試圖從每個設(shè)備中移除一個特定內(nèi)容。另一個方法處理設(shè)立事件宿;由客戶機應(yīng)用程序傳入的IAuxiliaryDisplayEvents(輔助顯示器事件)接口指針被存儲,并被用于通知關(guān)于各種事件的應(yīng)用程序。響應(yīng)于從CRegistrar對象762進入的事件,來觸發(fā)設(shè)備事件。CContentManager類770可以實現(xiàn)IPortableDeviceEventCallback(便攜式設(shè)備事件回叫)接口,并且,CRegistrar對象762可以為事件注冊;然后,CContentManager762負責(zé)適當?shù)胤治龊臀赡切┦录DeviceCapabilities類772實現(xiàn)IAuxiliaryDisplayCapabilities接口。這些由CContentManager對象770創(chuàng)建,以便與它在其上顯示內(nèi)容的每個設(shè)備相符。在內(nèi)部,它引用IPortableDeviceProperties(便攜式設(shè)備屬性)接口,所以,它能夠直接從設(shè)備詢問設(shè)備屬性。設(shè)備性能可以包括設(shè)備是否具有高速緩存、屏幕類型(例如,位圖、文本或單行顯示)、屏幕寬度、屏幕高度、顏色深度、顏色類型(例如,彩色、灰度級、黑白)等。圖8描述了應(yīng)用程序306如何與CRegistrar和CContentManager對象(分別是圖7中的762和770)一起運作以便將內(nèi)容加入設(shè)備。一般而言,當想要使用輔助顯示器的客戶機應(yīng)用程序304在主計算機系統(tǒng)上啟動時,(或在某個其他適當?shù)臅r間),應(yīng)用程序經(jīng)由對CRegistrar對象762的注冊請求來向輔助顯示平臺注冊。成功的注冊將內(nèi)容管理接口的實例(例如,作為指針)返回到應(yīng)用程序。通常在圖8中經(jīng)由標注為一(1)和二(2)的箭頭來表示這一點。為了將內(nèi)容加入設(shè)備,應(yīng)用程序304實現(xiàn)的平臺可以用來獲取關(guān)于內(nèi)容和內(nèi)容主體的元數(shù)據(jù)的接口。這是拉出模型,在那里,平臺從應(yīng)用程序中拉出數(shù)據(jù)。如圖8中通常經(jīng)由標注為三(3)的箭頭所表示的,為了添加內(nèi)容,應(yīng)用程序通過調(diào)用CContentManager對象770上的方法、將指針傳遞到封裝內(nèi)容的對象,來起動該程序。然后,CContentManager對象770回叫入該封裝對象,以便檢索內(nèi)容并將它發(fā)送到被連接的設(shè)備。一些設(shè)備可以高速緩存數(shù)據(jù),而其他設(shè)備可能不會高速緩存數(shù)據(jù)(例如,由于沒有高速緩存、存儲器條件低等);這樣,應(yīng)用程序可以經(jīng)由事件來被通知,以再發(fā)送數(shù)據(jù)。每個內(nèi)容具有唯一的ID(在應(yīng)用程序的范圍內(nèi)),并且,設(shè)備和平臺通過這個ID來參考這個內(nèi)容。通常在圖8中經(jīng)由標注為四(4)和五(5)的箭頭來表示這些操作。當應(yīng)用程序添加數(shù)據(jù)時,應(yīng)用程序可能正將該數(shù)據(jù)發(fā)送到多個設(shè)備。由于不同的設(shè)備具有不同的特征,因此,在一些情況中,應(yīng)用程序可以決定專門研究每一設(shè)備的內(nèi)容。如通常在圖8中經(jīng)由標注為六(6)和七(7)的箭頭所表示的,這在內(nèi)容元數(shù)據(jù)中指定。如果應(yīng)用程序指定它有興趣被所有設(shè)備的平臺為內(nèi)容而調(diào)用一次,那么,該應(yīng)用程序例如經(jīng)由真/假數(shù)據(jù),即經(jīng)由“假”響應(yīng),指定不想要每一設(shè)備調(diào)用。當指定關(guān)于全部的內(nèi)容(假)時,標注為八-A(8A)和九-A(9A)的箭頭示出這些操作。作為選擇,當應(yīng)用程序想要個別地為每個設(shè)備而被回叫(“真”響應(yīng))以便根據(jù)設(shè)備特征來提供內(nèi)容時,標注為八-B(8B)和九-B(9B)的箭頭示出這些操作。當發(fā)生這種情況時,為每個設(shè)備重復(fù)請求和獲得內(nèi)容過程(例如,標注為十(10)和十一(11)的箭頭),為每個設(shè)備授權(quán)應(yīng)用程序來發(fā)送內(nèi)容。如圖4中所表示的,可以提供生存期管理器434,來監(jiān)聽客戶機應(yīng)用程序和設(shè)備的激活狀態(tài)中的變化,并通知客戶機應(yīng)用程序。通過在不同的過程中共同創(chuàng)建注冊類,然后利用適當?shù)膮?shù)來調(diào)用Startup(啟動)方法,可以起動客戶機應(yīng)用程序。應(yīng)用程序可以實現(xiàn)API集,該API集提供關(guān)于輔助顯示應(yīng)用程序的生存期相關(guān)功能。平臺的組件負責(zé)根據(jù)被連接的設(shè)備集來開始和停止應(yīng)用程序。作為選擇,應(yīng)用程序可以管理其自己的生存期;當設(shè)備被連接或斷開時,應(yīng)用程序獲得通知,并且,當它沒有設(shè)備要向其提供內(nèi)容時,應(yīng)用程序經(jīng)常可能正在運行。如圖4中所表示的,由生存期管理器434來起動客戶機過程(除非已在運行)。客戶機過程負責(zé)與管理客戶機應(yīng)用程序及其在設(shè)備上的內(nèi)容相關(guān)聯(lián)的邏輯,并且是主計算機系統(tǒng)對運行于輔助顯示設(shè)備上的設(shè)備應(yīng)用程序的相對物。如上所述,客戶機代碼306通過向平臺注冊來啟動與輔助顯示平臺的通信。這個調(diào)用將輔助顯示客戶機API以及便攜式設(shè)備API裝載入客戶機進程的地址空間。便攜式設(shè)備API跨越進程邊界處理與連接到輔助顯示設(shè)備的驅(qū)動程序的通信。驅(qū)動程序進程由用戶模式驅(qū)動程序框架進程創(chuàng)建。驅(qū)動程序展示與便攜式設(shè)備API進行通信的設(shè)備驅(qū)動程序接口。客戶機API將不會直接與這些進程交互。當安裝客戶機應(yīng)用程序時,它指定作為GUID的應(yīng)用程序Id。這個應(yīng)用程序Id應(yīng)該是實現(xiàn)IAuxiliaryDisplayApplication(輔助顯示器應(yīng)用程序)接口的COM組件的CLSID。生存期管理器434使用應(yīng)用程序Id來共同創(chuàng)建客戶機應(yīng)用程序的進程外(out-of-proc)COM服務(wù)器實例。它調(diào)用IAuxiliaryDisplayApplication接口上的方法,從而指出客戶機應(yīng)用程序何時具有至少1個設(shè)備來對話(啟動)、以及何時沒有設(shè)備來對話(關(guān)閉)。另外,為了在面對應(yīng)用程序崩潰時具有健壯性,可以使用“心跳”方法來檢驗應(yīng)用程序是否仍然在運行。注意,應(yīng)該由ISV在其自己的進程中共同創(chuàng)建IAuxiliaryDisplayRegistrar的實例,以便與API集304進行通信。這個途徑允許應(yīng)用程序彼此隔離,同時,保留在應(yīng)用程序的進程中運行API的好處。應(yīng)用程序可以支持多個內(nèi)容格式,但是,客戶機API(IAuxiliaryDisplayContentManager)的每個實例只支持單一內(nèi)容格式。如上所述,當安裝應(yīng)用程序時,它提供它支持的端點優(yōu)先級排序列表。在內(nèi)部,在設(shè)備展示端點與應(yīng)用程序較佳端點之間進行映射,以獲得關(guān)于設(shè)備的內(nèi)容格式的最佳匹配?;旧希ㄟ^向下觀察該列表直到發(fā)現(xiàn)匹配,在可用時選擇最高優(yōu)先級內(nèi)容格式。如果應(yīng)用程序與設(shè)備之間有任何共同的端點,則控制面板示出復(fù)選框。但是,客戶機API確定在運行時使用的實際端點,因為該列表可以改變??蛻魴C應(yīng)用程序為它支持的每個端點調(diào)用IAuxiliaryDisplayRegistrar∷Register一次;應(yīng)用程序為每個內(nèi)容格式獲得一個IAuxiliaryDisplayContentManager接口。在一項當前的實現(xiàn)中,每個設(shè)備只從這些接口中的至多一個接口接收內(nèi)容。這樣,應(yīng)用程序可以具有一個中央數(shù)據(jù)源,從而與多個API接口對話,這多個API接口與多個設(shè)備對話,其中的每個設(shè)備支持不同的內(nèi)容格式。這個途徑保持API內(nèi)的隔離,這使它用起來易懂、簡單,同時,允許ISV按直觀方式支持多個內(nèi)容格式。在控制面板中,每個應(yīng)用程序可以作為單行出現(xiàn),而不管它支持多少內(nèi)容格式。轉(zhuǎn)向可以被應(yīng)用程序發(fā)送到輔助設(shè)備的通知的解釋,平臺支持輔助顯示器上的通知(或警報)的顯示。例如,可以發(fā)送關(guān)于諸如會議提示、電子郵件警報、密友登錄、系統(tǒng)警報等重要事件的通知,用于顯示在輔助設(shè)備上。在一項實現(xiàn)中,通知通常實時地出現(xiàn)在任何現(xiàn)存的設(shè)備應(yīng)用程序之上,并為用戶提供解散它們的方法(在自動期滿之前)。被發(fā)送到輔助顯示平臺的通知可以包含標題、消息主體和圖標,并與截止時間相關(guān)聯(lián)。該截止時間(例如,絕對或相對時間)為設(shè)備提供以下指導(dǎo)如果用戶還沒有與它交互,則它何時可以移除通知。從應(yīng)用程序306的觀點出發(fā),而不管設(shè)備性能如何,通知通??梢允褂猛煌ㄖ狝PI。這樣,諸如圖像、圖標、控件(例如,按鈕)、菜單等標題、文本和可任選信息可以被指定為參數(shù)。不能制圖的設(shè)備將具有被剝奪除文本以外的任何東西的信息,甚至文本也可以被修改成適合特定設(shè)備顯示,例如通過隨時間的推移而交替行。注意,內(nèi)容通??梢员幌螺d到增強型設(shè)備上的高速緩存,或經(jīng)要求而被下載,并且,設(shè)備本身隨后將按需要處理該內(nèi)容。這允許在該系統(tǒng)上運行能夠提供內(nèi)容的多個客戶機應(yīng)用程序,一個設(shè)備應(yīng)用程序在某時運行于輔助顯示器上。通知將故意利用當前運行的設(shè)備應(yīng)用程序。通知可以被安排用于按任何合適的排序呈現(xiàn)(例如,按FIFO(先進先出)方式),雖然可以容易地理解這一點,但是,在各種類型的通知之中可能有不同的優(yōu)先級(例如,與常見的或老的通知相比,可以給緊急的、新近的或做標記的通知更高的優(yōu)先級)。圖9描述了客戶機應(yīng)用程序306如何與CRegistrar對象762和CNotificationManager對象766一起運作以便將通知發(fā)送到一個或多個設(shè)備。一般而言,當應(yīng)用程序304想要發(fā)送通知給輔助顯示器時,該應(yīng)用程序經(jīng)由對CRegistrar對象762的RegisterNotifications請求來注冊通知。成功的注冊將CNotificationManager對象766的實例(例如,作為指針)返回到應(yīng)用程序。通常在圖9中經(jīng)由標注為一(1)和二(2)的箭頭來表示這一點。如通常在圖8中經(jīng)由標注為三(3)的箭頭所表示的,應(yīng)用程序306通過調(diào)用CNotificationManager對象766上的方法來啟動該程序。如通常在圖9中經(jīng)由標注為四(4)和五(5)的箭頭所表示的,CNotificationManager對象766隨后回叫到應(yīng)用程序304(或如在圖7中由應(yīng)用程序指定的CNotification對象768),以獲得關(guān)于通知的標識符。如通常在圖9中經(jīng)由標注為六(6)至十一(11)的箭頭所表示的,然后作出關(guān)于標題、消息(文本)、圖標/圖像和截止時間的隨后的回叫。如通常在圖9中經(jīng)由標注為十二(12)的箭頭所表示的,利用該信息,CNotificationManager對象766將通知發(fā)送到一個或多個被連接的設(shè)備。在一項當前的實現(xiàn)中,授權(quán)應(yīng)用程序與其通信的每個設(shè)備接收通知,但是,具有一種選擇性機制是可行的,在該機制中,客戶機應(yīng)用程序可以有選擇地指定只有其經(jīng)授權(quán)的設(shè)備中的某些設(shè)備可接收通知。具有這樣一種機制也是可行的,在該機制中,以不同方式格式化的通知信息被發(fā)送到不同類型的設(shè)備(類似于通常參照圖8描述的每一設(shè)備內(nèi)容區(qū)別機制)。除發(fā)送通知以外,應(yīng)用程序同樣可以請求撤回通知或撤回其所有通知。例如,用戶可以解散主計算機系統(tǒng)上的通知,并且,應(yīng)用程序可以決定應(yīng)該從一個或多個輔助設(shè)備那里撤回通知。對于事件,應(yīng)用程序可以指定用于從平臺接收各種類型的事件的接口。根據(jù)控制面板配置表格或類似物,平臺將與設(shè)備有關(guān)的事件發(fā)送到被適當授權(quán)的應(yīng)用程序。事件可以包括關(guān)于設(shè)備添加和移除或連接和斷開的事件通知(包括無線越界、設(shè)備崩潰)、以及響應(yīng)于關(guān)于被連接設(shè)備的屬性(例如,屏幕大小、顏色深淺度、數(shù)據(jù)高速緩存的存在等)的詢問的事件。事件發(fā)生機制也指定關(guān)于按鍵的通知事件,并擴展到自定義端點。當輔助設(shè)備需要它不容易獲得的一個內(nèi)容時,也生成內(nèi)容-請求事件。輔助設(shè)備上的應(yīng)用程序也能夠生成諸如設(shè)備導(dǎo)航事件(例如,內(nèi)容丟失、需要刷新等等)、選擇事件(用戶在對話中按壓按鈕、選擇顯示圖標、解散通知等等)、以及上下文菜單動作等事件。其他事件可能是占先的,例如,播放音頻應(yīng)用程序的音軌七的設(shè)備可以預(yù)期需要音軌八的數(shù)據(jù),并預(yù)先發(fā)送關(guān)于該數(shù)據(jù)的請求。輔助設(shè)備應(yīng)用程序生成的事件傳播回到在主計算機系統(tǒng)上運行的客戶機應(yīng)用程序(當在線時)。事件的語義和內(nèi)容由端點來定義。一般而言,事件標識它來自那里的設(shè)備、它來自那里的設(shè)備應(yīng)用程序/端點、以及伴隨事件的數(shù)據(jù)。例如(使用簡單內(nèi)容格式端點),當用戶從一個內(nèi)容行進到另一個內(nèi)容時,導(dǎo)航事件被發(fā)送回到主計算機系統(tǒng),以報告用戶做了什么。應(yīng)用程序可以選擇按合適的方式響應(yīng)于這個事件。接口和概述以下陳述在整個API集內(nèi)使用的公用類型的定義以下包含關(guān)于輔助顯示平臺的接口定義文件的一個例子(這些接口在以上描述,并通常在以下概括)IAuxiliaryDisplayApplication接口被生存期管理器用來創(chuàng)建客戶機應(yīng)用程序并與其交互。如果它們希望使用生存期管理,則ISV負責(zé)在其客戶機應(yīng)用程序中實現(xiàn)這個接口。調(diào)用HRESULTStartup(REFAPPLICATION_ID_in_applicationId)方法,來用信號通知客戶機應(yīng)用程序應(yīng)該開始與設(shè)備進行通信。它指定有一個或多個設(shè)備是給定的應(yīng)用程序能夠向其發(fā)送數(shù)據(jù)的。第一個參數(shù)是將要被起動的應(yīng)用程序的應(yīng)用程序ID,并且被包括在同一COM對象處理關(guān)于多個應(yīng)用程序的數(shù)據(jù)的情況中。調(diào)用HRESULTShutdown(REFAPPLICATION_ID_in_applicationId)方法,來用信號通知客戶機應(yīng)用程序應(yīng)該停止與設(shè)備通信。在Shutdown(關(guān)閉)調(diào)用之后,生存期管理器釋放對客戶機應(yīng)用程序的引用,并且(合乎理想的是)應(yīng)用程序停歇。HRESULTKeepAlive(REFAPPLICATION_ID_in_applicationId)方法被用作“心跳”。生存期管理器偶爾將會調(diào)用它,并期望接收S_OK響應(yīng)。如果調(diào)用(例如,遠程過程調(diào)用或RPC)超時,或者調(diào)用由于某個其他的原因而失敗,那么,將重新起動應(yīng)用程序。如上所述,IAuxiliaryDisplayRegistrar接口被ISV的客戶機應(yīng)用程序用來啟動與輔助顯示子系統(tǒng)的“會話”。ISV的應(yīng)用程序共同創(chuàng)建這個類的實例,并且調(diào)用Register方法來獲得它隨后可以用來為設(shè)備提供內(nèi)容的IAuxiliaryDisplayContentManager接口。被返回的接口在客戶機應(yīng)用程序的生存期內(nèi)有效。設(shè)備可以在后臺來來去去,由平臺執(zhí)行管理。如上所述,是API內(nèi)部構(gòu)件確定是否授權(quán)應(yīng)用程序與設(shè)備對話;如果沒有授權(quán)應(yīng)用程序與設(shè)備對話,那么,在一項實現(xiàn)中,接口仍然被返回,但是,它將不會向任何設(shè)備發(fā)送數(shù)據(jù)(并且,GetDevices返回0)。HRESULTRegister(REFAPPLICATION_ID_in_applicationId,REFENDPOINT_IDin_endpointId,IAuxiliaryDisplayContentManager**out_pContent)方法向輔助顯示子系統(tǒng)注冊ISV的應(yīng)用程序,并允許客戶機應(yīng)用程序向設(shè)備發(fā)送內(nèi)容。第一個參數(shù)是應(yīng)用程序ID,它唯一地標識例如由GUID表示的應(yīng)用程序。第二個參數(shù)是GUID,表示應(yīng)用程序希望與其通信的設(shè)備上的端點。提供這個,以便ISV的應(yīng)用程序可以支持多個端點(內(nèi)容格式),因為每個端點對應(yīng)于單一類型的內(nèi)容。注意,ISV的應(yīng)用程序為它希望發(fā)送的每個內(nèi)容格式使用不同的IAuxiliaryDisplayContentManager接口。第三個參數(shù)是輸出參數(shù),包含ISV應(yīng)用程序用來發(fā)送內(nèi)容的接口。HRESULTRegisterNotifications(REFAPPLICATION_ID_in_applicationId,IAuxiliaryDisplayNotificationManager**out_pNotification)方法允許ISV應(yīng)用程序?qū)⒈旧碜詾閷⑼ㄖ峁┙o輔助顯示器的應(yīng)用程序。ISV應(yīng)用程序提供其應(yīng)用程序ID,并取回對CNotificationManager對象766的IAuxiliaryDisplayNotificationManager接口的指針,它隨后被用來管理子系統(tǒng)中的通知。IAuxiliaryDisplayNotificationManager接口允許ISV應(yīng)用程序在輔助顯示器上顯示和隱藏通知。HRESULTShow(IAuxiliaryDisplayNotification*in_pNotification)方法使通知被顯示在支持通知的被連接的經(jīng)授權(quán)的輔助設(shè)備上。該參數(shù)是實現(xiàn)IAuxiliaryDisplayNotification接口的類的實例。該接口本質(zhì)上包含示出通知所必要的有關(guān)的部分。HRESULTRevoke(constNOTIFICATION_IDin_notificationId)方法允許ISV應(yīng)用程序取消所有適當?shù)脑O(shè)備上的單一通知。如上所述,該參數(shù)包括從調(diào)用被返回到Show(顯示)的cookie。如果通知當前正被顯示或正在待決(要么是被延遲的通知,要么被另一個通知阻止),那么,只移除它。HRESULTRevokeAll()方法允許ISV移除所有未決通知。IAuxiliaryDisplayNotification接口提供用于存儲和檢索通知的關(guān)鍵部分的方法。[propget]HRESULTNotificationId(PNOTIFICATION_IDin_pnotificationId)和[propput]HRESULTNotificationId(NOTIFICATION_IDin_notificationId)方法允許API/ISV設(shè)置/檢索通知ID。默認值是0。該值唯一地標識應(yīng)用程序內(nèi)的通知。[propget]HRESULTTitle(LPWSTR*out_ppwszTitle)和[propput]HRESULTTitle(LPWSTRin_pwszTitle)方法允許API/ISV設(shè)置/檢索通知的當前標題。可能有默認值(例如,“Notifcation”)。[propget]HRESULTMessage(LPWSTR*out_ppwszMessage)和[propput]HRESULTMessage(LPWSTRin_pwszMessage)方法允許API/ISV設(shè)置/檢索通知的當前消息主體。這是向用戶顯示的消息的大部分。[propget]HRESULTImage(HICON*out_phIcon)和[propput]HRESULTImage(HICONin_hIcon)方法允許API/ISV設(shè)置/檢索被顯示為通知的一部分的圖像。該圖像將根據(jù)設(shè)備比例縮放到合適,并可以用標準格式來提供。[propget]HRESULTExpirationTime(PSYSTEMTIMEout_pExpirationTime)和[propput]HRESULTExpirationTime(PSYSTEMTIMEin_pExpirationTime)方法允許API/ISV設(shè)置/檢索通知應(yīng)該到期的時間。默認值是“0”,從而指出通知將永遠不會到期(并且,用戶需要解散它)。在一項實現(xiàn)中,時間被指定為絕對時間;不管通知是否已被顯示,它都將在截止時間自毀。應(yīng)該由設(shè)備或驅(qū)動程序上的固件來適當?shù)貎冬F(xiàn)截止時間。IAuxiliaryDisplayContentManager接口是允許ISV將內(nèi)容發(fā)送到輔助顯示器的接口。這個接口是普通的,并接受被指定用于任何端點的任何類型的內(nèi)容,但是,這個接口的每個特定實例只接受關(guān)于單一端點(和因而單一類型)的內(nèi)容。HRESULTAdd(IAuxiliaryDisplayContent*in_pContent)方法允許ISV將內(nèi)容加入它正在其上被顯示的設(shè)備的高速緩存。第一個參數(shù)是指向從其中拉出內(nèi)容的ISV所實現(xiàn)的接口的指針。HRESULTRemove(constCONTENT_IDin_contentId)方法允許ISV從任何設(shè)備中移除一個特定內(nèi)容。該參數(shù)是將要被移除的內(nèi)容的內(nèi)容ID。如果該項目存在于任何當前被連接的設(shè)備的高速緩存中,則將移除它。不保證它在任何設(shè)備的高速緩存中,也不保證它用于當前被斷開的設(shè)備。HRESULTRemoveAll()方法允許ISV從所有設(shè)備上的高速緩存中移除與ISV的應(yīng)用程序相關(guān)聯(lián)的全部內(nèi)容。HRESULTSetEventSink(IAuxiliaryDisplayEvents*in_pEvents)方法允許ISV應(yīng)用程序指定要使用的回叫接口從設(shè)備接收事件。該參數(shù)包含指向?qū)崿F(xiàn)IAuxiliaryDisplayEvents接口的類的實例的指針。如果這個值是“零”或無效,則不執(zhí)行對ISV應(yīng)用程序的回叫。HRESULTGetDevices(DWORD*out_pdwNumDevices,IAuxiliaryDisplayCapabilities**out_ppDevices)方法允許ISV應(yīng)用程序列舉已為那個應(yīng)用程序授權(quán)的當前被連接的設(shè)備。這個方法將指針叔祖返回到IAuxiliaryDisplayCapabilities對象,這些IAuxiliaryDisplayCapabilities對象提供關(guān)于每個經(jīng)授權(quán)的設(shè)備的性能的一些信息。DWORD參數(shù)包含被返回的設(shè)備數(shù)量。應(yīng)用程序可以使用這個方法來確定應(yīng)用程序需要多少設(shè)備和什么類型的設(shè)備來生成內(nèi)容;如果應(yīng)用程序關(guān)心根據(jù)性能來區(qū)別其內(nèi)容,那么,這個方法允許應(yīng)用程序確定那一點并預(yù)先生成適當?shù)膬?nèi)容。作為選擇,這個方法返回計數(shù)器對設(shè)備性能的實現(xiàn)是可行的。IAuxiliaryDisplayContent接口由ISV應(yīng)用程序?qū)崿F(xiàn),并被API用來回叫和從應(yīng)用程序拉出內(nèi)容。HRESULTGetContent(IAuxiliaryDisplayCapabilities*in_pCapabilities,DWORD*out-pdwSize,BYTE**out_ppbData)方法被API調(diào)用,以便從ISV應(yīng)用程序中檢索內(nèi)容。調(diào)用這個的方式取決于DifferentiateContent(區(qū)別內(nèi)容)屬性的值;如果應(yīng)用程序指出它關(guān)心設(shè)備性能,則每一設(shè)備回叫這個方法一次,第一個參數(shù)是指向適當?shù)腎AuxiliaryDisplayCapabilities接口的指針。如果應(yīng)用程序指出它不關(guān)心每一設(shè)備性能,那么,這個方法只被調(diào)用一次,并且,第一個參數(shù)是“零”指針。第二個參數(shù)包含用戶將設(shè)置成指向其數(shù)據(jù)的字節(jié)指針。第三個參數(shù)是ISV用被返回的內(nèi)容的尺寸填充的輸出指針。ISV應(yīng)用程序使用CoTaskMenAlloc來分配內(nèi)存,以便從這個方法調(diào)用返回;結(jié)果,當完成時,API的責(zé)任是釋放數(shù)據(jù)。[propget]HRESULTContentId(PCONTENT_IDout_pcontentId)方法被API調(diào)用,以檢索與實際內(nèi)容相關(guān)聯(lián)的內(nèi)容ID。不管ISV應(yīng)用程序是否根據(jù)設(shè)備性能來區(qū)別內(nèi)容,這個方法都被調(diào)用一次。出于可管理的目的而在這個接口上提供它,以便使ISV應(yīng)用程序更容易地跟蹤與任何特定內(nèi)容相關(guān)聯(lián)的內(nèi)容ID。[propget]HRESULTDifferentiateContent(BOOL*out_pfDifferentiateContent)方法被API調(diào)用,以檢索指出ISV應(yīng)用程序是否希望根據(jù)設(shè)備性能來區(qū)別其內(nèi)容的標記。本質(zhì)上,它被用來確定GetContent是每一設(shè)備被調(diào)用一次,還是每一所有適當?shù)脑O(shè)備被調(diào)用一次。如果值是“真”,則這指出ISV應(yīng)用程序想要每一設(shè)備被回叫一次;如果值是“假”,則它指出ISV想要每一內(nèi)容項目被回叫一次。IAuxiliaryDisplayEvents接口由ISV應(yīng)用程序?qū)崿F(xiàn),并被API集用來回叫具有事件的應(yīng)用程序。如果ISV應(yīng)用程序不關(guān)心事件,則它不需要實現(xiàn)這個接口。但是,ISV應(yīng)用程序?qū)⒆钣锌赡苓@樣做。當某個數(shù)據(jù)在設(shè)備上被要求、但不存在時,由設(shè)備生成HRESULTContentMissing(constCONTENT_IDin_contentId,IAuxiliaryDisplayContent**outpContent)事件。第一個參數(shù)包含失去的內(nèi)容的內(nèi)容ID,第二個參數(shù)是允許ISV提供那個失去的內(nèi)容的輸出參數(shù)。在內(nèi)部,這被處理,如同當處理第二個參數(shù)時ISV調(diào)用IAuxiliaryDisplayContentManager∷Add一樣;內(nèi)容可以被發(fā)送到所有設(shè)備,或只被發(fā)送到具有內(nèi)容請求的設(shè)備。注意,ISV應(yīng)用程序無法確定什么設(shè)備生成事件。HRESULTApplicationEvent(IAuxiliaryDisplayCapabilities*in_pCapabilities,constDWORDin_dwEventId,constDWORDin_dwEventSize,constBYTE*in_pbEventData)事件由設(shè)備應(yīng)用程序生成,并包含端點專用事件信息。第一個參數(shù)是描述事件起源于那里的設(shè)備的接口指針。第二個參數(shù)是事件ID,它對于那個特定端點而言是唯一的。每個端點可以定義事件ID和相關(guān)聯(lián)的數(shù)據(jù)的集合,它可以由ISV應(yīng)用程序來解釋。例如,可以提供助手對象,以便為來自簡單內(nèi)容格式的應(yīng)用程序事件解碼。第三個參數(shù)包含事件數(shù)據(jù)的大小,第四個參數(shù)包含指向?qū)嶋H數(shù)據(jù)的指針。HRESULTDeviceAdded(IAuxiliaryDisplayCapabilities*in_pDevice)事件由API生成,并通知ISV應(yīng)用程序應(yīng)用程序現(xiàn)在正被顯示在額外的設(shè)備上。第一個參數(shù)包含指向那個新設(shè)備的性能的指針。注意,這個事件的發(fā)生可以作為用戶經(jīng)由輔助顯示控制面板啟用應(yīng)用程序的結(jié)果,而不只是作為新設(shè)備被連接的結(jié)果。HRESULTDeviceRemoved(IAuxiliaryDisplayCapabilities*in_pDevice)事件由API生成,并通知ISV應(yīng)用程序應(yīng)用程序不再被顯示在設(shè)備上。第一個參數(shù)包含指向正被移除的設(shè)備的性能的指針。注意,這個事件的發(fā)生可以作為用戶經(jīng)由輔助顯示控制面板禁用應(yīng)用程序”的結(jié)果,而不只是作為設(shè)備被移除的結(jié)果。IAuxiliaryDisplayCapabilities接口由API實施,并為ISV應(yīng)用程序提供關(guān)于其上正顯示應(yīng)用程序的各種設(shè)備的有用信息。這個接口的目的是提供足夠的信息,以允許ISV應(yīng)用程序使其內(nèi)容(如果適當?shù)脑?配合不同設(shè)備的特定特征。提供公用性能ID(PROPERTYKEYs)的基本集合,但允許IHV可擴展性。HRESULTGetCapability(REFPROPERTYKEYin_pkeyCapability,PROPVARIANT*out_pvarData)方法提供用于詢問設(shè)備性能的普通機制。第一個參數(shù)是表示要獲得的性能的PROPERTYKEY。第二個參數(shù)是指向適當初始化的PROPVARIANT的指針。被返回的數(shù)據(jù)的類型取決于與那個特定屬性關(guān)聯(lián)的類型。調(diào)用者的責(zé)任是釋放最后得到的數(shù)據(jù)。結(jié)論從前述內(nèi)容中可見,本發(fā)明提供一種包括接口集的輔助顯示平臺,通過該接口集,客戶機應(yīng)用程序可以簡單地、一致地與各種輔助顯示器交互,而不管各種設(shè)備實施之間的差異如何。該交互包括顯示從客戶機應(yīng)用程序發(fā)送的信息,包括將要被高速緩存或呈現(xiàn)在設(shè)備上的內(nèi)容和通知;設(shè)備也可以將事件和數(shù)據(jù)發(fā)送到應(yīng)用程序。為了提供信息并接收事件,客戶機應(yīng)用程序不需要處理每個設(shè)備的特定性能,但如果需要的話,可以詢問設(shè)備性能,以便在每個設(shè)備上顯示定制的信息。這樣,本發(fā)明提供了當代計算中所需要的眾多好處和優(yōu)點。本發(fā)明容許各種修改和選擇性構(gòu)造,但其某些說明性實施例在附圖中示出并在以上加以詳細描述。但是,應(yīng)該理解并不意在將本發(fā)明局限于所揭示的一個或多個具體形式,而相反,意在包括處于本發(fā)明的精神和范圍以內(nèi)的所有修改、選擇性構(gòu)造和等效技術(shù)方案。權(quán)利要求1.在具有主計算機系統(tǒng)和與其耦合的至少一個輔助設(shè)備的計算環(huán)境中的一種方法,包括提供抽象層,通過所述抽象層,所述主計算機系統(tǒng)上的客戶機應(yīng)用程序可以提供用于獨立于任何特定設(shè)備實現(xiàn)而發(fā)送到一個或多個輔助設(shè)備的信息;以及在所述抽象層接收針對將信息從客戶機應(yīng)用程序發(fā)送到輔助設(shè)備的請求,并且作為響應(yīng),根據(jù)每個設(shè)備的特定設(shè)備實現(xiàn)來將所述應(yīng)用程序所提供的信息發(fā)送到至少一個設(shè)備。2.如權(quán)利要求1所述的方法,其特征在于,所述要發(fā)送的信息對應(yīng)于內(nèi)容,并且其中,發(fā)送所述信息包括以設(shè)備無關(guān)格式從所述客戶機應(yīng)用程序中拉出所述信息。3.如權(quán)利要求1所述的方法,其特征在于,所述抽象層包括對象的API集,其中,所述對象中的一個包括內(nèi)容管理器對象,并且其中,接收所述請求包括在被提供給所述應(yīng)用程序的內(nèi)容管理器對象的接口處接收調(diào)用,并回叫到所述應(yīng)用程序,以獲得所述要發(fā)送的信息。4.如權(quán)利要求1所述的方法,其特征在于,所述要發(fā)送的信息對應(yīng)于通知,并且其中,發(fā)送所述信息包括以設(shè)備無關(guān)格式從所述客戶機應(yīng)用程序中拉出所述信息。5.如權(quán)利要求1所述的方法,其特征在于,所述抽象層包括對象的API集,其中,所述對象中的一個包括通知管理器對象,并且其中,接收所述請求包括在被提供給所述應(yīng)用程序的通知管理器對象的接口處接收調(diào)用,并回叫到所述應(yīng)用程序,以獲得所述要發(fā)送的通知相關(guān)信息。6.如權(quán)利要求1所述的方法,其特征在于,還包括在注冊調(diào)用期間,從客戶機應(yīng)用程序接收指定的端點。7.如權(quán)利要求6所述的方法,其特征在于,還包括響應(yīng)于所述注冊調(diào)用而評估是否授權(quán)所述客戶機應(yīng)用程序使用所指定的端點來向設(shè)備發(fā)送信息。8.至少一個具有計算機可執(zhí)行指令的計算機可讀介質(zhì),當所述指令被執(zhí)行時,實現(xiàn)如權(quán)利要求1所述的方法。9.在具有主計算機系統(tǒng)和與其耦合的輔助設(shè)備的計算環(huán)境中的一種系統(tǒng),包括所述主計算機系統(tǒng)上的輔助平臺,所述輔助平臺包括客戶機API集,所述客戶機API集包括注冊對象,它從運行于所述主計算機系統(tǒng)上的客戶機應(yīng)用程序接收調(diào)用,所述調(diào)用標識所述應(yīng)用程序并請求將內(nèi)容發(fā)送到輔助設(shè)備的端點,所述注冊對象被配置成例示內(nèi)容管理器對象,并響應(yīng)于所述調(diào)用,將指向所述內(nèi)容管理器對象的指針返回到所述應(yīng)用程序;以及所述內(nèi)容管理器對象被配置成響應(yīng)于來自所述應(yīng)用程序的調(diào)用從所述應(yīng)用程序獲得內(nèi)容,并將所述應(yīng)用程序所提供的內(nèi)容傳達給所述端點。10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述注冊對象評估是否授權(quán)所述客戶機應(yīng)用程序使用所指定的端點來向設(shè)備發(fā)送信息。11.如權(quán)利要求9所述的系統(tǒng),其特征在于,還包括通知管理器對象,所述通知管理器對象由所述注冊對象響應(yīng)于來自所述客戶機應(yīng)用程序的、針對在輔助顯示設(shè)備上顯示通知的注冊請求而例示,所述通知管理器對象被配置成響應(yīng)于來自所述應(yīng)用程序的調(diào)用而從所述應(yīng)用程序獲得通知數(shù)據(jù),并將所述應(yīng)用程序所提供的通知數(shù)據(jù)傳達給所述端點。12.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述通知數(shù)據(jù)包括包含標題、消息、圖像數(shù)據(jù)和截止時間的集合中的數(shù)據(jù)的至少一個項。13.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述客戶機應(yīng)用程序根據(jù)對應(yīng)于所述端點的合約來向所述輔助設(shè)備傳達內(nèi)容,并且其中,所述內(nèi)容管理器不與所述內(nèi)容交互。14.如權(quán)利要求9所述的系統(tǒng),其特征在于,從所述應(yīng)用程序獲得的內(nèi)容是由對于所述應(yīng)用程序唯一的內(nèi)容標識符來標識的。15.如權(quán)利要求9所述的系統(tǒng),其特征在于,還包括另一客戶機應(yīng)用程序,其中,所述客戶機API集相對于輔助設(shè)備通信將所述客戶機應(yīng)用程序彼此隔離。16.如權(quán)利要求9所述的系統(tǒng),其特征在于,還包括另一端點,其中,所述客戶機應(yīng)用程序根據(jù)單獨的合約來向每個端點傳達內(nèi)容,每個合約對應(yīng)于每個端點。17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述端點對應(yīng)于不同的輔助設(shè)備上的不同程序。18.如權(quán)利要求9所述的系統(tǒng),其特征在于,還包括生存期管理器,所述生存期管理器將生存期相關(guān)通知提供給與所述輔助設(shè)備的操作狀態(tài)相對應(yīng)的客戶機管理器。19.在具有主計算機系統(tǒng)和與其耦合的至少一個輔助設(shè)備的計算環(huán)境中的一種系統(tǒng),包括接口,通過所述接口,所述主計算機系統(tǒng)上的客戶機應(yīng)用程序可以提供用于獨立于任何特定設(shè)備實現(xiàn)而發(fā)送到一個或多個輔助設(shè)備的信息;用于經(jīng)由所述接口注冊用于將內(nèi)容或通知從客戶機應(yīng)用程序發(fā)送到輔助設(shè)備的客戶應(yīng)用程序的裝置;用于獲得所述客戶機應(yīng)用程序所提供的信息的裝置,所述信息對應(yīng)于所述內(nèi)容或通知;以及,用于將所述信息發(fā)送到至少一個輔助設(shè)備的裝置。20.如權(quán)利要求19所述的系統(tǒng),其特征在于,還包括用于經(jīng)由所述接口注冊用于從輔助設(shè)備接收事件的客戶機應(yīng)用程序的裝置、用于從輔助設(shè)備接收事件的裝置、以及用于將事件傳播到客戶機應(yīng)用程序的裝置。全文摘要描述了一種包括具有接口(API)集的輔助顯示平臺的系統(tǒng)和方法,該接口(API)集提供一種方法,供運行于主計算機系統(tǒng)上的客戶機應(yīng)用程序與各種類型的輔助顯示器交互,而不管各種設(shè)備實現(xiàn)之間的差異如何。交互包括顯示應(yīng)用程序所提供的內(nèi)容和通知,以及將事件返回到應(yīng)用程序。在一項實現(xiàn)中,API集包括COM對象集,該COM對象集注冊和執(zhí)行客戶機應(yīng)用程序的配置檢驗,將內(nèi)容和通知發(fā)送到附加設(shè)備,并返回來自這些附加設(shè)備的事件。應(yīng)用程序可以將數(shù)據(jù)發(fā)送到與通信目的地(例如,特定的輔助設(shè)備應(yīng)用程序)和關(guān)于該數(shù)據(jù)的合約(例如,格式)相對應(yīng)的端點。這樣,平臺和API集提供關(guān)于應(yīng)用程序的抽象層,以便獨立于任何特定的輔助設(shè)備實現(xiàn)來提供信息。文檔編號G06F9/44GK1818860SQ20061000460公開日2006年8月16日申請日期2006年1月28日優(yōu)先權(quán)日2005年2月7日發(fā)明者A·J·富勒,D·J·波利維,M·P·羅特恩,M·S·伯恩斯坦,S·維基申請人:微軟公司