專利名稱:可擴展的設(shè)備驅(qū)動器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種設(shè)備驅(qū)動器,它能提供動態(tài)可擴展的功能,但不需要重新編譯設(shè)備驅(qū)動程序。例如,本發(fā)明可以在連接到一個操作系統(tǒng)的一個打印機驅(qū)動程序中實現(xiàn),借此,打印機驅(qū)動程序檢測一個驅(qū)動器插件模塊、向操作系統(tǒng)提供對應(yīng)于檢測到的驅(qū)動器插件模塊的信息、然后動態(tài)地訪問檢測到的驅(qū)動器插件模塊的功能。
背景技術(shù):
在一般情況下,諸如打印機之類的設(shè)備驅(qū)動程序都安裝在工作站或計算機上以支持對相應(yīng)的設(shè)備如打印機的訪問和使用。設(shè)備驅(qū)動程序一般情況下由相應(yīng)設(shè)備的廠家開發(fā)和提供,并且當(dāng)相應(yīng)的設(shè)備實際安裝在計算環(huán)境的時候、或者在用戶開始使用已經(jīng)安裝好的設(shè)備之前安裝設(shè)備驅(qū)動程序。
窗口操作系統(tǒng)中的設(shè)備驅(qū)動程序在一般情況下由多個文件組成,稱之為動態(tài)連接庫(.dll)文件,每個動態(tài)連接庫文件實現(xiàn)設(shè)備驅(qū)動程序的一個主要的功能部件。例如,一個打印機驅(qū)動程序可以包括用于顯示用戶接口屬性的圖表的用戶接口動態(tài)連接庫文件、用于處理圖像數(shù)據(jù)的必要著色的圖形著色動態(tài)連接庫文件、以及其它的表示打印機驅(qū)動程序的其它功能部件的其它動態(tài)連接庫文件。在這樣一個例子中,用戶接口動態(tài)連接庫文件包含編譯代碼,以便通過利用和訪問操作系統(tǒng)的接口調(diào)用程序,實現(xiàn)打印機的用戶接口功能。用戶接口動態(tài)連接庫文件以此方式向操作系統(tǒng)提供必要的信息和參數(shù),以便可以在用戶顯示器上顯示打印機驅(qū)動程序的用戶接口屬性圖表。
此外,用戶接口動態(tài)連接庫文件具有必要的功能代碼,以便為顯示的用戶接口動態(tài)地提供背景支持。例如,用戶接口可以包括鈕和對話框,用于選擇黑白打印或彩色打印,基于此,當(dāng)用戶選擇了黑白打印的時候,用戶接口動態(tài)連接庫文件的功能代碼確認(rèn)了用戶在顯示的用戶接口屬性圖表上的選擇,并且設(shè)定了一個內(nèi)部標(biāo)志,以向圖形繪制動態(tài)連接庫文件傳送,從而可以實現(xiàn)用戶的選擇。
如以上所述,設(shè)備驅(qū)動程序的動態(tài)連接庫文件實現(xiàn)設(shè)備驅(qū)動程序的指定功能,例如,用于打印機驅(qū)動程序的用戶接口動態(tài)連接庫文件和圖形繪制動態(tài)連接庫文件。每個動態(tài)連接庫文件本身都可以包含對于其它的動態(tài)連接庫文件的調(diào)用程序。例如,一個用戶接口動態(tài)連接庫文件可以提供一個用戶接口,這個用戶接口包括幾個列出的屬性圖表,供用戶從中選擇希望訪問和/或修改的設(shè)備功能類型。在這種情況下,用戶接口動態(tài)連接庫文件可以包含固定到其它預(yù)定的動態(tài)連接庫文件上的代表用戶接口的每個列出的屬性圖表的調(diào)用程序。
如以上所述的設(shè)備驅(qū)動程序在一般情況下是由設(shè)備驅(qū)動程序的開發(fā)商編譯的,在此之后,相對于設(shè)備驅(qū)動程序的功能容量而言,這些設(shè)備驅(qū)動程序是固定不變的。例如,用戶接口動態(tài)連接庫文件是在分配給用戶并隨后安裝在用戶計算機之前編譯的,由此,由用戶接口動態(tài)連接庫文件顯示并支持的用戶接口屬性圖表就總是相同的。即使在如以上所述的例子中,其中的用戶接口動態(tài)連接庫文件包含固定到其它預(yù)定的動態(tài)連接庫文件上的調(diào)用程序,在編譯用戶接口動態(tài)連接庫文件的時候,對于每個其它預(yù)定的動態(tài)連接庫文件的識別也總是固定不變的。
因此,安裝在用戶計算機上的設(shè)備驅(qū)動程序的功能總是固定不變的,不可能輕易地進(jìn)行修改以增加用戶或者在聯(lián)網(wǎng)的計算環(huán)境中網(wǎng)絡(luò)管理者期望的附加功能。例如,網(wǎng)絡(luò)管理者可能希望用戶打印機驅(qū)動程序能支持網(wǎng)絡(luò)打印的應(yīng)用,例如保密打印和工作統(tǒng)計。但網(wǎng)絡(luò)管理者不可能輕易地修改如以上所述的打印機驅(qū)動程序以增加這一功能。另一方面,打印機驅(qū)動程序的開發(fā)商可能會用戶接口動態(tài)連接庫文件以及其它動態(tài)連接庫文件,以便增加這樣的功能,然后重新編譯并檢驗這些動態(tài)連接庫文件。然后,這些修改的動態(tài)連接庫文件必須安裝在用戶計算機上。可以設(shè)想,一旦期望在設(shè)備驅(qū)動程序內(nèi)增加新的功能,這種修改過程可能會遇到麻煩,并且這種修改過程對于用戶、網(wǎng)絡(luò)管理者、和設(shè)備驅(qū)動程序開發(fā)商是效率低下的。
發(fā)明內(nèi)容
本發(fā)明通過提供連接到操作系統(tǒng)的打印機驅(qū)動器而解決了上述問題,由此,所述的打印機驅(qū)動程序檢測一個或多個驅(qū)動器插件模塊、向操作系統(tǒng)提供對應(yīng)于每個檢測到的驅(qū)動器插件模塊的信息、然后動態(tài)訪問每個檢測到的驅(qū)動器插件模塊的功能。以此方式,基于由設(shè)備驅(qū)動程序檢測到的驅(qū)動器插件模塊的序號和類型來動態(tài)擴展設(shè)備驅(qū)動程序的功能,不必重新設(shè)計、重新編譯、和重新檢驗設(shè)備驅(qū)動程序。
因此,本發(fā)明的一個方面涉及一種信息設(shè)備,所述的信息設(shè)備存儲打印機驅(qū)動程序的用戶接口程序,用于通過執(zhí)行一個操作系統(tǒng)的計算設(shè)備來支持打印機的使用,用戶接口程序由信息設(shè)備執(zhí)行以實現(xiàn)被操作系統(tǒng)調(diào)用的初始化設(shè)備,借此,初始化設(shè)備檢測在操作系統(tǒng)的系統(tǒng)注冊表中的一個驅(qū)動器插件識別符,訪問一個存儲器并在存儲器中裝入與所述的驅(qū)動器插件識別符對應(yīng)的驅(qū)動器插件程序,從驅(qū)動器插件程序獲得指向該驅(qū)動器插件程序內(nèi)的信息功能調(diào)用的指針,執(zhí)行信息功能調(diào)用以從驅(qū)動器插件程序接收信息,存儲接受的信息到一個本地數(shù)據(jù)結(jié)構(gòu)中,并且通過使用操作系統(tǒng)功能調(diào)用向操作系統(tǒng)傳送所接收的信息的一部分。
優(yōu)選地,通過搜索操作系統(tǒng)的系統(tǒng)注冊表的與驅(qū)動器插件程序?qū)?yīng)的注冊項,檢測驅(qū)動器插件程序。還要通過利用信息功能調(diào)用從驅(qū)動器插件程序獲得這個信息,所述的信息功能調(diào)用由驅(qū)動器插件程序輸出的一個指針訪問。還有,設(shè)備驅(qū)動程序最好是用戶接口程序,并且從驅(qū)動器插件程序獲得的信息最好包括用于顯示的對話屬性圖表的屬性,以及包括用于實現(xiàn)特定功能(例如打印工作統(tǒng)計或其它功能)的驅(qū)動器插件程序中的指向可執(zhí)行代碼的指針。從驅(qū)動器插件程序獲得的信息最好還通過用戶接口程序存儲在一個本地的數(shù)據(jù)結(jié)構(gòu)中。最后,從驅(qū)動器插件程序獲得的信息最好包括一個事件請求指示字,用于確定哪一些事件通知類型要傳送到驅(qū)動器插件程序。
按照以上所述,設(shè)備驅(qū)動程序的功能可以基于在計算設(shè)備中由設(shè)備驅(qū)動程序檢測到的驅(qū)動器插件程序的序號和類型而動態(tài)擴展,從而有可能通過設(shè)備驅(qū)動程序來訪問和使用每個檢測到的驅(qū)動器插件程序的功能,而不必重新設(shè)計、重新編譯、和重新檢驗設(shè)備驅(qū)動程序。
按照本發(fā)明的另一個方面,提供了一種信息設(shè)備,所述的信息設(shè)備在一個存儲器中存儲一個驅(qū)動器插件程序,該驅(qū)動器插件程序由借助于執(zhí)行操作系統(tǒng)的一個計算設(shè)備支持使用打印機的打印機驅(qū)動程序的用戶接口程序使用,所述的驅(qū)動器插件程序?qū)崿F(xiàn)具有可執(zhí)行代碼的一個功能裝置,所述的可執(zhí)行代碼支持與功能應(yīng)用程序?qū)?yīng)的至少一個對話屬性圖表,并且實現(xiàn)包括資源信息的一個資源裝置,所述的資源信息包括由驅(qū)動器插件程序支持的一系列對話屬性圖表,由驅(qū)動器插件程序支持的每個對話屬性圖表的類型,由驅(qū)動器插件程序支持的每個對話屬性圖表的屬性,指向信息功能調(diào)用的一個信息指針,以及指向事件處理程序的一個事件指針。信息指針由用戶接口程序訪問,以啟動信息功能調(diào)用,所述的信息功能調(diào)用向用戶接口程序返回一個與資源部分的資源信息對應(yīng)的資源指針,以及一個與功能部分的可執(zhí)行代碼對應(yīng)的功能指針。
優(yōu)選地,從驅(qū)動器插件程序獲得的信息包括用于顯示的對話屬性圖表的屬性,以及在驅(qū)動器插件程序中指向可執(zhí)行代碼的指針,用于實現(xiàn)特殊的功能,例如打印工作的統(tǒng)計或另外的功能。還有,事件請求指示字最好定義哪些類型的事件通知要傳送到驅(qū)動器插件程序。
還有,以上所述可以通過一個安裝腳本完成,所述的安裝腳本或者從設(shè)備驅(qū)動程序的開發(fā)商提供的一個安裝程序獲得,或者從另外的來源如Web或CD-ROM獲得。還有,最好將對應(yīng)于每個所選的驅(qū)動器插件模塊的識別符輸入到與外部設(shè)備的名稱對應(yīng)的系統(tǒng)注冊表位置。還有,最好利用通過從驅(qū)動器插件模塊輸出的指針訪問的信息功能調(diào)用,從驅(qū)動器插件程序獲得指定的對話信息。還有,指定的對話信息最好包括用于顯示的對話屬性圖表的屬性,以及在驅(qū)動器插件程序中指向可執(zhí)行代碼的一個指針,用于實現(xiàn)特殊的功能,例如打印工作的統(tǒng)計或另外的功能。最好通過用戶接口模塊將從驅(qū)動器插件程序獲得的信息存儲在本地數(shù)據(jù)結(jié)構(gòu)中。最后,從驅(qū)動器插件程序獲得的信息最好包括一個事件請求指示字,用于確定哪一種類型的事件通知要發(fā)送到驅(qū)動器插件模塊。
通過以上所述,基于由設(shè)備驅(qū)動程序在計算設(shè)備中檢測到的驅(qū)動器插件程序的序號和類型,就可以動態(tài)訪問設(shè)備驅(qū)動程序的功能,從而可以由設(shè)備驅(qū)動程序訪問和利用每個檢測到的驅(qū)動器插件程序的功能,而不必重新設(shè)計、重新編譯、和重新檢驗設(shè)備驅(qū)動程序。
按照本發(fā)明的另一個方面,提供了注冊由設(shè)備驅(qū)動器的設(shè)備驅(qū)動程序使用的驅(qū)動器插件程序,所述的設(shè)備驅(qū)動程序通過計算設(shè)備支持使用一臺外部設(shè)備,所述的注冊方法包括識別定位在外部源的至少一個可利用的驅(qū)動器插件程序,選擇至少一個可利用的驅(qū)動器插件程序以安裝在計算設(shè)備上,通過在計算設(shè)備的一個存儲器中存儲每個選定的驅(qū)動器插件程序在計算設(shè)備上安裝每個選定的驅(qū)動器插件程序,在操作系統(tǒng)的系統(tǒng)注冊表中輸入對應(yīng)于每個選定的驅(qū)動器插件程序的一個識別符,所述的操作系統(tǒng)正在計算設(shè)備上執(zhí)行。
優(yōu)選地,資源信息是利用資源指針訪問的,并且資源信息包括由驅(qū)動器插件程序支持的一系列對話屬性圖表,由驅(qū)動器插件程序支持的每個對話屬性圖表的類型,和由驅(qū)動器插件程序支持的每個對話屬性圖表的屬性。此外,資源部分最好包括指向一個事件處理程序的事件指針,并且事件指針經(jīng)信息功能調(diào)用傳送到設(shè)備驅(qū)動程序,借此,設(shè)備驅(qū)動程序使用事件指針啟動事件處理程序,從而可以將通過設(shè)備驅(qū)動程序接收的事件通知從操作系統(tǒng)傳送到驅(qū)動器插件程序。設(shè)備驅(qū)動程序和驅(qū)動器插件程序最好都包括動態(tài)連接庫文件。
按照以上所述,設(shè)備驅(qū)動程序的功能可以基于在計算設(shè)備中由設(shè)備驅(qū)動程序檢測到的驅(qū)動器插件程序的序號和類型而動態(tài)擴展,從而有可能通過設(shè)備驅(qū)動程序來訪問和使用每個檢測到的驅(qū)動器插件程序的功能,而不必重新設(shè)計、重新編譯、和重新檢驗設(shè)備驅(qū)動程序。
提供這個簡要的概括是為了快速理解本發(fā)明的本質(zhì)。通過參照附圖詳細(xì)描述本發(fā)明的優(yōu)選實施例,可以獲得對于本發(fā)明的更加完整的理解。
圖1是計算環(huán)境的一個有代表性的視圖,其中可以按照本發(fā)明的一個實施例來實現(xiàn)本發(fā)明。
圖2是表示如圖1所示的計算機的內(nèi)部結(jié)構(gòu)的詳細(xì)方塊圖。
圖3是用于說明按照本發(fā)明的一個實施例的打印機驅(qū)動程序的用戶接口模塊的各個部件的方塊圖。
圖4是用于說明按照本發(fā)明的一個實施例的插件模塊的各個部件的方塊圖。
圖5是用于說明按照本發(fā)明的一個實施例的本地數(shù)據(jù)結(jié)構(gòu)的各個部件的方塊圖。
圖6是用于說明按照本發(fā)明的一個實施例的打印機驅(qū)動程序使用插件模塊的流程圖。
圖7是用于說明按照本發(fā)明的一個實施例的打印機驅(qū)動程序的用戶接口的主對話屬性圖表的方塊圖。
圖8是用于說明按照本發(fā)明的一個實施例的打印機驅(qū)動程序的用戶接口的主對話屬性圖表的方塊圖,所述的用戶接口加入了來自于插件模塊的列出的屬性圖表。
圖9是用于說明按照本發(fā)明的一個實施例注冊插件模塊的流程圖。
圖10是用于說明按照本發(fā)明的一個實施例的在插件模塊、打印機驅(qū)動程序、和操作系統(tǒng)之間的相互作用的流程圖。
具體實施例方式
本發(fā)明涉及一種可擴展的設(shè)備驅(qū)動程序,用于計算設(shè)備中以支持使用外部設(shè)備,如打印機。具體來說,本發(fā)明的設(shè)備驅(qū)動程序能夠檢測和加入在計算設(shè)備上存在的插件模塊,以擴展計算設(shè)備的功能容量。作為一個例子,下面按照一個實施例來討論本發(fā)明,其中的設(shè)備驅(qū)動程序是用于支持使用打印機的一個打印機驅(qū)動程序。顯然,對于支持其它設(shè)備(如數(shù)字式復(fù)印機、掃描儀、照像機、等等)的其它設(shè)備驅(qū)動程序,本發(fā)明都可實現(xiàn)。
圖1提供計算環(huán)境的一個系統(tǒng)的視圖,其中可實現(xiàn)本發(fā)明。如圖1所示,該計算環(huán)境包括計算機10、打印機20、服務(wù)器30、和連接1。連接1可以是計算機10和打印機23之間的簡單的本地連接,例如串聯(lián)、USB、FireWire、或其它這樣的連接。在可替換的方案中,連接1可以是一個網(wǎng)絡(luò),例如由總線型物理結(jié)構(gòu)組成的以太網(wǎng)絡(luò)介質(zhì)。顯然,連接1還可以由另外類型的網(wǎng)絡(luò)如國際互聯(lián)網(wǎng)組成臺式計算機10最好是具有窗口操作系統(tǒng)環(huán)境的一個典型個人計算機或工作站,例如Microsoft Windows 2000、Microsoft Windows ME、或MicrosoftWindows XP。對于典型的PC型計算機,臺式計算機10最好具有顯示器11、鍵盤15、鼠標(biāo)14、主處理器12、硬盤13、CD-ROM驅(qū)動器16、和軟盤驅(qū)動器和/或其它類型的存儲介質(zhì)(未示出)。下面,針對圖2更加詳細(xì)地說明按照本發(fā)明的計算機10的硬盤13的內(nèi)容。
打印機20和25也通過連接1連接到計算機10,所述的打印機最好是能根據(jù)接收到的打印數(shù)據(jù)在記錄介質(zhì)上打印圖像的激光印刷機或噴墨打印機。例如,計算機10通過執(zhí)行按照本發(fā)明的打印機驅(qū)動程序進(jìn)行打印工作,下面對此還要作更加詳細(xì)的說明。打印機20經(jīng)過連接1從計算機10和/或其它來源接收已進(jìn)行的打印工作,然后執(zhí)行這個打印工作。優(yōu)選地,打印機20經(jīng)連接1與計算機10進(jìn)行雙向通信,從而使打印機20在執(zhí)行打印工作期間能夠?qū)⒋蛴」ぷ鞯臓顟B(tài)反向報告給計算機10。打印機25的操作方式與以上所述的打印機20類似。顯然,本發(fā)明可以在其它類型的計算設(shè)備中實現(xiàn),本發(fā)明不局限于在如圖1所示的計算機10中實現(xiàn)。此外,可以利用本發(fā)明來支持除打印機之外的其它類型的設(shè)備,如掃描儀、復(fù)印機、數(shù)碼相機、等等。
此外,連接1最好是一個網(wǎng)絡(luò)連接,例如由總線型物理結(jié)構(gòu)組成的以太網(wǎng)絡(luò)介質(zhì)。服務(wù)器30也連接到連接1。服務(wù)器30最好包括PC可兼容的計算機,它具有窗口操作系統(tǒng)環(huán)境,例如Microsoft Windows 2000、Microsoft Windows ME、或者M(jìn)icrosoft Windows XP。服務(wù)器30有一個硬盤31。硬盤31最好是一個大硬盤,用于存儲大量的文件、應(yīng)用程序、數(shù)據(jù)、網(wǎng)頁和插件模塊,下面還要對它們進(jìn)行討論。因此服務(wù)器30可以被連接1上的其它設(shè)備用作文件服務(wù)器、網(wǎng)頁服務(wù)器、應(yīng)用程序服務(wù)器、或其它類型服務(wù)器。服務(wù)器30還可以用作在連接1上的其它設(shè)備的網(wǎng)關(guān),以訪問其它網(wǎng)絡(luò),如國際互聯(lián)網(wǎng)。最后,服務(wù)器30還可以用作網(wǎng)頁服務(wù)器,以支持由計算機10訪問的網(wǎng)頁,從而可以獲得并安裝設(shè)備插件模塊,下面對此還要作更加詳細(xì)的說明。
圖2是一個方塊圖,用于說明實現(xiàn)本發(fā)明的計算機10的內(nèi)部結(jié)構(gòu),其中包括硬盤13的內(nèi)容。如圖2所示,計算機10的內(nèi)部結(jié)構(gòu)包括硬盤13、隨機存儲存儲器(RAM)17、和處理器(CPU)19。就典型的計算機而論,操作系統(tǒng)40向RAM17內(nèi)裝入期望的程序的可執(zhí)行代碼,以便由CPU19訪問和執(zhí)行。計算機10的硬盤13包括操作系統(tǒng)40、打印機驅(qū)動程序50、和存儲區(qū)60。如以上所述,操作系統(tǒng)40最好是一個窗口操作系統(tǒng),并且具體來說,最好Microsoft Windows操作系統(tǒng),它支持功能調(diào)用以為在操作系統(tǒng)40上執(zhí)行的應(yīng)用程序提供應(yīng)用程序接口。具體來說,功能調(diào)用最好包括用于操作系統(tǒng)40的,以獲得對應(yīng)于屬性圖表的屬性和屬性,從而可以在計算機10的顯示器10上繪制這樣的屬性圖表的調(diào)用。此外,操作系統(tǒng)還包括向在計算機10上正在執(zhí)行的應(yīng)用程序提供外部設(shè)備的狀態(tài)信息的功能調(diào)用。
注冊表41是在硬盤13上的信息存儲位置,它可以駐留在硬盤13的文件夾或者數(shù)據(jù)庫中。注冊表41是通過操作系統(tǒng)40保持和使用的,并且包括操作系統(tǒng)40支持設(shè)備如打印機、掃描儀、復(fù)印機等所必須的信息。在這種情況下,為簡潔起見,圖中所示的注冊表41只包括對應(yīng)于由計算機10的操作系統(tǒng)40支持的打印機20和25的數(shù)據(jù)。具體來說,注冊表41包含實現(xiàn)本發(fā)明的插件識別符,并且表示出分別與操作系統(tǒng)40支持的打印機20和25對應(yīng)的兩列。Printer1_id42和Printer2_id47分別是打印機20和25的設(shè)備識別符,并且通常包括對應(yīng)的打印機的名稱和代碼。例如,Printer1_id42可以是打印機20的“LASER1“,Printer2_id47可以是打印機25的“INKJET1“,借此,可以識別由計算機10的用戶通過操作系統(tǒng)40使用的兩個打印機。
在Printer1_id42和Printer2_id47的下邊的相應(yīng)的列中,提供一個插件識別符的表格,插件識別符用于識別在存儲區(qū)60中可以被打印機驅(qū)動程序利用的每個插件模塊,從而可以通過向預(yù)先存在的設(shè)備驅(qū)動程序如打印機增加功能來實現(xiàn)本發(fā)明,而不需要修改、重新編譯、和重新檢驗設(shè)備驅(qū)動程序。每個插件識別符最好是相應(yīng)的插件模塊在存儲區(qū)60中的位置的一個地址。在一個可替換的方案中,每個插件識別符可由相應(yīng)的插件模塊的名稱或代碼組成。
現(xiàn)在回到注冊表41,在與打印機42對應(yīng)的Printer1_id42下邊的列中,包括如下的插件識別符sec_plugin_id42,rdr_plugin_id44,inst_plugin_id45,act_plugin_id46,它們分別對應(yīng)于在存儲區(qū)60中的保密打印插件模塊63,工作重定向插件模塊62、安裝插件模塊61、和工作統(tǒng)計插件模塊65。以此方式,注冊表41維持每個打印機的插件識別符,從而可以協(xié)助打印機驅(qū)動程序50檢測哪一些插件模塊要被打印機驅(qū)動程序50使用,借此擴展了打印機驅(qū)動程序50的功能。就此而論,在安裝一個設(shè)備的時候,或者在由計算機10的用戶或系統(tǒng)管理人員安裝設(shè)備后的晚些時間,都要將注冊表41的每個插件識別符輸入到位于該特定設(shè)備識別符下面的注冊表41中,下面對此還要作更加詳細(xì)的說明。
圖2的打印機驅(qū)動程序50是一個由操作系統(tǒng)40執(zhí)行的驅(qū)動器模塊,從而可以允許計算機10與打印機20通信并利用打印機20??梢允褂靡粋€類似的打印機驅(qū)動程序(未示出)與打印機25通信并利用打印機25,為了簡潔起見,這里不對它進(jìn)行描述。如圖2所示,打印機驅(qū)動程序50由三個模塊組成,包括user_interface_mod51,graphics_render_mod52,和other_mod53。user_interface_mod51用來提供用戶訪問和控制打印機驅(qū)動程序50的用戶接口。例如,在本發(fā)明的這個實施例中,設(shè)備驅(qū)動程序是通過計算機10驅(qū)動打印機20的打印機驅(qū)動程序50,因此當(dāng)用戶表明要在顯示器11上觀察用戶接口以訪問和控制打印機驅(qū)動程序50的一些特征的愿望時,執(zhí)行user_interface_mod51。在諸如操作系統(tǒng)40之類的窗口操作系統(tǒng)中,普遍的作法是用戶點擊與一個“打印機屬性“對應(yīng)的按鈕以顯示一個對話屬性圖表,從而可以顯示打印機驅(qū)動程序的用戶接口,這個用戶接口通常包括一個主對話屬性圖表,以及用于訪問其它的選項對話屬性圖表的標(biāo)簽,其中每個對話屬性圖表都顯示出與打印機驅(qū)動程序的某些特征有關(guān)的按鈕、信息、和對話。
如以上所述,本發(fā)明提供插件模塊,插件模塊由打印機驅(qū)動程序訪問并與打印機驅(qū)動程序合并,從而可以擴展設(shè)備驅(qū)動程序的功能。在上述的實施例中,利用插件模塊來為打印機驅(qū)動程序50增加新的功能,如工作統(tǒng)計、保密打印、如此等等。此外,插件模塊還提供由user_interface_mod51訪問的、與新的功能對應(yīng)的、選項對話屬性圖表,從而可以將該插件模塊合并進(jìn)入在顯示器11上顯示的打印機驅(qū)動程序的用戶接口內(nèi)。下面對user_interface_mod51的組成和操作還要作更加詳細(xì)的說明。
graphics_render_mod52是打印機驅(qū)動程序50的另外一個部件,并且用于按照計算機10的用戶的期望的調(diào)節(jié)位置使指定的圖像數(shù)據(jù)進(jìn)入打印工作。other_mod53表示用于實現(xiàn)本發(fā)明的另外一些模塊。就此而論,graphics_render_mod52和other_mod53還可以通過訪問和合并插件模塊擴展它們的功能,然而,為簡潔起見,在下面僅針對user_interface_md51詳細(xì)描述插件模塊的應(yīng)用。優(yōu)選地,上述的打印機驅(qū)動程序50的模塊是動態(tài)連接庫文件。
存儲區(qū)60是硬盤13的一個區(qū)域,由操作系統(tǒng)40和打印機驅(qū)動程序50共同使用,以按照本發(fā)明操作計算機和使用打印機驅(qū)動程序50。如圖2所示,存儲區(qū)60包括安裝插件模塊61、工作重定向插件模塊62、保密打印插件模塊63,策略管理插件模塊64、工作統(tǒng)計插件模塊65、和特征模式插件模塊66。如以上針對注冊表41所述的,使用這些插件模塊來進(jìn)行訪問以擴展設(shè)備驅(qū)動程序如打印機驅(qū)動程序50之類的功能。例如,安裝插件模塊61提供的功能是為計算機10使用的新打印機進(jìn)行安裝,工作重定向插件模塊62的功能是實現(xiàn)從一個打印機向另一個打印機的打印工作改變,保密打印插件模塊63提供的功能是保證將打印工作送到一臺打印機上并且以保密方式進(jìn)行打印,策略管理插件模塊64的功能是管理對打印機的訪問和打印機的功能,工作統(tǒng)計插件模塊65的功能是跟蹤和報告送到打印機的打印工作,特征模式插件模塊66的功能是支持新加到打印機上的硬件,例如紙盤或如裝訂裝置的結(jié)束設(shè)備。當(dāng)然,應(yīng)該理解,在圖2的存儲區(qū)60中所示的插件模塊的類型只是支持打印機的打印機驅(qū)動程序使用的功能的一些例子,這些功能類型沒有窮盡可由插件模塊為打印機驅(qū)動程序?qū)崿F(xiàn)的功能類型,而對于其它的設(shè)備如掃描儀、復(fù)印機、數(shù)碼相機等來說,所述的功能類型要少得多。優(yōu)選地,插件模塊是動態(tài)連接庫文件。
現(xiàn)在返回到附圖2,可以看出,存儲區(qū)60還包括其它的模塊67、其它方件69、網(wǎng)頁瀏覽器70、系統(tǒng)文件夾71、數(shù)據(jù)庫72、本地數(shù)據(jù)結(jié)構(gòu)73、和注冊應(yīng)用程序74。其它模塊67和其它文件69用于由操作系統(tǒng)40進(jìn)行的計算機10的操作,以及用于通過計算機10的CPU19執(zhí)行的其它應(yīng)用程序進(jìn)行的計算機10的操作。網(wǎng)頁瀏覽器70由CPU19執(zhí)行以允許計算機10的用戶經(jīng)過連接1訪問例如服務(wù)器30的網(wǎng)頁服務(wù)器。系統(tǒng)文件夾管理存儲文件和應(yīng)用程序的位置,這些文件和應(yīng)用程序由操作系統(tǒng)40使用并且由CPU19執(zhí)行的其它應(yīng)用程序使用。類似地,數(shù)據(jù)庫72用于存儲可由操作系統(tǒng)40訪問和使用的信息以及由CPU19執(zhí)行的其它應(yīng)用程序訪問和使用的信息。本地數(shù)據(jù)結(jié)構(gòu)73是一組數(shù)據(jù)結(jié)構(gòu),由user_interface_mod51使用,下面對此還要作更加詳細(xì)的說明。最后,注冊應(yīng)用程序74是一個應(yīng)用程序,它最好由一個指令腳本組成,指令腳本用于識別插件模塊并將插件模塊安裝進(jìn)入注冊表41,下面對此還要作更加詳細(xì)的說明。
圖3是一個方塊圖,用于描述如圖2所示的打印機驅(qū)動程序50的user_interface_mod51的組成。如圖3所示,user_interface_mod51由初始化部分80和操作部分90組成。初始化部分80用于響應(yīng)用戶的查看打印機驅(qū)動程序50的用戶接口的請求初始化user_interface_mod51。例如,當(dāng)用戶在顯示器11上選擇了對應(yīng)于打印機20的“打印機屬性“按鈕的時候,操作系統(tǒng)40將user_interface_mod51的初始化部分80的執(zhí)行初始化,以初始化打印機驅(qū)動程序的用戶接口,并且將必要的對話屬性圖表信息傳送到操作系統(tǒng)40以供顯示。
插件搜尋功能81為對應(yīng)于打印機20的已注冊的插件模塊搜尋一個預(yù)定位置,如注冊表41。當(dāng)然,另外的位置如系統(tǒng)目錄夾或數(shù)據(jù)庫也可用作存儲由插件搜尋功能81訪問的插件模塊的預(yù)定位置。插件信息功能82可以獲得對應(yīng)于由插件搜尋功能81檢測到的任何插件模塊信息,并且選擇可以由user_interface_mod51使用的那些檢測到的插件模塊。插件信息功能82將對于每個選定的插件模塊獲得的存入本地數(shù)據(jù)結(jié)構(gòu)內(nèi)。對話結(jié)構(gòu)功能83用來將由user_interface_mod51支持的每個靜態(tài)對話屬性圖表的信息和屬性、以及由選定的插件模塊支持的每個選項對話屬性圖表的已獲得的信息和屬性傳送到操作系統(tǒng)40。操作系統(tǒng)40一旦接收到每個對話屬性圖表的信息和屬性,操作系統(tǒng)40就在計算機10的顯示器11上顯示繪制的對話屬性圖表。就此而論,靜態(tài)對話屬性圖表屬性84包含由user_interface_mod51支持的每個靜態(tài)對話屬性圖表的信息和屬性。
user_interface_mod51的操作部分90包括靜態(tài)對話屬性圖表支持代碼91、靜態(tài)功能代碼92、插件功能訪問代碼93、和插件事件代碼94。操作部分90是在初始化部分80完成以后執(zhí)行的,并且操作部分90用于支持靜態(tài)對話屬性圖表、訪問相應(yīng)的插件模塊以支持由所選的插件模塊支持的每個選項對話屬性圖表、并且如果需要將事件信息傳送到適當(dāng)?shù)牟寮K。靜態(tài)對話屬性圖表支持代碼91提供一個對話過程,以通過監(jiān)視在每個靜態(tài)對話屬性圖表上的用戶對于設(shè)定值的修改和按鈕,支持這個靜態(tài)對話屬性圖表,并且隨后以相應(yīng)的方式更新靜態(tài)對話屬性圖表,并且將修改的設(shè)定值傳送到靜態(tài)功能代碼92,而且可能的話還要傳送到打印機驅(qū)動程序50的其它部分如graphics_render_mod52,以實現(xiàn)用戶的修改。例如,一個用戶可能利用已經(jīng)顯示的打印機驅(qū)動程序用戶接口的主對話屬性圖表之一上的一個按鈕來選擇黑白打印而不是彩色打印。靜態(tài)對話屬性圖表支持代碼91可能會將這個用戶的選擇傳送到graphics_render_mod52,從而可以使在由打印機20進(jìn)行的打印工作中的圖像數(shù)據(jù)為黑白的數(shù)據(jù)。靜態(tài)功能代碼82用于處理user_interface_mod51的其它靜態(tài)功能,例如監(jiān)視與打印機20的通信狀態(tài)、監(jiān)視由打印機20正在進(jìn)行的打印工作的狀態(tài)。
插件功能訪問代碼93用于訪問每個選定的插件模塊的功能代碼,用于支持由相應(yīng)的選定的插件模塊提供的選項對話屬性圖表,并且用于實現(xiàn)由每個選定的插件模塊如工作統(tǒng)計、策略管理等支持的功能。插件事件代碼94從操作系統(tǒng)40接收與打印機20對應(yīng)的事件通知,確定已經(jīng)接收的事件通知是否是已經(jīng)由任何選定的插件模塊請求過,然后將這個事件通知傳送到適當(dāng)?shù)囊堰x定的插件模塊供它們使用。
圖4是一個方塊圖,用于說明按照本發(fā)明的一個實施例的插件模塊的組成。為了概括地描述這樣的插件模塊的組成,在圖4中示出了工作統(tǒng)計插件模塊65。如圖4所示,工作統(tǒng)計插件模塊65包括資源部分100和功能部分130。一般情況下,資源部分100提供信息和功能,以允許user_interface_mod51訪問和實現(xiàn)選項對話屬性圖表以及由工作統(tǒng)計插件模塊65支持的功能。功能部分130一般來說提供功能代碼,以支持在資源部分100中描述的選項對話屬性圖表,并且提供工作統(tǒng)計插件模塊65的功能,它跟蹤和報告發(fā)送到指定的打印機的打印工作的數(shù)目和類型。
如圖4所示,資源部分包括接口101和屬性110。接口101提供允許user_interface_mod51訪問和實現(xiàn)選項對話屬性圖表的信息和功能以及由工作統(tǒng)計插件模塊65支持的信息和功能。接口101包括插件功能類型102、信息功能指針103、事件處理程序指針104、資源指針105、功能指針106、得到的信息功能107、和事件處理程序108。插件功能類型102提供由插件模塊支持的功能類型(在這種情況下是工作統(tǒng)計)的指示,最好用文本或代碼的形式。信息功能指針103是代表得到的信息功能107的地址的指針,借此,工作統(tǒng)計插件模塊65可以為user_interface_mod51提供信息功能指針103,然后user_interface_mod51使用信息功能指針103調(diào)用得到的信息功能107,從而可以訪問包含在工作統(tǒng)計插件模塊65中的信息。
事件處理程序指針104是指向事件處理程序108的地址的指針,這個指針通過工作統(tǒng)計插件模塊65提供給user_interface_mod51,從而使user_interface_mod51可以調(diào)用事件處理程序108來向工作統(tǒng)計插件模塊65提供有關(guān)打印機20的事件通知。就此而論,user_interface_mod51基于經(jīng)過所述的得到的信息功能107傳送到user_interface_mod51的事件處理程序108來確定這個事件通知是否應(yīng)該發(fā)送到工作統(tǒng)計插件模塊65。在另一個實施例中,事件處理程序108還可以提供應(yīng)該發(fā)送到工作統(tǒng)計插件模塊65的事件通知的類型的一個描述符,這個描述符是文本或代碼的形式。例如,工作統(tǒng)計插件模塊65的工作統(tǒng)計功能需要打印工作中的成功打印的頁數(shù)和打印工作的類型,以保持對于發(fā)送到打印機20的所有的打印工作的精確統(tǒng)計。資源指針105是指向?qū)傩?10的地址的指針,并且經(jīng)過所述的得到的信息功能107將這個指針提供給user_interface_mod51,由此允許user_interface_mod51訪問由工作統(tǒng)計插件模塊65支持的每個選項對話屬性圖表的類型和屬性。類似地,功能指針106是指向?qū)傩?10的地址的一個指針,并且經(jīng)過所述的得到的信息功能107將這個指針提供給user_interface_mod51,由此允許user_interface_mod51訪問由工作統(tǒng)計插件模塊65支持的每個選項對話屬性圖表的類型和屬性。
屬性110由資源指針105訪問,并且包含對話屬性圖表數(shù)目111和屬性圖表屬性115。對話屬性圖表數(shù)目111指示由工作統(tǒng)計插件模塊65支持的對話屬性圖表的數(shù)目。屬性圖表屬性115是一個數(shù)據(jù)結(jié)構(gòu),包含由工作統(tǒng)計插件模塊65支持的每個對話屬性圖表的列,即屬性圖表的序號116、類型117、和屬性118。按這種方式,user_interface_mod51一旦獲得資源指針105,user_interface_mod51就可獲得由工作統(tǒng)計插件模塊65支持的每個對話屬性圖表的類型和屬性,然后將這個類型和屬性傳送到操作系統(tǒng)40以便在顯示器11上繪制選項對話屬性圖表。類型117最好是對話屬性圖表類型的文本或代碼的表示,例如對于靜態(tài)屬性圖表的INFO,對于允許用戶使用按鈕等修改參數(shù)的動態(tài)屬性圖表的SELECT,等等。屬性118包含用于對話屬性圖表布局的描述性數(shù)據(jù)、按鈕、和在對話屬性圖表上的對話、以及操作系統(tǒng)40在顯示器11上繪制對話屬性圖表所需要的對話屬性圖表的其它方面。
功能部分130包括功能代碼131和事件狀態(tài)監(jiān)視器代碼132。功能代碼131是可執(zhí)行代碼,由user_interface_mod51使用功能指針106調(diào)用,功能指針106是由user_interface_mod51經(jīng)過所述的得到的信息功能107獲得的。功能代碼131實現(xiàn)工作統(tǒng)計插件模塊65的功能,在這種情況下是打印工作的統(tǒng)計。事件狀態(tài)監(jiān)視器代碼132處理接收的從user_interface_mod51經(jīng)過所述的事件處理程序108傳送到工作統(tǒng)計插件模塊65的事件通知。事件狀態(tài)監(jiān)視器代碼132將接收到的事件通知傳送到功能代碼131,用于實現(xiàn)由工作統(tǒng)計插件模塊65支持的功能。
圖5是一個方塊圖,用于描述圖2中存儲區(qū)60的本地數(shù)據(jù)結(jié)構(gòu)73的組成。如以上參照附圖3中user_interface_mod51的初始化部分80所討論的,user_interface_mod51利用所述的得到的信息功能107從工作統(tǒng)計插件模塊65獲得信息、指針、和屬性。初始化部分80一旦從工作統(tǒng)計插件模塊65收到這個信息,就將這個信息放在對應(yīng)于工作統(tǒng)計插件模塊65的一個單獨的數(shù)據(jù)結(jié)構(gòu)中,從而有可能在晚些時候?qū)ζ溥M(jìn)行迅速而有效的訪問,而不必再次使用所述的得到的信息功能107。具體來說,user_interface_mod51的初始化部分80的插件信息功能83和對話結(jié)構(gòu)功能84從每個選定的插件模塊中獲得了信息,并且將其放在本地數(shù)據(jù)結(jié)構(gòu)73的一個單獨的目錄結(jié)構(gòu)中。
回到圖5,可以看見,本地數(shù)據(jù)結(jié)構(gòu)73包括結(jié)構(gòu)140、160、180、200,它們分別對應(yīng)于為與打印機20相應(yīng)的在注冊表41中注冊的Printer1_id42的四個插件模塊。為簡潔起見,只討論數(shù)據(jù)結(jié)構(gòu)140,這是因為它對應(yīng)于通過user_interface_mod51從工作統(tǒng)計插件模塊65獲得的信息。如在數(shù)據(jù)結(jié)構(gòu)140中看見的,包含在其中的信息是包含在工作統(tǒng)計插件模塊65的資源部分100中的信息的子集。具體來說,這個信息包括插件功能類型142、資源指針143、功能指針144、事件處理程序指針145、和屬性150。屬性150包含由工作統(tǒng)計插件模塊65支持的每個對話屬性圖表的對話屬性的圖表序號151、屬性圖表序號152、類型153、和屬性154。前邊針對圖4的工作統(tǒng)計插件模塊65描述了這些數(shù)據(jù)中的每一個,這里對此不作進(jìn)一步的描述。
圖6是一個流程圖,用于描述在user_interface_mod51和工作統(tǒng)計插件模塊65之間的相互關(guān)系。在步驟S601中,user_interface_mod51從操作系統(tǒng)40接收一個初始化調(diào)用,然后觸發(fā)初始化部分80。在步驟S602中,插件搜尋功能81搜尋注冊表,以便提供與打印機20對應(yīng)的插件模塊。在步驟S603中,確定是否已經(jīng)檢測到插件模塊。如果沒有,則流程前進(jìn)在步驟S615返回。如果已經(jīng)檢測到一個插件模塊,則流程前進(jìn)到步驟S604,在此步驟中,將已經(jīng)檢測到的插件模塊65如工作統(tǒng)計插件模塊65裝入存儲器如RAM17中。接下去,在步驟S605中,插件信息功能82從工作統(tǒng)計插件模塊65獲得信息功能指針103。然后,插件信息功能82在步驟s606中使用信息功能指針103調(diào)用所述的得到的信息功能107,以便從工作統(tǒng)計插件模塊65的資源部分100接收信息和對話屬性圖表屬性110。
在步驟S607中確定已經(jīng)檢測到的插件模塊(在這種情況下是工作統(tǒng)計插件模塊65)是否是由user_interface_mod51支持的一種類型。如果不是,流程傳遞到步驟S602,繼續(xù)搜尋已經(jīng)注冊的插件模塊。如果支持這個插件模塊(在這個情況下,支持工作統(tǒng)計),則流程前進(jìn)到步驟S608,在此步驟中將從工作統(tǒng)計插件模塊65接收的信息存儲在本地數(shù)據(jù)結(jié)構(gòu)73的一個單獨的本地數(shù)據(jù)結(jié)構(gòu)140中。在步驟S609中,對話結(jié)構(gòu)功能83將所有的對話屬性圖表(靜態(tài)的和來自于插件模塊的)的屬性作為在顯示器11上的打印機驅(qū)動程序的用戶接口傳送到操作系統(tǒng)40以便由操作系統(tǒng)40進(jìn)行繪制。在步驟S610中,執(zhí)行user_interface_mod51的操作部分90,并且由操作部分90根據(jù)需要調(diào)用和執(zhí)行工作統(tǒng)計插件模塊65的功能部分130,以實現(xiàn)由工作統(tǒng)計插件模塊65支持的功能。
接下去,在步驟S611中,確定是否有更多的插件模塊與user_interface_mod51合并,并且,如果有,則流程傳遞到步驟S602。如果沒有更多的插件模塊,則流程傳遞到步驟S612,user_interface_mod51從操作系統(tǒng)40接收有關(guān)打印機20的事件通知。在步驟S613利用事件處理程序108確定所接收的事件通知的類型是否是工作統(tǒng)計插件模塊65所請求的。如果是,則流程前進(jìn)到步驟S614,將事件通知從user_interface_mod51傳送到工作統(tǒng)計插件模塊65,以便為工作統(tǒng)計插件模塊65中的可執(zhí)行代碼使用,然后流程前進(jìn)在步驟S615返回。如果不是,流程傳遞到步驟S615直接返回。
圖7是打印機驅(qū)動程序的用戶接口220的圖形表示,其中的情況是,沒有任何一個插件模塊被檢測到并且沒有任何一個插件模塊與user_interface_mod51合并。如圖7所示,打印機驅(qū)動程序用戶接口220由8個選項對話屬性圖221-228組成,它們表示的是由user_interface_mod51內(nèi)在支持的靜態(tài)對話屬性圖表。8個選項對話屬性圖表221-228表示在打印機20中進(jìn)行打印的各個方面。
圖8是打印機驅(qū)動程序的用戶接口220的圖形表示,其中的情況是,有3個插件模塊被檢測到并且這3個插件模塊與user_interface_mod51合并。如圖8所示,打印機驅(qū)動程序用戶接口220由8個選項對話屬性圖表221-228(圖7)組成,它們表示的是由user_interface_mod51內(nèi)在支持的靜態(tài)對話屬性圖表。此外,打印機驅(qū)動程序用戶接口220包括3個附加的選項對話屬性圖表,即管理229、打印機230、和重定向231,它們分別對應(yīng)于策略管理插件模塊64、安裝插件模塊61、和工作重定向插件模塊62。以此方式,這3個附加的對話屬性圖表中的每一個的選項對話屬性圖表是由它們的對應(yīng)的插件經(jīng)過user_interface_mod51提供的,不需要修改、重新編譯和檢驗user_interface_mod51。
圖9是一個流程圖,用于說明按照本發(fā)明的插件模塊的識別和注冊。在步驟S901中,計算機10的用戶訪問插件模塊注冊應(yīng)用程序74。就此而論,這里所述的用戶可以是負(fù)責(zé)計算機10的配置和維護的系統(tǒng)管理人員,或者簡單地就是計算機10的使用者。如以上所述,對于插件模塊注冊應(yīng)用程序74的訪問以及將其裝入硬盤13的存儲區(qū)60可以在安裝相應(yīng)的設(shè)備如打印機20的時候進(jìn)行,或者可以在期望向打印機20的打印機驅(qū)動程序50增加新功能的晚些時候進(jìn)行。例如,可以從管理人員為打印機20的提供的一個安裝文件訪問插件模塊注冊應(yīng)用程序74,這個文件例如可以在CD-ROM上、或經(jīng)過在連接1上的網(wǎng)頁來自于web網(wǎng)頁,或者來自于硬盤13、或者來自于其它的存儲媒介。在這種情況下,插件模塊注冊應(yīng)用程序74最好也安裝有打印機驅(qū)動程序50的各個部件。還有,插件模塊注冊應(yīng)用程序74可以是與打印機20的初始安裝不相關(guān)的一個單獨的應(yīng)用程序,并且可以從web、CD-ROM、硬盤13、或其它存儲媒介下載。
優(yōu)選地,插件模塊注冊應(yīng)用程序74由安裝腳本構(gòu)成,當(dāng)然也可以使用編程的代碼。現(xiàn)在返回到附圖9,在步驟S902中,識別由插件模塊注冊應(yīng)用程序74提供的可利用的插件模塊,以在顯示器11上顯示。可利用的插件模塊的位置可以與插件模塊注冊應(yīng)用程序74訪問的插件模塊的位置相同,或者與來自于web的web網(wǎng)頁、CD-ROM、硬盤13、其它的存儲媒介的另外的位置相同。優(yōu)選地,可利用的插件模塊被排列并且可以基于打印機名稱、打印機類型、或某些其它參數(shù)進(jìn)行排序。在步驟S903中,確定是否已經(jīng)識別了任何一個可利用的插件模塊。如果沒有,流程在步驟S911返回。如果已經(jīng)識別并顯示了可利用的插件模塊,則在步驟S904選擇至少一個可利用的插件模塊安裝。就此而論,可利用的插件模塊的選擇可以是計算機10的用戶的手工選擇,或者也可以是基于在計算機10中已檢測到的打印機驅(qū)動程序50的類型的自動選擇。當(dāng)在安裝打印機20同時安裝插件模塊的時候,自動選擇可能是更加有用。
在步驟S905中,對于選定的插件模塊從其來源處進(jìn)行復(fù)制,并且將其存儲在硬盤13的存儲區(qū)60,訪問注冊表41以便為選定的插件模塊的注冊作好準(zhǔn)備。在步驟S906中,確定在注冊表41中是否已經(jīng)注冊了一個預(yù)先存在的插件模塊,這個預(yù)先存在的插件模塊與選定的插件模塊具有相同的類型或相同的名稱。如果是,則流程前進(jìn)到步驟S907,將這個情況通知計算機10的用戶,然后在步驟908中確定是否已經(jīng)指示用戶通過替換(或改名)預(yù)先存在的插件模塊來安裝選定的插件模塊。如果用戶選擇了替換(或改名),則流程前進(jìn)到步驟S909,刪除或改名預(yù)先存在的插件模塊,這是一種可能的情況。然后流程前進(jìn)到步驟S910。另一方面,如果在步驟S908確定用戶沒有指示通過替換或改名所述的預(yù)先存在的插件模塊來安裝選定的插件模塊,則流程在步驟S911返回。
如果在步驟S906確定具有與選定的插件模塊相同的類型或相同的名稱的預(yù)先存在的插件模塊還沒有在注冊表41中注冊,則流程直接前進(jìn)到步驟S910。然后,將用于選定的插件模塊的一個識別符輸入到注冊表41中,這個識別符與由選定的插件模塊支持的設(shè)備(在這種情況下是打印機20)的注冊項相對應(yīng)(步驟S910)。所述的識別符可以在基于設(shè)備識別符的注冊項輸入,例如輸入到如圖2所示的注冊表41中,或者可以基于設(shè)備類型、用戶名、或計算機名的注冊項輸入,只要user_interface_mod51能夠基于這些注冊項類型搜尋已注冊的插件模塊就成。流程在步驟S911返回。以此方式,在相應(yīng)的設(shè)備安裝時,或者是在安裝后的某個時間,插件模塊的訪問、安裝、和注冊都很容易,因而可以為設(shè)備的設(shè)備驅(qū)動程序提供新的功能,而不必修改、重新編譯和重新檢驗設(shè)備驅(qū)動程序圖10是一個流程圖,用于說明操作系統(tǒng)40與打印機驅(qū)動程序50的user_interface_mod51的相互作用,以及與按照本發(fā)明的一個實施例的多個插件模塊的相互作用。在步驟S1001中,操作系統(tǒng)40接收一個用戶請求,為打印機驅(qū)動程序50顯示用戶接口的主對話屬性圖表。在步驟S1002,操作系統(tǒng)40響應(yīng)于顯示主對話屬性圖表的用戶請求,向user_interface_mod51發(fā)送一個初始化調(diào)用程序。user_interface_mod51然后搜尋注冊表41,以檢測已注冊的與打印機20相對應(yīng)的插件模塊。在步驟S1004中,確定在步驟中是否檢測到任何已注冊的插件模塊。如果沒有檢測到任何一個,則流程在步驟S1019返回。如果檢測到插件模塊,則流程前進(jìn)到步驟S1005,user_interface_mod51通過使用信息指針從每個已檢測到的插件模塊獲得對應(yīng)于選項對話屬性圖表的信息和屬性,如以上所述。
接下去,在步驟S1006,user_interface_mod51向操作系統(tǒng)40傳送已獲得的信息和屬性,以及由user_interface_mod51內(nèi)在支持的靜態(tài)的選項對話屬性圖表的信息和屬性。在步驟S1007中,操作系統(tǒng)40在計算機10的顯示器11上繪制打印機驅(qū)動程序用戶接口的主對話屬性圖表,其中的主對話屬性圖表具有標(biāo)簽,用于訪問從已檢測到的插件模塊獲得的其它選項對話屬性圖表。在步驟S1008中,操作系統(tǒng)40接收一個請求,用于顯示從已檢測到的插件模塊獲得的其它選項對話屬性圖表之一。在步驟S1009中,操作系統(tǒng)40顯示從已檢測到的插件模塊之一獲得的被用戶請求的選項對話屬性圖表。在步驟S1010中,操作系統(tǒng)40接收一個請求,利用由已顯示的選項對話屬性圖表支持的一個功能,并且操作系統(tǒng)40在步驟S1011向user_interface_mod51發(fā)送這個功能請求。
在步驟S1012中,user_interface_mod51使用一個功能指針訪問和執(zhí)行在對應(yīng)于已接收了功能請求的選項對話屬性圖表的插件模塊中的功能代碼。以此方式,插件模塊實現(xiàn)了并非由打印機驅(qū)動程序50的user_interface_mod51內(nèi)在支持的功能。在步驟S1013中,確定是否有更多的插件模塊要合并入user_interface_mod51,如果是,則流程前進(jìn)到步驟S1005,以獲得其它插件模塊的信息。如果不是,則流程直接前進(jìn)到步驟S1014,操作系統(tǒng)40從用戶接收一個打印請求,通過打印機20打印圖像數(shù)據(jù)。在步驟S1015中,操作系統(tǒng)40向打印機驅(qū)動程序50發(fā)送打印請求,并且在步驟S1016中,使圖像數(shù)據(jù)進(jìn)入打印工作,發(fā)送打印工作到打印機20打印。在步驟S1017中,user_interface_mod51從操作系統(tǒng)40接收有關(guān)打印機20的狀態(tài)的一個事件通知,然后在步驟S1018中,user_interface_mod51向適當(dāng)?shù)牟寮K發(fā)送事件通知供它們使用。流程在步驟S1019返回。
以此方式,操作系統(tǒng)、設(shè)備驅(qū)動程序、和驅(qū)動器插件模塊一起以協(xié)調(diào)的方式發(fā)揮功能,從而可以向設(shè)備驅(qū)動程序提供附加的功能,而不必修改、重新編譯和重新檢驗設(shè)備驅(qū)動程序。
應(yīng)該理解,除了打印機驅(qū)動程序外,對于支持其它類型設(shè)備的設(shè)備驅(qū)動程序的功能能力的擴展,都可以實現(xiàn)本發(fā)明。此外,除了這里說明的計算設(shè)備、計算環(huán)境、和操作系統(tǒng)以外,在其它類型的計算設(shè)備和計算環(huán)境中利用其它形式的操作系統(tǒng)也可以實現(xiàn)本發(fā)明。此外,除了這里說明的情況以外,還可以用軟件和指令的形式實現(xiàn)這里描述的軟件模塊的功能方面、功能、程序、應(yīng)用程序、和其它文件。
已經(jīng)利用具體的說明性的實施例描述了本發(fā)明。但應(yīng)該理解的是,本發(fā)明不局限于此,且在不脫離本發(fā)明的構(gòu)思和范圍的條件下本領(lǐng)域的普通技術(shù)人員還可以做出各種變化與修改。具體來說,并且如以上所述,可以利用本發(fā)明管理各種各樣的網(wǎng)絡(luò)設(shè)備,而不僅僅是網(wǎng)絡(luò)打印機。
權(quán)利要求
1.一種信息設(shè)備,所述的信息設(shè)備存儲打印機驅(qū)動程序的用戶接口程序,用于通過執(zhí)行一個操作系統(tǒng)的計算設(shè)備來支持打印機的使用,用戶接口程序由信息設(shè)備執(zhí)行以實現(xiàn)被操作系統(tǒng)調(diào)用的初始化裝置,借此,初始化裝置檢測在操作系統(tǒng)的系統(tǒng)注冊表中的一個驅(qū)動器插件識別符,訪問一個存儲器并在存儲器中裝入與所述的驅(qū)動器插件識別符對應(yīng)的驅(qū)動器插件程序,獲得從驅(qū)動器插件程序到該驅(qū)動器插件程序內(nèi)的信息功能調(diào)用的指針,執(zhí)行信息功能調(diào)用以從驅(qū)動器插件程序接收信息,在一個本地數(shù)據(jù)結(jié)構(gòu)中存儲已接收的信息,并且通過使用操作系統(tǒng)功能調(diào)用向操作系統(tǒng)傳送所接收的信息的一部分。
2.根據(jù)權(quán)利要求1所述的信息設(shè)備,進(jìn)一步包括一個操作裝置,所述的操作裝置通過使用在接收的信息中提供的功能指針來訪問和執(zhí)行驅(qū)動器插件程序的功能指針,從操作系統(tǒng)接收對應(yīng)于由打印機進(jìn)行的打印工作的事件通知,并且在接收的信息中提供的客戶請求指示器表明的驅(qū)動器插件程序接收了事件通知的情況下,向驅(qū)動器插件程序傳送事件通知。
3.一種信息設(shè)備,所述的信息設(shè)備在一個存儲器中存儲一個驅(qū)動器插件程序,該驅(qū)動器插件程序由借助于執(zhí)行操作系統(tǒng)的一個計算設(shè)備支持使用打印機的打印機驅(qū)動程序的用戶接口程序使用,所述的驅(qū)動器插件程序?qū)崿F(xiàn)具有可執(zhí)行代碼的一個功能裝置,所述的可執(zhí)行代碼支持與功能應(yīng)用程序?qū)?yīng)的至少一個對話屬性圖表;和包括資源信息的一個資源裝置,所述的資源信息包括由驅(qū)動器插件程序支持的一系列對話屬性圖表,由驅(qū)動器插件程序支持的每個對話屬性圖表的類型,由驅(qū)動器插件程序支持的每個對話屬性圖表的屬性,指向信息功能調(diào)用的一個信息指針,以及指向事件處理程序的一個事件指針,借此,信息指針由用戶接口程序訪問,以啟動信息功能調(diào)用,所述的信息功能調(diào)用向用戶接口程序返回一個與資源部分的資源信息對應(yīng)的資源指針,并且功能指針對應(yīng)于功能部分的可執(zhí)行代碼。
4.根據(jù)權(quán)利要求3所述的信息設(shè)備,其中事件指針由用戶接口程序使用,以啟動事件處理程序,事件處理程序?qū)⑼ㄟ^用戶接口程序接收的事件通知從操作系統(tǒng)傳送到驅(qū)動器插件程序,對應(yīng)于打印工作狀態(tài)的事件通知由打印機執(zhí)行。
5.一種設(shè)備,該設(shè)備可以注冊為一種驅(qū)動器插件程序,該驅(qū)動器插件程序可以由設(shè)備驅(qū)動器的設(shè)備驅(qū)動程序使用,該驅(qū)動器插件程序通過計算設(shè)備支持使用一臺外部設(shè)備,所述的設(shè)備包括用于識別定位在外部源的至少一個可利用的驅(qū)動器插件程序的識別裝置;用于選擇至少一個可利用的驅(qū)動器插件程序以安裝在計算設(shè)備上的選擇裝置;安裝裝置,用于通過在計算設(shè)備的一個存儲器中存儲每個選定的驅(qū)動器插件程序在計算設(shè)備上安裝每個選定的驅(qū)動器插件程序,并且用于在計算設(shè)備上正在執(zhí)行的操作系統(tǒng)的系統(tǒng)注冊表中輸入對應(yīng)于每個選定的驅(qū)動器插件程序的一個識別符。
6.根據(jù)權(quán)利要求5所述的設(shè)備,其中的設(shè)備是由為安裝設(shè)備驅(qū)動程序提供的安裝腳本控制的。
7.根據(jù)權(quán)利要求5所述的設(shè)備,進(jìn)一步包括用于控制在顯示器上顯示的驅(qū)動器的用戶接口的內(nèi)容的控制裝置,從而使在所述的用戶接口中選項圖表的數(shù)目隨著新的插件程序的安裝而有所增加。
8.根據(jù)權(quán)利要求5所述的設(shè)備,其中的設(shè)備是由一個應(yīng)用程序控制的。
9.根據(jù)權(quán)利要求8所述的設(shè)備,其中的應(yīng)用程序是從一個網(wǎng)頁訪問的。
10.根據(jù)權(quán)利要求5所述的設(shè)備,其中將每個識別符輸入到與外部設(shè)備的名稱對應(yīng)的系統(tǒng)注冊表位置。
11.根據(jù)權(quán)利要求5所述的設(shè)備,其中將每個識別符輸入到與用戶名字對應(yīng)的系統(tǒng)注冊表位置。
12.根據(jù)權(quán)利要求6所述的設(shè)備,其中將每個識別符輸入到與計算設(shè)備的名稱對應(yīng)的系統(tǒng)注冊表位置。
13.一種信息設(shè)備,所述的信息設(shè)備存儲設(shè)備驅(qū)動器的設(shè)備驅(qū)動程序,用于通過執(zhí)行一個操作系統(tǒng)的計算設(shè)備來支持外部設(shè)備的使用,執(zhí)行設(shè)備驅(qū)動程序以實現(xiàn)一個初始化裝置,所述的初始化裝置由操作系統(tǒng)調(diào)用,借此,初始化裝置檢測驅(qū)動器插件程序的存在、從已檢測到的驅(qū)動器插件程序獲得信息、并且將已獲得的驅(qū)動器插件程序傳送到操作系統(tǒng);和一個操作裝置,所述的操作裝置訪問和執(zhí)行已檢測到的驅(qū)動器插件程序的功能部分、從操作系統(tǒng)接收對應(yīng)于外部設(shè)備的事件通知、并且在已檢測到的驅(qū)動器插件程序接受事件通知的情況下將事件通知傳送到已檢測到的驅(qū)動器插件程序。
14.一種用于注冊由設(shè)備驅(qū)動器的設(shè)備驅(qū)動程序使用的驅(qū)動器插件程序的方法,所述的設(shè)備驅(qū)動程序通過計算設(shè)備支持使用一臺外部設(shè)備,所述的注冊方法包括如下步驟識別定位在外部源的至少一個可利用的驅(qū)動器插件程序;選擇至少一個可利用的驅(qū)動器插件程序以安裝在計算設(shè)備上;通過在計算設(shè)備的一個存儲器中存儲每個選定的驅(qū)動器插件程序在計算設(shè)備上安裝每個選定的驅(qū)動器插件程序;和在正在計算設(shè)備上執(zhí)行的操作系統(tǒng)的系統(tǒng)注冊表中輸入對應(yīng)于每個選定的驅(qū)動器插件程序的一個識別符。
15.根據(jù)權(quán)利要求14所述的方法,其中所述的方法是通過為安裝設(shè)備驅(qū)動程序而提供的安裝腳本實現(xiàn)的。
16.根據(jù)權(quán)利要求14所述的方法,進(jìn)一步包括如下步驟控制在顯示器上顯示的驅(qū)動器的用戶接口的內(nèi)容,從而使在所述的用戶接口中選項圖表的數(shù)目隨著新的插件程序的安裝而有所增加。
17.根據(jù)權(quán)利要求14所述的方法,其中所述的方法是通過應(yīng)用程序?qū)崿F(xiàn)的。
18.根據(jù)權(quán)利要求17所述的方法,其中所述的應(yīng)用程序是從網(wǎng)頁訪問的。
19.根據(jù)權(quán)利要求14所述的方法,其中將每個識別符輸入到與外部設(shè)備的名稱對應(yīng)的系統(tǒng)注冊表位置。
20.根據(jù)權(quán)利要求14所述的方法,其中將每個識別符輸入到與用戶名字對應(yīng)的系統(tǒng)注冊表位置。
21.根據(jù)權(quán)利要求14所述的設(shè)備,其中將每個識別符輸入到與計算設(shè)備的名稱對應(yīng)的系統(tǒng)注冊表位置。
22.根據(jù)權(quán)利要求14所述的方法,其中將每個識別符輸入到與外部設(shè)備的類型對應(yīng)的系統(tǒng)注冊表位置。
23.在計算機可讀介質(zhì)上存儲的計算機可執(zhí)行的方法步驟,所述的計算機可執(zhí)行的方法步驟用于注冊供設(shè)備驅(qū)動器的設(shè)備驅(qū)動程序使用的驅(qū)動器插件程序,所述的設(shè)備驅(qū)動程序通過計算設(shè)備支持外部設(shè)備的使用,所述的計算機可執(zhí)行的方法步驟包括為實現(xiàn)根據(jù)權(quán)利要求14-22中任何一個所述的方法可執(zhí)行的方法步驟。
24.一種計算機可讀介質(zhì),所述的計算機可讀介質(zhì)存儲計算機可執(zhí)行的方法步驟,所述的計算機可執(zhí)行的方法步驟用于注冊供設(shè)備驅(qū)動器的設(shè)備驅(qū)動程序使用的驅(qū)動器插件程序,設(shè)備驅(qū)動程序通過計算設(shè)備支持外部設(shè)備的使用,所述的計算機可執(zhí)行的方法步驟包括為實現(xiàn)根據(jù)權(quán)利要求14-22中任何一個所述的方法可執(zhí)行的方法步驟
全文摘要
一種信息設(shè)備,所述的信息設(shè)備存儲打印機驅(qū)動程序的用戶接口程序,用于通過執(zhí)行一個操作系統(tǒng)的計算設(shè)備來支持打印機的使用,用戶接口程序由信息設(shè)備執(zhí)行以實現(xiàn)被操作系統(tǒng)調(diào)用的初始化設(shè)備,借此,初始化設(shè)備檢測在操作系統(tǒng)的系統(tǒng)注冊表中的一個驅(qū)動器插件識別符,訪問一個存儲器并在存儲器中裝入與所述的驅(qū)動器插件識別符對應(yīng)的驅(qū)動器插件程序,獲得從驅(qū)動器插件程序到該驅(qū)動器插件程序內(nèi)的信息功能調(diào)用的指針,執(zhí)行信息功能調(diào)用以從驅(qū)動器插件程序接收信息,在一個本地數(shù)據(jù)結(jié)構(gòu)中存儲已接收的信息,并且通過使用操作系統(tǒng)功能調(diào)用向操作系統(tǒng)傳送所接收的信息的一部分。
文檔編號G06F3/12GK1455331SQ03136788
公開日2003年11月12日 申請日期2003年4月23日 優(yōu)先權(quán)日2002年4月23日
發(fā)明者德翁·詹姆斯·肯普, 克里斯托弗·約漢·卡塞拉諾 申請人:佳能株式會社