專利名稱:信息處理裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種信息處理裝置,該信息處理裝置用于獲取將被打印或傳輸?shù)奈臋n數(shù)據(jù),并且將此文檔數(shù)據(jù)傳送至打印設(shè)備。
背景技術(shù):
用戶經(jīng)常會(huì)用計(jì)算機(jī)執(zhí)行諸如文件生成軟件、電子制表軟件、以及圖像編輯軟件等的多種應(yīng)用程序(在下文中,簡(jiǎn)稱為“應(yīng)用程序”),并且執(zhí)行打印和傳真?zhèn)鬏?。在這些情況下,需要在操作系統(tǒng)(OS)上執(zhí)行驅(qū)動(dòng)(程序),用于控制打印設(shè)備和傳真設(shè)備,從而使得控制打印設(shè)備和傳真設(shè)備所必須的處理與上述的應(yīng)用程序分離。通過(guò)以下的流程執(zhí)行打印機(jī)驅(qū)動(dòng)和PC-FAX驅(qū)動(dòng)的打印和傳真?zhèn)鬏敗?.用戶從應(yīng)用程序的打印菜單中顯示打印設(shè)置窗口,并且確定打印設(shè)置。2.用戶向此應(yīng)用程序發(fā)出指令以開始打印。打印機(jī)驅(qū)動(dòng)在步驟2接收在步驟I確定的打印設(shè)置,并且基于打印設(shè)置將接收自應(yīng)用程序的文檔數(shù)據(jù)轉(zhuǎn)換成能被打印機(jī)理解的打印數(shù)據(jù)。打印機(jī)獲取打印數(shù)據(jù)并且執(zhí)行打印和傳真?zhèn)鬏?。然而,在上述的操作順序中,假定在用戶給出開始打印的指令之后不可能再改變打印設(shè)置。因此,提議需要一種技術(shù)使得用戶可以在給出開始打印的指令之后還可以再改變打印設(shè)置(例如,參見專利文獻(xiàn)I)。(A.)為了描述該傳統(tǒng)技術(shù)的目的,首先說(shuō)明Windows (注冊(cè)商標(biāo),在下文中,“ ”)的打印架構(gòu),在Windows 的打印架構(gòu)中,利用API將來(lái)自應(yīng)用程序的打印設(shè)置和打印開始指令的命令報(bào)告給OS的⑶I。⑶I是OS的一部分。通過(guò)DDI將打印設(shè)置和打印開始指令的命令從⑶I報(bào)告給打印機(jī)驅(qū)動(dòng)和PC-FAX驅(qū)動(dòng)。DDI只定義I/F,因此DDI中的實(shí)現(xiàn)方法可以由各廠商(打印機(jī)驅(qū)動(dòng)和PC-FAX驅(qū)動(dòng))自由地定義。通過(guò)執(zhí)行在打印過(guò)程中被調(diào)用的DDI,能夠顯示一個(gè)對(duì)話框。在打印過(guò)程中被調(diào)用的 DDI 的名稱是 “DrvDocumentEvent O ”。通過(guò)利用DDI,可以在用戶給出打印開始指令之后且在向打印機(jī)傳送數(shù)據(jù)之前顯示一個(gè)對(duì)話框。這種技術(shù)用于強(qiáng)制用戶在每次執(zhí)行打印時(shí)輸入密碼并指定傳真?zhèn)鬏數(shù)牡刂?。在下文中,將以安裝在打印機(jī)驅(qū)動(dòng)中的機(jī)密打印功能和安裝在PC-FAX驅(qū)動(dòng)中的地址確認(rèn)功能為例來(lái)說(shuō)明具體的實(shí)例。圖1示出了打印機(jī)驅(qū)動(dòng)的機(jī)密打印功能的屏幕示例。在開始打印指令之后,通過(guò)機(jī)密打印功能,要求用戶輸入用戶ID和密碼。用戶不能按確定按鈕501除非用戶輸入了用戶ID和密碼。當(dāng)用戶輸入用戶ID和密碼并且按確定按鈕501之后,用戶ID和密碼被傳送到打印機(jī)。在打印機(jī)的主單元中,預(yù)先注冊(cè)了用戶ID和密碼的組合,并且,除非輸入的用戶ID和密碼和其中的一個(gè)組合相匹配,否則打印機(jī)不會(huì)執(zhí)行打印。在機(jī)密打印功能中,為了進(jìn)一步增加安全性,可能要求用戶在每次執(zhí)行打印時(shí)輸入密碼。當(dāng)用戶按取消按鈕502時(shí),取消打印。
圖2示出了 PC-FAX驅(qū)動(dòng)的地址確認(rèn)功能的屏幕示例。在給出打印開始指令之后,PC-FAX驅(qū)動(dòng)顯示如圖2所示的對(duì)話框,并且要求用戶輸入傳真地址(傳真號(hào)碼)。在傳真?zhèn)鬏斨?,每次傳送傳真時(shí)地址一般是不相同,因此PC-FAX驅(qū)動(dòng)顯示這樣的屏幕來(lái)防止錯(cuò)誤傳輸。當(dāng)用戶輸入傳真號(hào)碼并且按發(fā)送按鈕503時(shí),圖像數(shù)據(jù)被發(fā)送到傳真設(shè)備,然后傳真設(shè)備傳輸傳真。當(dāng)用戶按取消按鈕504時(shí),取消傳真?zhèn)鬏?。在Windows 的打印機(jī)制中,當(dāng)使用打印機(jī)驅(qū)動(dòng)進(jìn)行打印時(shí)使用兩種spool格式(spool format),也就是,RAW SPOOL格式和EMF SPOOL格式。在應(yīng)用程序的處理中,RAWSPOOL格式用于通過(guò)將由打印機(jī)驅(qū)動(dòng)從應(yīng)用程序獲取的文檔數(shù)據(jù)轉(zhuǎn)換成打印機(jī)可以理解的RAW數(shù)據(jù)而執(zhí)行打印處理。從用戶的角度來(lái)看,用戶不能操作應(yīng)用程序,直到完成了打印處理。在EMF SPOOL格式中,將由OS從應(yīng)用程序獲取的文檔數(shù)據(jù)轉(zhuǎn)換成不依賴于打印機(jī)的EMF數(shù)據(jù)格式,并且該數(shù)據(jù)在應(yīng)用程序的處理中被假脫機(jī)(spooled)。然后,打印機(jī)驅(qū)動(dòng)執(zhí)行如下的打印處理:將在假脫機(jī)程 序處理中已經(jīng)被假脫機(jī)的EMF數(shù)據(jù)轉(zhuǎn)換成能夠被打印機(jī)理解的RAW數(shù)據(jù)。從用戶的角度來(lái)看,當(dāng)完成了應(yīng)用程序處理中的將數(shù)據(jù)轉(zhuǎn)換成EMF數(shù)據(jù)時(shí),可以操作應(yīng)用程序。在兩者的任何一種機(jī)制中,作為實(shí)施DDI的方法,可以在開始打印之后通過(guò)顯示對(duì)話框來(lái)顯示打印設(shè)置屏幕。然而,僅僅通過(guò)從OS調(diào)用的DDI不能實(shí)現(xiàn)將用戶改變的打印設(shè)置應(yīng)用到打印數(shù)據(jù)中的機(jī)制。打印機(jī)驅(qū)動(dòng)包括:UI驅(qū)動(dòng),用于通過(guò)與用戶的交互而確定打印設(shè)置;以及,渲染驅(qū)動(dòng)(render driver),用于基于打印設(shè)置將從應(yīng)用程序接收到的文檔數(shù)據(jù)轉(zhuǎn)換成可以被計(jì)算機(jī)理解的數(shù)據(jù)格式的打印數(shù)據(jù)。渲染驅(qū)動(dòng)通過(guò)OS的系統(tǒng)權(quán)限而操作,因此顯示對(duì)話框降低了對(duì)于OS的兼容性。因此,為了(在打印過(guò)程中)在給出打印開始指令之后改變打印設(shè)置,使用包括在Π驅(qū)動(dòng)中的DDI的DrvDocumentEventO來(lái)顯示對(duì)話框。該DDI是在渲染驅(qū)動(dòng)執(zhí)行打印時(shí)調(diào)用的UI驅(qū)動(dòng)的DDI。通過(guò)與應(yīng)用程序相同的權(quán)限來(lái)操作UI驅(qū)動(dòng),因此不會(huì)降低對(duì)于OS的兼容性。然而,渲染驅(qū)動(dòng)和Π驅(qū)動(dòng)是不同的模塊,不能彼此直接通信以交換信息?;旧?,僅僅從OS中將驅(qū)動(dòng)調(diào)用為DDI。以上描述了 Windows 的打印的處理流程,因此當(dāng)用戶想要在給出打印開始指令之后并且在數(shù)據(jù)被輸出到打印機(jī)之前通過(guò)顯示對(duì)話框來(lái)改變打印設(shè)置時(shí),很難實(shí)施這種改變。在專利文獻(xiàn)I中,為了解決上述的問(wèn)題,執(zhí)行如下的一種方法:暫時(shí)地將打印已經(jīng)開始之后改變的數(shù)據(jù)輸出到文件。(B.)接下來(lái),將描述安裝打印機(jī)驅(qū)動(dòng)或或PC-FAX驅(qū)動(dòng)的方法與在已經(jīng)開始打印之后進(jìn)行打印設(shè)置之間的關(guān)系。對(duì)于Windows 的打印機(jī)驅(qū)動(dòng),存在被稱為point&print的安裝方法。圖3示意性地示出了 point&print。打印機(jī),服務(wù)器PC以及客戶端PC連接至網(wǎng)絡(luò)。在服務(wù)器PC和客戶端PC中,安裝Windows 的OS (用于服務(wù)器PC的服務(wù)器的OS)??蛻舳薖C能夠使用服務(wù)器PC作為打印機(jī)服務(wù)器從而向打印機(jī)進(jìn)行打印請(qǐng)求。在這種系統(tǒng)中,需要在客戶端PC中安裝與服務(wù)器PC中的打印機(jī)驅(qū)動(dòng)相同的打印機(jī)驅(qū)動(dòng)。因此,需要高成本地使管理員在網(wǎng)絡(luò)中的每個(gè)客戶端PC中安裝打印機(jī)驅(qū)動(dòng)。作為解決上述問(wèn)題的手段,在point&print中,可以從服務(wù)器PC下載并安裝打印機(jī)驅(qū)動(dòng)到客戶端PC中。這是Windows 系統(tǒng)中的OS的標(biāo)準(zhǔn)功能。當(dāng)通過(guò)point&print執(zhí)行打印處理時(shí),使用RAW spool格式和EMF spool格式。利用已經(jīng)通過(guò)point&print安裝的打印機(jī)驅(qū)動(dòng)(在EMF SPOOL的情況下),用戶能夠改變PC (客戶端PC或者服務(wù)器PC)用于執(zhí)行渲染操作(由渲染驅(qū)動(dòng)執(zhí)行)。在客戶端PC側(cè)上執(zhí)行的渲染處理被稱為“客戶端側(cè)渲染”,在服務(wù)器PC側(cè)上執(zhí)行的渲染處理被稱為“月艮務(wù)器側(cè)渲染”。然而,在使用臨時(shí)文件的方法中,取決于操作打印機(jī)驅(qū)動(dòng)的時(shí)機(jī)和用戶的權(quán)限水平,可能不能保證打印機(jī)驅(qū)動(dòng)總是將信息輸出到臨時(shí)文件。即使信息被輸出到臨時(shí)文件,在操作多個(gè)應(yīng)用程序的情況下,設(shè)置可能被重寫。圖4示意性地示出了臨時(shí)文件和多個(gè)應(yīng)用程序之間的關(guān)系。應(yīng)用程序I和2操作在相同的PC上,并且能夠打印文檔數(shù)據(jù)。(I)為響應(yīng)于接收自應(yīng)用程序I的請(qǐng)求,UI驅(qū)動(dòng)將設(shè)置寫進(jìn)臨時(shí)文件。(2)為響應(yīng)于接收自應(yīng)用程序2的請(qǐng)求,UI驅(qū)動(dòng)將設(shè)置寫進(jìn)臨時(shí)文件。(3)當(dāng)渲染驅(qū)動(dòng)響應(yīng)接收來(lái)自于應(yīng)用程序I的請(qǐng)求而從臨時(shí)文件中讀取設(shè)置時(shí),臨時(shí)文件中的內(nèi)容已經(jīng)改變。為了解決上述的問(wèn)題 ,打印設(shè)置不被保存在臨時(shí)文件中,取而代之,打印設(shè)置被保存在打印設(shè)置存儲(chǔ)模塊。然而,即使通過(guò)上述的方法,也存在無(wú)法解決問(wèn)題的兩種情況。針對(duì)(A.):在EMF SPOOL中的打印順序的情況針對(duì)(B.):在安裝有point&print的打印驅(qū)動(dòng)的打印順序的情況。針對(duì)(A.)使用打印設(shè)置存儲(chǔ)模塊的方法當(dāng)打印時(shí)使用DDI調(diào)用順序,其可以在RAW SPOOL時(shí)完成。然而,在不同的spool格式中,從OS中調(diào)用的DDI調(diào)用順序改變。在EMF SPOOL中,存在如下的處理:將來(lái)自應(yīng)用程序的文檔數(shù)據(jù)轉(zhuǎn)換成EMF數(shù)據(jù)的處理,以及將EMF數(shù)據(jù)轉(zhuǎn)換成能被打印機(jī)理解的渲染數(shù)據(jù)的處理。因此作為OS內(nèi)部的操作,需要操作這兩種打印處理順序。結(jié)果,DDI調(diào)用順序變得比RAW SPOOL更加復(fù)雜,因此不能在期望的時(shí)機(jī)忽略打印設(shè)置。針對(duì)(B.)在本地環(huán)境下能夠?qū)崿F(xiàn)使用打印設(shè)置存儲(chǔ)模塊的方法,其中打印機(jī)驅(qū)動(dòng)安裝在用戶使用的PC中。然而,利用point&print的安裝格式,UI驅(qū)動(dòng)和渲染驅(qū)動(dòng)通過(guò)用戶的設(shè)置能夠在不同的位置操作(服務(wù)器側(cè)渲染)。在客戶端側(cè)渲染中,Π驅(qū)動(dòng)和渲染驅(qū)動(dòng)都在客戶端PC側(cè)操作。然而,在服務(wù)器側(cè)渲染中,Π驅(qū)動(dòng)在客戶端PC側(cè)操作,而渲染驅(qū)動(dòng)在服務(wù)器PC側(cè)操作。在服務(wù)器側(cè)渲染中,操作中的PC是物理上不同的PC,因此打印設(shè)置存儲(chǔ)模塊只出現(xiàn)在客戶端側(cè)PC。在這種情況下,服務(wù)器的渲染驅(qū)動(dòng)不能從打印設(shè)置存儲(chǔ)模塊獲得打印設(shè)置。圖5示出了在打印開始后不能改變打印設(shè)置的情況的列表。如上所述,在安裝環(huán)境是本地并且spool格式是EMF SPOOL的情況下,以及在安裝環(huán)境是point&print、spool格式是EMF SPOOL且渲染位置是服務(wù)器的情況下,很難在開始打印之后改變打印設(shè)置。專利文獻(xiàn)1:日本公開專利公報(bào)N0.2010-066876。
發(fā)明內(nèi)容
本發(fā)明提供一種信息處理裝置和系統(tǒng),其中能消除上述的一個(gè)或以上的缺點(diǎn)。本發(fā)明的優(yōu)選實(shí)施例提供一種信息處理裝置和系統(tǒng),其中,無(wú)論打印機(jī)驅(qū)動(dòng)的安裝環(huán)境或spool格式如何不同,都能夠在已經(jīng)開始打印之后改變打印設(shè)置。根據(jù)本發(fā)明的一個(gè)方面,提供一種信息處理裝置,包括:操作接收單元,被配置成接收操作;設(shè)置接收單元,被配置成在所述操作接收單元接收到開始打印指令或開始傳送指令之后,顯示用于打印或傳送的設(shè)置條件,并且接收對(duì)所述設(shè)置條件的改變;圖像處理單元,被配置成從文檔數(shù)據(jù)提供單元獲取作為打印目標(biāo)或傳送目標(biāo)的文檔數(shù)據(jù),并且根據(jù)所述設(shè)置條件將所述文檔數(shù)據(jù)轉(zhuǎn)換成打印設(shè)備的打印數(shù)據(jù);以及,設(shè)置條件存儲(chǔ)單元,在該設(shè)置條件存儲(chǔ)單元中,經(jīng)過(guò)操作系統(tǒng)通過(guò)使用由所述設(shè)置接收單元獲取的識(shí)別信息作為密鑰來(lái)存儲(chǔ)所述設(shè)置條件,其中所述識(shí)別信息識(shí)別打印處理或傳送處理并且由所述操作系統(tǒng)根據(jù)所述開始打印指令或開始傳送指令而生成,其中,所述圖像處理單元從所述操作系統(tǒng)中獲取所述識(shí)別信息,并且通過(guò)使用所述識(shí)別信息作為密鑰經(jīng)由所述操作系統(tǒng)從所述設(shè)置條件存儲(chǔ)單元讀取所述設(shè)置條件,并且基于所述設(shè)置條件將所述文檔數(shù)據(jù)轉(zhuǎn)換成所述打印設(shè)備的打印數(shù)據(jù)。根據(jù)本發(fā)明的一個(gè)方面,提供一種系統(tǒng),在該系統(tǒng)中第一信息處理裝置、第二信息處理裝置以及打印設(shè)備通過(guò)網(wǎng)絡(luò)連接,所述系統(tǒng)包括:操作接收單元,被配置成接收操作;設(shè)置接收單元,被配置成在所述操作接收單元接收到開始打印指令或開始傳送指令之后,顯示用于打印或傳送的設(shè)置條件,并且接收對(duì)所述設(shè)置條件的改變;圖像處理單元,被配置成從文檔數(shù)據(jù)提供單元獲取作為打印目標(biāo)或傳送目標(biāo)的文檔數(shù)據(jù),并且基于所述設(shè)置條件將所述文檔數(shù)據(jù)轉(zhuǎn)換成打印設(shè)備的打印數(shù)據(jù);以及設(shè)置條件存儲(chǔ)單元,被提供在所述第二信息處理裝置中,在所述設(shè)置條件存儲(chǔ)單元中,經(jīng)過(guò)所述第一信息處理裝置和所述第二信息處理裝置的操作系統(tǒng)通過(guò)使用由所述設(shè)置接收單元獲取的識(shí)別信息作為密鑰來(lái)存儲(chǔ)所述設(shè)置條件,其中所述識(shí)別信息識(shí)別打印處理或傳送處理并且由所述第二信息處理裝置的所述操作系統(tǒng)根據(jù)開始打印指令或開始傳送指令而生成,其中,所述圖像處理單元從所述第二信息處理裝置的所述操作系統(tǒng)中獲取所述識(shí)別信息,并且通過(guò)使用所述識(shí)別信息作為密鑰經(jīng)由至少所述第二信息處理裝置的所述操作系統(tǒng)從所述設(shè)置條件存儲(chǔ)單元讀取所述設(shè)置條件,并且基于所述設(shè)置條件將所述文檔數(shù)據(jù)轉(zhuǎn)換成所述打印設(shè)備的打印數(shù)據(jù)。根據(jù)本發(fā)明的一個(gè)方面,提供一種非瞬時(shí)的計(jì)算機(jī)可讀記錄介質(zhì),存儲(chǔ)使得包括用于接收操作的操作接收單元的信息處理裝置執(zhí)行如下的方法的程序,該方法包括:在所述操作接收單元接收開始打印指令或開始傳送指令之后,顯示用于打印或傳送的設(shè)置條件,并且接收對(duì)所述設(shè)置條件的改變;通過(guò)設(shè)置模塊來(lái)獲取識(shí)別信息,其中所述識(shí)別信息識(shí)別打印處理或傳送處理并且由操作系統(tǒng)根據(jù)開始打印指令或開始傳送指令生成;通過(guò)使用所述識(shí)別信息作為密鑰經(jīng)由所述操作系統(tǒng)在設(shè)置條件存儲(chǔ)單元中存儲(chǔ)所述設(shè)置條件;通過(guò)圖像處理模塊從所述操作系統(tǒng)獲取所述識(shí)別信息;通過(guò)所述圖像處理模塊,通過(guò)使用所述識(shí)別信息作為密鑰經(jīng)由所述操作系統(tǒng)從所述設(shè)置條件存儲(chǔ)單元中讀取所述設(shè)置條件;基于從所述設(shè)置條件存儲(chǔ)單元讀取的所述設(shè)置條件,通過(guò)所述圖像處理模塊將由文檔數(shù)據(jù)提供單元提供的作為打印目標(biāo)或傳送目標(biāo)的文檔數(shù)據(jù)傳換成打印設(shè)備的打印數(shù)據(jù)。
當(dāng)結(jié)合附圖閱讀時(shí),從以下的詳細(xì)描述,本發(fā)明的其他目的、特征和優(yōu)點(diǎn)變得更加清晰,其中:圖1示出了打印機(jī)驅(qū)動(dòng)的機(jī)密打印功能的屏幕示例;圖2示出了 PC-FAX驅(qū)動(dòng)的位置確定功能的屏幕示例;圖3示意性地示出了 point&print ;圖4示意性地示出了多個(gè)應(yīng)用程序和臨時(shí)文件之間的關(guān)系;圖5示出了在傳統(tǒng)技術(shù)中在打印開始后不能改變打印設(shè)置的情況的列表;圖6示意性地示出了打印機(jī)驅(qū)動(dòng)的特征;圖7A和與7B示意性地示出了打印系統(tǒng);圖8是PC和打印機(jī)驅(qū)動(dòng)的功能框圖;圖9示出了語(yǔ)言監(jiān)視器的操作;
圖10示出了在Windows .打印架構(gòu)下的渲染驅(qū)動(dòng)和UI驅(qū)動(dòng);圖11示出了 RAW SPOOL下的Windows 打印架構(gòu)的流程圖(傳統(tǒng)技術(shù));圖12是如圖1l所不的Windows .打印架構(gòu)的順序圖(傳統(tǒng)技術(shù));圖13表示EMF SPOOL下的Windows 打印架構(gòu)的流程圖(傳統(tǒng)技術(shù));圖14是如圖13所不的^ν ηοΙοΛ^ 打印架構(gòu)的順序圖(傳統(tǒng)技術(shù));圖15Α和15Β示出了 ExtEscape O函數(shù)的格式;圖16Α和16Β不出了 DrvDocumentEventO函數(shù)的格式和SendRecvBidiDataFromPort O 函數(shù)的格式;圖 17Α 和 17Β 示出了 PBIDI_REQUEST_CONTAINER 結(jié)構(gòu)的格式和 BIDI_REQUEST_DATA結(jié)構(gòu)的格式;圖18示意性示出了由OS分配的任務(wù)ID ;圖19示意性示出了存儲(chǔ)在語(yǔ)言監(jiān)視器中的打印設(shè)置和任務(wù)ID;圖20是RAW SPOOL的Windows 打印架構(gòu)的順序圖;圖21A和21B示出了 EMF SPOOL的Windows 打印架構(gòu)的順序圖;圖22示意性示出了包括point&print環(huán)境的打印系統(tǒng)的示例;圖23示出了在point&print環(huán)境下的語(yǔ)言監(jiān)視器的定位;圖24用于描述point&print環(huán)境下的任務(wù)ID ;圖25示意性示出了在point&print環(huán)境下的RAW SPOOL的打印過(guò)程;圖26示意性示出了在point&print環(huán)境下的EMF SPOOL (客戶端側(cè)渲染)的打印過(guò)程;以及圖27示意性示出了在point&print環(huán)境下的EMF SPOOL (服務(wù)器側(cè)渲染)的打印過(guò)程。
具體實(shí)施例方式參考附圖描述本發(fā)明的實(shí)施例。圖6示意性地示出了根據(jù)本實(shí)施例的打印機(jī)驅(qū)動(dòng)的特征。PC (個(gè)人電腦)100正在Windows 系統(tǒng)的OS 10上執(zhí)行應(yīng)用程序31。在Αιικ ον^ 系統(tǒng)的打印架構(gòu)下,由打印機(jī)根據(jù)如圖6所示的軟件層次結(jié)構(gòu)來(lái)打印應(yīng)用程序的又檔數(shù)據(jù)。在此情況下,不區(qū)分spool格式。Windows 系統(tǒng)的 OS 的客戶端系統(tǒng)包括Windows NT、Windows 98、Windows_ 2000、Windows Me, Windows(S)XP、Wi_ndows vista、Windows 7,
以及后來(lái)的任何版本的OS。服務(wù)器系統(tǒng)包括:Wiiidows 2000服務(wù)器、2003服務(wù)器、2008服務(wù)器以及后來(lái)的任何版本的OS。1.開始應(yīng)用程序打印處理2.應(yīng)用程序31調(diào)用OS的⑶I API (保留打印機(jī)設(shè)備上下文)3.打印機(jī)驅(qū)動(dòng)30生成渲染數(shù)據(jù)4.語(yǔ)言監(jiān)視器32執(zhí)行必要的處理5.端口監(jiān)視器33根據(jù)打印機(jī) 端口的類型(USB、TCP/IP等)執(zhí)行輸出處理6.渲染數(shù)據(jù)被送至打印機(jī)200。在本實(shí)施例中,在如上所述的打印架構(gòu)中,使用由OS (操作系統(tǒng))10產(chǎn)生的任務(wù)ID和語(yǔ)言監(jiān)視器32。OS 10將任務(wù)ID應(yīng)用到每個(gè)打印任務(wù)。任務(wù)ID被報(bào)告給打印機(jī)驅(qū)動(dòng)30。在Window s κ 統(tǒng)的OS中,打印機(jī)驅(qū)動(dòng)30可使用由OS 10提供的語(yǔ)言監(jiān)視器32或者由制造商(打印機(jī)制造商,傳真機(jī)制造商等)提供的語(yǔ)言監(jiān)視器32。在本實(shí)施例中,語(yǔ)言監(jiān)視器32不僅用作與端口監(jiān)視器33交互的接口,還用作存儲(chǔ)彼此關(guān)聯(lián)的打印設(shè)置和任務(wù)ID的部件。打印機(jī)驅(qū)動(dòng)30的Π驅(qū)動(dòng),將任務(wù)ID和從應(yīng)用程序獲取的打印設(shè)置一起報(bào)告給語(yǔ)言監(jiān)視器32。語(yǔ)言監(jiān)視器32彼此關(guān)聯(lián)地存儲(chǔ)打印設(shè)置和由OS生成的任務(wù)ID。語(yǔ)言監(jiān)視器32通過(guò)將任務(wù)ID用作密鑰來(lái)管理打印設(shè)置,因此打印設(shè)置不會(huì)被其他應(yīng)用程序蓋寫。此外,渲染驅(qū)動(dòng)通過(guò)指定任務(wù)ID來(lái)讀取打印設(shè)置,從而能夠從語(yǔ)言監(jiān)視器32中獲取由UI驅(qū)動(dòng)生成的打印設(shè)置。如上所述,渲染驅(qū)動(dòng)能夠唯一地識(shí)別打印設(shè)置。此外,語(yǔ)言監(jiān)視器32是Windows 系統(tǒng)OS的函數(shù),因此能夠用在point&print環(huán)境的服務(wù)器PC上。因此,UI驅(qū)動(dòng)能夠訪問(wèn)服務(wù)器PC的語(yǔ)言監(jiān)視器32,并且還在服務(wù)器PC的渲染驅(qū)動(dòng)執(zhí)行渲染處理時(shí),Π驅(qū)動(dòng)能夠從語(yǔ)言監(jiān)視器32中獲取由任務(wù)ID指定的打印設(shè)置。如上所述,根據(jù)本實(shí)施例管理打印設(shè)置的方法,與將打印機(jī)驅(qū)動(dòng)安裝在本地的情況類似,在point&print環(huán)境下也是有效的。因此,利用根據(jù)本實(shí)施例管理打印設(shè)置的方法,無(wú)論spool格式或安裝環(huán)境如何,都能在已經(jīng)開始打印之后改變打印設(shè)置。第一實(shí)施例配置圖7A示意性地示出了打印系統(tǒng)400,圖7B示出了 PC 100(個(gè)人電腦)的硬件配置。PC 100和打印機(jī)200通過(guò)網(wǎng)絡(luò)300連接。只有一個(gè)打印機(jī)200就足夠了。
PC 100接收用戶的操作,且諸如文檔生成軟件等的應(yīng)用程序使用⑶1、DDI以及打印機(jī)驅(qū)動(dòng)去請(qǐng)求打印。打印機(jī)驅(qū)動(dòng)30生成打印數(shù)據(jù)并且通過(guò)如下所述的過(guò)程將打印數(shù)據(jù)送至打印機(jī)200。只要包括圖像形成功能,打印機(jī)200可以是諸如復(fù)印機(jī)和傳真機(jī)等的任意的設(shè)備。打印機(jī)200可以具有電子攝像方法的圖像形成功能或者噴墨方法的圖像形成功能。此外,PC 100和打印機(jī)200可以通過(guò)USB線纜直接連接。PC 100包括通過(guò)總線彼此連接的CPU 1UR0M 12,RAM 13、外部I/F 14、通信設(shè)備15、輸入設(shè)備16、顯示控制單元17以及存儲(chǔ)設(shè)備18。CPU 11從存儲(chǔ)設(shè)備18中讀取OS 10、應(yīng)用程序31以及打印機(jī)驅(qū)動(dòng)30,并且通過(guò)將RAM 13被用作工作存儲(chǔ)器來(lái)執(zhí)行這些軟件項(xiàng)。應(yīng)用程序31用于將打印請(qǐng)求傳送至打印機(jī)200。應(yīng)用程序31可以是諸如文檔生成軟件、瀏覽器軟件以及演示材料生成軟件等各種軟件。只要能夠生成、編輯、顯示、管理和打印作為打印目標(biāo)的文檔數(shù)據(jù),任何一種應(yīng)用程序都是適用的。文檔數(shù)據(jù)不僅包括字符、符號(hào)和數(shù)字,也包括諸如圖像和照片等的各種打印目標(biāo)。RAM 13被用作用于暫時(shí)存儲(chǔ)必要的數(shù)據(jù)的工作存儲(chǔ)器(主存儲(chǔ)存儲(chǔ)器)。ROM 12存儲(chǔ)BIOS,初始化設(shè)置的數(shù)據(jù)、啟動(dòng)程序等。外部I/F 14是用于安裝諸如USB線纜和可移動(dòng)存儲(chǔ)介質(zhì)20等的接口。通信設(shè)備15是LAN卡或以太網(wǎng)(注冊(cè)商標(biāo))卡,用于響應(yīng)于CPU 11的指示將包數(shù)據(jù)(在本實(shí)施例中主要是打印數(shù)據(jù))發(fā)送到打印機(jī)200。輸入設(shè)備16是用于接收來(lái)自用戶的各種操作指令的接口,其包括鍵盤和鼠標(biāo)。觸摸面板和語(yǔ)音輸入設(shè)備可用作輸入設(shè)備。顯示控制單元17基于應(yīng)用程序31指示的屏幕信息通過(guò)預(yù)定的分辨率和多種顏色控制顯示器19的渲染。顯示器19是諸如液晶和有機(jī)EL等的FPD (平板顯示器)。存儲(chǔ)設(shè)備18具有諸如一體的HDD (硬盤驅(qū)動(dòng)器)和閃存等的非易失存儲(chǔ)器,其存儲(chǔ)OS 10,打印機(jī)驅(qū)動(dòng)30和應(yīng)用程序31。存儲(chǔ)介質(zhì)20是諸如SD卡和USB存儲(chǔ)器等之類的非易失存儲(chǔ)器。OS 10,打印機(jī)驅(qū)動(dòng)30和應(yīng)用程序31以被記錄在存儲(chǔ)介質(zhì)20中的狀態(tài)或從服務(wù)器(未示出)中下載的狀態(tài)來(lái)分發(fā)。圖8是PC 100和打印機(jī)驅(qū)動(dòng)30的功能框圖。PC 100包括在Windows 系統(tǒng)OS上操作的應(yīng)用程序31、打印機(jī)驅(qū)動(dòng)30、語(yǔ)言監(jiān)視器32以及端口監(jiān)視器33。在這些元件中,語(yǔ)言監(jiān)視器32和端口監(jiān)視器33由OS 10提供,因此兩者廣義上是OS 10的一部分。其他的諸如⑶1、假脫機(jī)程序(spooler)和打印處理器等元件并未示出,但是也同OS 10 一起被安裝在PC 100中。打印機(jī)驅(qū)動(dòng)30包括UI驅(qū)動(dòng)38和渲染驅(qū)動(dòng)39。UI驅(qū)動(dòng)38包括顯示單元381。當(dāng)用戶向應(yīng)用程序輸入用于打印文檔的操作時(shí),UI驅(qū)動(dòng)38的顯示單元381在顯示器上顯示打印設(shè)置屏幕(也稱為打印對(duì)話框)。用戶能夠在打印設(shè)置屏幕上進(jìn)行諸如復(fù)印份數(shù)、雙面打印、“組合”、“裝訂”、以及“放大”等設(shè)置。UI驅(qū)動(dòng)38的顯示單元381能夠在顯示器19上顯示打印設(shè)置屏幕,并且即使在用戶已經(jīng)輸入指令以開始打印之后也接收打印設(shè)置的改變。打印設(shè)置被存儲(chǔ)在被稱為DEVM0DE結(jié)構(gòu)(在下文中,稱為“DEVM0DE”)的結(jié)構(gòu)中(數(shù)據(jù)表)。DEVM0DE是定義成員變量(member variable)的數(shù)據(jù)結(jié)構(gòu),其中該成員變量被用于在運(yùn)行在OS上的各種打印機(jī)驅(qū)動(dòng)30上設(shè)置共同的打印條件。
渲染驅(qū)動(dòng)39查閱DEVM0DE,并從作為應(yīng)用程序31的打印目標(biāo)的文檔數(shù)據(jù)生成已經(jīng)應(yīng)用了打印設(shè)置的打印數(shù)據(jù)。打印數(shù)據(jù)包括渲染數(shù)據(jù)(例如,PDL數(shù)據(jù))以及控制數(shù)據(jù)(例如,PJL的打印命令)。語(yǔ)言監(jiān)視器32是與打印機(jī)驅(qū)動(dòng)30高度關(guān)聯(lián)的模塊。語(yǔ)言監(jiān)視器32能夠過(guò)濾將被送至端口監(jiān)視器33的打印數(shù)據(jù)。根據(jù)本實(shí)施例的語(yǔ)言監(jiān)視器32包括數(shù)據(jù)保存單元321和通信單元322。在這些單元中,通信單元322被用于在打印機(jī)驅(qū)動(dòng)30將打印數(shù)據(jù)傳送至端口監(jiān)視器33時(shí)控制通信,且傳統(tǒng)的語(yǔ)言監(jiān)視器32包括通信單元322。通信單元322能夠接收來(lái)自打印機(jī)200的信息。同時(shí),數(shù)據(jù)保存單元321利用任務(wù)ID作為密鑰來(lái)與打印設(shè)置關(guān)聯(lián)地存儲(chǔ)打印數(shù)據(jù)。打印機(jī)驅(qū)動(dòng)30使用語(yǔ)言監(jiān)視器32的函數(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)保存單元321。因此,OS 10不需要改變,即使需要改變時(shí),也只要求很小的改變。下文將描述數(shù)據(jù)保存單元 321。圖9示出了語(yǔ)言監(jiān)視器32的操作。語(yǔ)言監(jiān)視器32接收來(lái)自打印處理器41的打印數(shù)據(jù),并且將打印數(shù)據(jù)傳送到端口監(jiān)視器33。端口監(jiān)視器33基于通信協(xié)議執(zhí)行處理,并且將打印數(shù)據(jù)傳送到端口驅(qū)動(dòng)43。端口驅(qū)動(dòng)43 控制連接打印機(jī)200和PC 100的連接接口(USB、NIC等),并且將打印數(shù)據(jù)傳送至打印機(jī)200。傳統(tǒng)Windows 系統(tǒng)OS的打印架構(gòu)圖10示出了Windows 系統(tǒng)OS的打印架構(gòu)中的渲染驅(qū)動(dòng)39和UI驅(qū)動(dòng)38。OS 10的⑶I 34 (參見圖11)通過(guò)DDI調(diào)用來(lái)調(diào)用打印機(jī)驅(qū)動(dòng)30的渲染驅(qū)動(dòng)39和UI驅(qū)動(dòng)38。UI驅(qū)動(dòng)38和渲染驅(qū)動(dòng)39彼此不能直接通信。然而,存在作為DDI的變?cè)腄EVM0DE,其中DDI是用于從OS 10中調(diào)用驅(qū)動(dòng)的I/F,因此渲染驅(qū)動(dòng)39和UI驅(qū)動(dòng)38都查閱 DEVM0DE。一從OS 10中調(diào)用的UI驅(qū)動(dòng)38接收用戶的打印設(shè)置,并且在DEVM0DE中存儲(chǔ)打
印設(shè)置。一當(dāng)開始準(zhǔn)備打印時(shí),將DEVM0DE從OS 10中傳遞到渲染驅(qū)動(dòng)39。也就是說(shuō),Π驅(qū)動(dòng)38確定“打印設(shè)置”,并且當(dāng)開始準(zhǔn)備打印時(shí),渲染驅(qū)動(dòng)39接收“打印設(shè)置”,并基于打印設(shè)置生成打印命令和渲染數(shù)據(jù)。這是Windows 系統(tǒng)OS的打印架構(gòu)的最基本的打印順序。渲染驅(qū)動(dòng)39在UI驅(qū)動(dòng)38之后執(zhí)行處理,因此,利用典型的打印機(jī)驅(qū)動(dòng)30,在用戶給出開始打印的指令之后不能改變打印設(shè)置。圖11示出了 RAW SPOOL下的Windows 系統(tǒng)OS的打印框架的流程圖(傳統(tǒng)技術(shù))。(I)用戶通過(guò)由Π驅(qū)動(dòng)38提供的打印對(duì)話框改變打印設(shè)置(改變已經(jīng)注冊(cè)的初始值)。(2)用戶執(zhí)行操作從而指示應(yīng)用程序開始打印。(3)應(yīng)用程序從UI驅(qū)動(dòng)38接收包括打印設(shè)置在內(nèi)的DEVM0DE從而接收用戶的打印設(shè)置。(4)應(yīng)用程序?qū)⒋蛴≈噶詈虳EVM0DE傳送至⑶134作為⑶I調(diào)用。(5)⑶134將⑶I調(diào)用轉(zhuǎn)換成DDI調(diào)用,并且將DDI調(diào)用報(bào)告給渲染驅(qū)動(dòng)39。(6)渲染驅(qū)動(dòng)39將RAW數(shù)據(jù)傳送給假脫機(jī)程序35,其中該RAW數(shù)據(jù)已經(jīng)被轉(zhuǎn)換成可以被打印機(jī)理解的語(yǔ)言。
(7)假脫機(jī)程序35將接收自渲染驅(qū)動(dòng)39的RAW數(shù)據(jù)傳送至打印機(jī)200。圖12是如圖11所不的Windows 系統(tǒng)OS的打印框架的順序圖(傳統(tǒng)技術(shù))。實(shí)際上,存在在⑶I 34和UI驅(qū)動(dòng)38或者⑶I 34和渲染驅(qū)動(dòng)39之間執(zhí)行的通信(未示出);然而,沒(méi)有示出這樣的通信。通過(guò)UI系統(tǒng)的DDI函數(shù)將信息從⑶I 34報(bào)告給UI驅(qū)動(dòng)38,通過(guò)渲染系統(tǒng)的DDI函數(shù)將信息從⑶134報(bào)告給渲染驅(qū)動(dòng)39。在圖12的步驟SI之前,Π驅(qū)動(dòng)38已經(jīng)接收到了由用戶設(shè)置的打印設(shè)置,并且當(dāng)用戶進(jìn)行開始打印的操作時(shí),應(yīng)用程序31獲取存儲(chǔ)在DEVM0DE中的打印設(shè)置。步驟S1:應(yīng)用程序31首先指示⑶I 34開始打印準(zhǔn)備。具體地講,應(yīng)用程序31通過(guò)使用打印設(shè)置(DEVM0DE)作為變?cè)腃reateDCO函數(shù)來(lái)調(diào)用⑶I 34。步驟S1.1:⑶134調(diào)用與API對(duì)應(yīng)的DDI,從而將打印設(shè)置傳送至渲染驅(qū)動(dòng)39。打印設(shè)置被存儲(chǔ)在DrvEnableroEVO變?cè)?,并且被?bào)告給渲染驅(qū)動(dòng)39,其中該打印設(shè)置已經(jīng)被利用CreateDCO的變?cè)獜膽?yīng)用程序31傳遞至⑶134。接著,渲染驅(qū)動(dòng)39能夠查閱打印設(shè)置,直到完成任務(wù)(直到設(shè)備上下文被擦除)。步驟S2:當(dāng)⑶I 34向應(yīng)用程 序31報(bào)告打印準(zhǔn)備工作已經(jīng)完成時(shí),應(yīng)用程序31指示⑶I 34開始打印。具體地講,應(yīng)用程序31通過(guò)使用DocINFO作為變?cè)腟tartDoc O函數(shù)來(lái)調(diào)用⑶I 34。步驟S2.1 =GDI 34指示UI驅(qū)動(dòng)38開始打印。具體地講,⑶I 34將DrvDocumentEvent O DOCUMENTEVENT_STARTDOCPER O 傳送至 UI 驅(qū)動(dòng) 38。步驟S2.2 =GDI 34指示渲染驅(qū)動(dòng)39開始打印。具體地講,⑶I 34將DrvStartDoc O函數(shù)傳送至渲染驅(qū)動(dòng)39。OS 10在預(yù)定的時(shí)機(jī)通過(guò)CreateDC O函數(shù)生成任務(wù)ID。⑶I 34在DrvStartDocO函數(shù)的變?cè)性O(shè)置任務(wù)ID,因此渲染驅(qū)動(dòng)39能夠查閱任務(wù)ID。步驟S2.3:類似地,⑶I 34指示UI驅(qū)動(dòng)38開始打印。具體地講,⑶I 34將DrvDocumentEvent O D0CUMENTEVENT_STARTD0CP0ST O 傳送至 UI 驅(qū)動(dòng) 38。⑶ 134 將任務(wù) ID作為此函數(shù)的變?cè)獋魉停虼?,UI驅(qū)動(dòng)38能夠查閱任務(wù)ID。步驟S3:當(dāng)⑶I 34向應(yīng)用程序31報(bào)告打印開始已經(jīng)完成時(shí),應(yīng)用程序31以頁(yè)為單位重復(fù)處理。首先,應(yīng)用程序31指示GDI 34接收新的頁(yè)的打印數(shù)據(jù)。具體地講,應(yīng)用程序31將StartPage O函數(shù)傳送至⑶134。步驟S3.1:⑶I 34將DrvStartPage O傳送至渲染驅(qū)動(dòng)39。步驟S4:當(dāng)接收到來(lái)自于渲染驅(qū)動(dòng)39的響應(yīng)時(shí),應(yīng)用程序31將渲染函數(shù)(文檔數(shù)據(jù))傳送到⑶I 34。步驟S4.1:⑶I 34將渲染函數(shù)(文檔數(shù)據(jù))傳送至渲染驅(qū)動(dòng)39。渲染驅(qū)動(dòng)39根據(jù)打印設(shè)置將文檔數(shù)據(jù)轉(zhuǎn)換成打印數(shù)據(jù)。步驟S5:當(dāng)⑶I 34向應(yīng)用程序31報(bào)告在一頁(yè)上的渲染處理已經(jīng)完成時(shí),應(yīng)用程序31向⑶I 34報(bào)告一頁(yè)上的寫入已經(jīng)完成。具體地講,應(yīng)用程序31將EndPage O函數(shù)傳送至⑶I 34。步驟S5.1:⑶I 34向渲染驅(qū)動(dòng)39報(bào)告一頁(yè)的寫入已經(jīng)完成。具體體講,⑶I 34將DrvSendPage O函數(shù)傳送到渲染驅(qū)動(dòng)39。步驟S6:當(dāng)所有頁(yè)的渲染處理都完成時(shí),應(yīng)用程序31向⑶I 34報(bào)告打印任務(wù)已經(jīng)結(jié)束。具體地講,應(yīng)用程序31將EndDoc O的函數(shù)傳送至⑶I 34。步驟S6.1 KDI 34向渲染驅(qū)動(dòng)39報(bào)告打印任務(wù)已經(jīng)結(jié)束。具體地講,⑶134將EndDoc O的函數(shù)傳送給渲染驅(qū)動(dòng)39。步驟S6.2:⑶I 34向UI驅(qū)動(dòng)38報(bào)告打印任務(wù)已經(jīng)結(jié)束。具體地講,⑶134將DrvDocumentEvent O DOCUMENTEVENT_ENDDOCPOST O 的函數(shù)傳送給 UI 驅(qū)動(dòng) 38。接下來(lái),擦除設(shè)備上下文,并且渲染驅(qū)動(dòng)39不能查閱打印設(shè)置(DrvDisablePDEVO函數(shù)的DDI調(diào)用被報(bào)告給渲染驅(qū)動(dòng))。圖13示出了 EMF SPOOL下的Windows 系統(tǒng)OS的打印架構(gòu)的流程圖(傳統(tǒng)技術(shù))。(I)用戶通過(guò)由UI驅(qū)動(dòng)38提供的打印對(duì)話框(⑶I)改變打印設(shè)置(改變已經(jīng)注冊(cè)的初始值)。(2)用戶執(zhí)行操作以指示應(yīng)用程序31開始打印。(3)應(yīng)用程序31從Π驅(qū)動(dòng)38接收包括打印設(shè)置在內(nèi)的DEVM0DE,從而接收用戶的打印設(shè)置。(4)應(yīng)用程序31將打印指示傳送給⑶134作為⑶I調(diào)用。(5)⑶134將EMF數(shù)據(jù)傳 遞給假脫機(jī)程序35作為spool數(shù)據(jù)。(6)當(dāng)應(yīng)用程序31的所有的打印數(shù)據(jù)都被假脫機(jī)時(shí),假脫機(jī)程序35向打印處理器41報(bào)告將執(zhí)行去假脫機(jī)(despool),并且將假脫機(jī)數(shù)據(jù)(spool data)傳遞至打印處理器41。(7)打印處理器41逐頁(yè)編輯假脫機(jī)數(shù)據(jù)以實(shí)現(xiàn)組合/調(diào)換順序/裝訂等功能,并且將編輯的內(nèi)容報(bào)告給⑶I 34作為⑶I調(diào)用。(8)⑶I 34將⑶I調(diào)用轉(zhuǎn)換成DDI調(diào)用,并且將DDI調(diào)用報(bào)告給渲染驅(qū)動(dòng)39。(9)渲染驅(qū)動(dòng)39將已經(jīng)轉(zhuǎn)換成打印機(jī)可以理解的語(yǔ)言的RAW數(shù)據(jù)傳遞給假脫機(jī)程序35。(10)假脫機(jī)程序35將接收自渲染驅(qū)動(dòng)39的RAW數(shù)據(jù)傳送至打印機(jī)200。圖14不出了圖13的Windows OS的打印架構(gòu)的順序(傳統(tǒng)技術(shù))。實(shí)際上,存在在⑶I 34和UI驅(qū)動(dòng)38之間或者在⑶I 34和渲染驅(qū)動(dòng)39之間執(zhí)行的通信(未示出);然而,并未示出這樣的通信。在EMF SPOOL中,應(yīng)用程序處理和假脫機(jī)程序處理被分開。在圖14的步驟SI之前,Π驅(qū)動(dòng)38已經(jīng)接收了用戶設(shè)置的打印設(shè)置,并且當(dāng)用戶執(zhí)行開始打印的操作時(shí),應(yīng)用程序31獲取存儲(chǔ)在DEVM0DE中的打印設(shè)置。步驟S1:應(yīng)用程序31首先指示⑶I 34開始打印準(zhǔn)備。具體地講,應(yīng)用程序31通過(guò)使用打印設(shè)置(DEVM0DE)作為變?cè)腃reateDCO函數(shù)來(lái)調(diào)用⑶134。步驟S1.1 KDI 34調(diào)用與API對(duì)應(yīng)的DDI,以將打印設(shè)置傳送至渲染驅(qū)動(dòng)39。打印設(shè)置被存儲(chǔ)在DrvEnableroEVO的變?cè)胁⑶冶粓?bào)告給渲染驅(qū)動(dòng)39,其中該打印設(shè)置已經(jīng)被利用CreateDCO變?cè)獜膽?yīng)用程序31傳遞至⑶I 34。接下來(lái),渲染驅(qū)動(dòng)39能查閱打印設(shè)置,直到完成任務(wù)(直到擦除設(shè)備上下文)。步驟S2:當(dāng)⑶I 34將打印準(zhǔn)備完成報(bào)告給應(yīng)用程序31時(shí),應(yīng)用程序31指示⑶I34開始打印。具體地講,應(yīng)用程序31通過(guò)使用DocINFO作為變?cè)腟tartDocO函數(shù)來(lái)調(diào)用⑶I 34。
步驟S2.1:GDI 34指示UI驅(qū)動(dòng)38開始打印。具體地講,⑶I 34將DrvDocumentEvent O D0CUMENTEVENT_STARTD0C O 傳送至 UI 驅(qū)動(dòng) 38。步驟S2.2 =GDI 34將任務(wù)ID送至UI驅(qū)動(dòng)38。具體地講,⑶I 34將DrvDocumentEvent O D0CUMENT_STARTD0CP0ST O 送至 UI 驅(qū)動(dòng) 38。⑶I 34 將任務(wù) ID 設(shè)為此函數(shù)的變?cè)虼薝I驅(qū)動(dòng)38能夠查閱任務(wù)ID。在此點(diǎn)上,渲染驅(qū)動(dòng)39不能獲取任務(wù)ID。步驟S3:當(dāng)⑶134向應(yīng)用程序31報(bào)告打印開始已經(jīng)完成時(shí),應(yīng)用程序31以頁(yè)為單位重復(fù)處理。應(yīng)用程序31指示⑶I 34接收新的頁(yè)的打印數(shù)據(jù)。具體地講,應(yīng)用程序31將StartPage O傳送至⑶I 34。通過(guò)StartPage O ,假脫機(jī)程序處理開始。步驟S4:應(yīng)用程序31將渲染函數(shù)(文檔數(shù)據(jù))轉(zhuǎn)送至⑶I 34。⑶I 34基于打印設(shè)置創(chuàng)建EMF數(shù)據(jù)。步驟S5:應(yīng)用程序31向⑶I 34報(bào)告一頁(yè)的寫入已經(jīng)完成。具體地講,應(yīng)用程序31 將 EndPage O 傳送至 GDI 34。步驟S6:當(dāng)所有頁(yè)的渲染處理都完成時(shí),應(yīng)用程序31向⑶I 34報(bào)告打印任務(wù)已經(jīng)結(jié)束。具體地講,應(yīng)用程序31將EndDoc O傳送至⑶I 34。如上所述,當(dāng)應(yīng)用程序31的處理結(jié)束時(shí),即使打印還未完成,也表現(xiàn)出應(yīng)用程序31好似已經(jīng)完成打印。具體地講,在假脫機(jī)程序處理中再次執(zhí)行打印處理,其中EMF數(shù)據(jù)被轉(zhuǎn)換成RAW數(shù)據(jù)。OS 10監(jiān)控應(yīng)用程序31和⑶I 34之間的通信,并且在預(yù)定的時(shí)機(jī)(例如,在StartPageO之后),OS 10使得假脫機(jī)程序35開始假脫機(jī)程序處理。步驟S7:假脫機(jī)程序35指示打印處理器41開始打印準(zhǔn)備。步驟S7.1:打印處理器41指示⑶I 34開始打印準(zhǔn)備。步驟S7.1.1:⑶I 34將打印設(shè)置傳送至渲染驅(qū)動(dòng)39。具體地講,打印設(shè)置被存儲(chǔ)在DrvEnableroEVO的變?cè)胁⑶冶粓?bào)告給渲染驅(qū)動(dòng)39,其中,應(yīng)用程序31已經(jīng)利用CreateDCO的變?cè)獙⒃摯蛴≡O(shè)置傳遞至⑶I 34。接下來(lái),渲染驅(qū)動(dòng)39能夠查閱打印設(shè)置,直到任務(wù)結(jié)束(直到擦除設(shè)備上下文)。步驟S7.1.2:⑶I 34指示渲染驅(qū)動(dòng)39開始打印。具體地,⑶I 34將DrvStartDoc O函數(shù)傳送至渲染驅(qū)動(dòng)39。OS 10在預(yù)定的時(shí)機(jī)通過(guò)CreateDC O函數(shù)產(chǎn)生任務(wù)ID。⑶I 34將任務(wù)ID設(shè)置成DrvStartDoc O函數(shù)的變?cè)?,因此渲染?qū)動(dòng)39能夠查閱任務(wù)ID。步驟S7.2:接下來(lái),打印處理器41以頁(yè)為單位重復(fù)處理。首先,打印處理器41指示⑶I 34接收新的頁(yè)的打印數(shù)據(jù)。具體地,打印處理器41將GdiStartPageEMFO傳送至⑶I 34。步驟S7.2.1:⑶I 34將DrvStartPage O傳送至渲染驅(qū)動(dòng)39。步驟S7.2.2 ADI 34將渲染函數(shù)(文檔數(shù)據(jù))傳送至渲染驅(qū)動(dòng)39。渲染驅(qū)動(dòng)39根據(jù)打印設(shè)置將文檔數(shù)據(jù)轉(zhuǎn)換成打印數(shù)據(jù)。步驟S7.2.3:⑶I 34向渲染驅(qū)動(dòng)39報(bào)告一頁(yè)的寫入已經(jīng)完成。具體地講,⑶I 34將DrvSendPage O傳送至渲染驅(qū)動(dòng)39。接下來(lái),以頁(yè)為單位重復(fù)相同的處理。根據(jù)本實(shí)施例的Windows 系統(tǒng)OS的打印架構(gòu)
首先,描述用在根據(jù)本實(shí)施例的打印架構(gòu)中的API。圖15A表示ExtEscape O函數(shù)的格式。ExtEscapeO函數(shù)是API,通過(guò)該API,模塊(在順序圖或功能框圖中表示的每個(gè)方框)能夠訪問(wèn)通過(guò)GDI無(wú)法訪問(wèn)的特殊模塊。當(dāng)應(yīng)用程序在不包括GDI 34的情況下將數(shù)據(jù)傳送至驅(qū)動(dòng)的時(shí)候,或者當(dāng)應(yīng)用程序在不包括GDI34的情況下從模塊中獲取數(shù)據(jù)的時(shí)候,使用ExtEscapeO函數(shù)。.Hdc是設(shè)備上下文的句柄。.nEscape是用于檢驗(yàn)和設(shè)置ExtEscape O函數(shù)的功能的變?cè)?cblnput是ExtEscape O函數(shù)傳送的結(jié)構(gòu)的尺寸。.IpszInData是ExtEscape O函數(shù)傳送的結(jié)構(gòu)的指針。.cbOutput是用于接收由ExtEscapeO函數(shù)傳送的結(jié)構(gòu)的結(jié)構(gòu)的尺寸。.IpszOutData是用于接收由ExtEscape O函數(shù)傳送的結(jié)構(gòu)的結(jié)構(gòu)的指針。ExtEscape O函數(shù)是對(duì)于由CreateDC O獲取的設(shè)備上下文能夠調(diào)用的API。因此,在存在正進(jìn)行順序處理的設(shè)備上下文時(shí),UI驅(qū)動(dòng)38能夠調(diào)用ExtEscapeO函數(shù)。圖15B是應(yīng)用程序調(diào)用ExtEscape O的情況下的順序圖。(i)應(yīng)用程序從⑶I 34中調(diào)用ExtEscape O。(ii)GDI 34 將 ExtEscape O 轉(zhuǎn)換成 DrvEscape O 的 DDI 調(diào)用,并且將 DDI 調(diào)用報(bào)告給渲染驅(qū)動(dòng)39。同時(shí),渲染驅(qū)動(dòng)39或者UI驅(qū)動(dòng)38可以調(diào)用ExtEscape O。ExtEscape O能夠由CreateDCO和DeleteDCO之間的各個(gè)模塊調(diào)用,因此圖15B的順序能夠插入如圖12和14所示的傳統(tǒng)順序的任意位置。圖16A 表不 DrvDocementEvent ()函數(shù)的格式。DrvDocementEventO 函數(shù)是用于處理與打印文檔數(shù)據(jù)相關(guān)的特殊事件的DLL。.hPrinter是打印機(jī)的句柄。.hdc是設(shè)備上下文的句柄。.iEsc是由作為調(diào)用源的模塊提供的用于識(shí)別處理目標(biāo)的事件的轉(zhuǎn)義(escape)代碼。.cbln是由pvln傳送的數(shù)據(jù)的尺寸。.pvln是被傳送的數(shù)據(jù)的指針。.cbOut 在 iEsc 是 DOCUMENTEVENT_ESCAPE 時(shí),由函數(shù)指定的值作為 ExtEscape O的cbOutput參數(shù)進(jìn)行存儲(chǔ)。cbOut在iEsc是DOCUMENTEVENT_QUERYFILTER時(shí),存儲(chǔ)由接收側(cè)接收的結(jié)構(gòu)pvOut的尺寸。.pvOut是由接收側(cè)接收的結(jié)構(gòu)pvOut的指針。在本實(shí)施例中,在CreateDCO之后的打印過(guò)程中,根據(jù)需要在多個(gè)DDI調(diào)用之間調(diào)用DrvDocumentEvent O函數(shù),其中,⑶134通過(guò)所述的多個(gè)DDI調(diào)用來(lái)調(diào)用渲染驅(qū)動(dòng)39。DrvDocumentEventO是用于執(zhí)行單個(gè)處理的DDI,因此不能在兩個(gè)連續(xù)的DrvDocumentEvent O函數(shù)之間共享數(shù)據(jù)。在此方面,DrvDocumentEvent O函數(shù)與調(diào)用渲染驅(qū)動(dòng)39的DDI不同。DrvDocumentEventO函數(shù)是UI系統(tǒng)的DDI,因此可以顯示對(duì)話框。此外,存在作為變?cè)脑O(shè)備上下文(hdc),因此在DrvDocumentEvent O的DDI調(diào)用之后,模塊能夠調(diào)用獲取設(shè)備上下文的API。例如,當(dāng)UI驅(qū)動(dòng)38利用設(shè)備上下文作為變?cè)獊?lái)調(diào)用渲染系統(tǒng)的API,可能向相應(yīng)的渲染驅(qū)動(dòng)39報(bào)告渲染指示。圖 16 B 不出 了 SendRecvBidiDataFromPort ()的格式。SendRecvBidiDataFromPort O函數(shù)是應(yīng)用到語(yǔ)言監(jiān)視器32的函數(shù)。與打印機(jī)驅(qū)動(dòng)30類似,語(yǔ)言監(jiān)視器32也具有由OS 10確定的I/F。SendRecvBidiDataFromPort O格式是I/F中的一個(gè),并且支持應(yīng)用程序和打印機(jī)之間的以及應(yīng)用程序和打印機(jī)服務(wù)器之間的雙向通 目。.hPort是由作為調(diào)用源的模塊提供的端口的句柄。-dvAccessBit由作為調(diào)用源的模塊提供,并且是用于允許訪問(wèn)打印機(jī)或打印機(jī)服務(wù)器的 ACCESS_MASK。.pAction是由作為調(diào)用源的模塊提供的請(qǐng)求動(dòng)作。.pReqData是包括請(qǐng)求數(shù)據(jù)在內(nèi)的PBIDI_REQUEST_CONTAINER結(jié)構(gòu)的指針。^ppResData是指向存儲(chǔ)器區(qū)域的指針,其中該存儲(chǔ)器區(qū)域用于接收包括響應(yīng)數(shù)據(jù)在內(nèi)的BIDI_RESP0NSE_C0NTAINER結(jié)構(gòu)的地址。圖 17A 示出了 PBIDI_REQUEST_CONTAINER 結(jié)構(gòu)的格式。PBIDI_RESPONSE_CONTAINER 結(jié)構(gòu)的內(nèi)容與 PBIDI_REQUEST_CONTAINER 結(jié)構(gòu)的大致相同。PBIDI_REQUEST_CONTAINER結(jié)構(gòu)是用于存儲(chǔ)bidi請(qǐng)求的列表的容器,并且PBIDI_RESPONSE_CONTAINER結(jié)構(gòu)是用于存儲(chǔ)bidi響應(yīng)的列表的容 器。Windows 系統(tǒng)的0S10提供數(shù)據(jù)庫(kù)的計(jì)劃(schema)作為“Bidi請(qǐng)求和響應(yīng)計(jì)劃”,用于提供能夠用于打印機(jī)和應(yīng)用程序之間的雙向通信的請(qǐng)求和響應(yīng)的組合。通過(guò)將任務(wù)ID和打印設(shè)置注冊(cè)在請(qǐng)求和響應(yīng)中,模塊能夠利用0S10的機(jī)制,通過(guò)使用任務(wù)ID作為密鑰來(lái)獲取打印設(shè)置。.版本是計(jì)劃的版本,其目前為I。 標(biāo)記是由系統(tǒng)(OS 10)保存的標(biāo)記的設(shè)置,其需要為O。.計(jì)數(shù)(Count)是“aData”成員的“bidi響應(yīng)”的數(shù)目。.Adata[]是BIDI_REQUEST_DATA結(jié)構(gòu)的排列,其中每個(gè)元素具有一個(gè)bidi響應(yīng)。圖 17B 示出了 BIDI_REQUEST_DATA 結(jié)構(gòu)的格式。BIDI_REQUEST_DATA 結(jié)構(gòu)存儲(chǔ)一個(gè)bidi響應(yīng)。.dwReqNumber是請(qǐng)求的索引,并用于通過(guò)多個(gè)請(qǐng)求來(lái)匹配操作的請(qǐng)求和響應(yīng)。.pSchema是指向存儲(chǔ)器位置的指針,其中該存儲(chǔ)器位置包含計(jì)劃字符串的第一字節(jié)。.數(shù)據(jù)是根據(jù)該計(jì)劃的BIDI_DATA。在語(yǔ)言監(jiān)視器中存儲(chǔ)任務(wù)ID和打印設(shè)置傳統(tǒng)地,OS 10按照接收到的打印開始指令的順序產(chǎn)生系統(tǒng)中的唯一的ID (任務(wù)ID)。在RAW SPOOL和EMF SPOOL中,存在獲取由渲染驅(qū)動(dòng)39和UI驅(qū)動(dòng)38執(zhí)行的任務(wù)ID的步驟。也就是說(shuō),渲染驅(qū)動(dòng)39能夠接收到具有DrvStartDocO的變?cè)娜蝿?wù)ID。UI驅(qū)動(dòng) 38 能夠接收到具有 DrvDocumentEvent O D0CUMENTEVENT_STARTD0CP0ST O 的變?cè)娜蝿?wù)ID0圖18示意性地示出了由OS 10分配的任務(wù)ID。應(yīng)用程序A和應(yīng)用程序B任意地發(fā)出打印開始指令1-3。OS 10將任務(wù)IDl分配給應(yīng)用程序A的打印開始指令1,將任務(wù)ID2分配給應(yīng)用程序B的打印開始指令2,并將任務(wù)ID3分配給應(yīng)用程序A的打印開始指令3。UI驅(qū)動(dòng)38和渲染驅(qū)動(dòng)39獲得這些任務(wù)ID,因此保證了 UI驅(qū)動(dòng)38和渲染驅(qū)動(dòng)39獲取的任務(wù)ID的唯一性。在本實(shí)施例中,任務(wù)ID是被用作密鑰以在語(yǔ)言監(jiān)視器32中存儲(chǔ)打印設(shè)置。圖19示意性地示出了存儲(chǔ)在語(yǔ)言監(jiān)視器32中的任務(wù)ID和打印設(shè)置。在應(yīng)用程序A和B中,如下指示打印開始。OS 10以給出打印開始指示的順序來(lái)分配任務(wù)ID。1.應(yīng)用程序A給出打印開始指令。2.應(yīng)用程序B給出打印開始指令。3.應(yīng)用程序A給出打印開始指令。UI驅(qū)動(dòng)38在打印開始之后顯示打印設(shè)置屏幕,并且接收打印設(shè)置。打印設(shè)置被設(shè)置在語(yǔ)言監(jiān)視器32中。在圖19的示例中,語(yǔ)言監(jiān)視器32將任務(wù)ID和打印設(shè)置的組合保存在表中。當(dāng)獲取打印設(shè)置用于生成打印數(shù)據(jù)時(shí),渲染驅(qū)動(dòng)39通過(guò)使用任務(wù)ID作為密鑰來(lái)請(qǐng)求(使得)語(yǔ)言監(jiān)視器32提供打印設(shè)置。如上所述,OS 10給每個(gè)打印任務(wù)分配唯一的密鑰,并且語(yǔ)言監(jiān)視器32具有通過(guò)使用該密鑰來(lái)保存信息的機(jī)制。因此,即使多個(gè)應(yīng)用程序隨意地開始多個(gè)打印任務(wù),打印機(jī)驅(qū)動(dòng)30也能夠管理用于每個(gè)打印任務(wù)的打印設(shè)置。為了在語(yǔ)言監(jiān)視器32中設(shè)置打印設(shè)置并且從語(yǔ)言監(jiān)視器32請(qǐng)求打印設(shè)置,需要使用SendRecvBidiDataFromPortO函數(shù)。當(dāng)打印機(jī)驅(qū)動(dòng)30通過(guò)SendRecvBidiDataFromPort O調(diào)用語(yǔ)言監(jiān)視器32時(shí),語(yǔ)言監(jiān)視器32能夠被用作存儲(chǔ)位置。也就是說(shuō),通過(guò)語(yǔ)言監(jiān)視器32和SendRecvBidiDataFromPort O函數(shù)實(shí)現(xiàn)數(shù)據(jù)保存單元 321。如上所述,即使語(yǔ)言監(jiān)視器32并非由制造商開發(fā),標(biāo)準(zhǔn)語(yǔ)言監(jiān)視器32也能夠與OS10—起使用。當(dāng)制造商并沒(méi)有開發(fā)語(yǔ)言監(jiān)視器32時(shí),標(biāo)準(zhǔn)的語(yǔ)言監(jiān)視器32工作。如果制造商已經(jīng)根據(jù)預(yù)先定義的Ι/F開發(fā)了語(yǔ)言監(jiān)視器32,則能夠添加唯一的功能。在本實(shí)施例中,通過(guò)使用稱為SendRecvBidiDataFromPortO的Ι/F,打印機(jī)驅(qū)動(dòng)30能夠與語(yǔ)言監(jiān)視器32交換數(shù)據(jù)。UI驅(qū)動(dòng)38設(shè)置表示“pAction”中的設(shè)置的常量,在“pReqData”中設(shè)置任務(wù)ID,在“ppResData”中設(shè)置指向存儲(chǔ)了打印設(shè)置的地址的指針。語(yǔ)言監(jiān)視器32在aData口中存儲(chǔ)任務(wù)ID,其中該aData口是BIDI_REQUEST_DATA結(jié)構(gòu)的排列中的一個(gè)元素,同時(shí)語(yǔ)言監(jiān)視器32在aData口中存儲(chǔ)打印設(shè)置(的指針),其中aData口是BIDI_RESPONSE_DATA結(jié)構(gòu)的排列中的一個(gè)元素。因此,如圖19所示,任務(wù)ID與打印設(shè)置彼此關(guān)聯(lián)。此外,渲染驅(qū)動(dòng)39設(shè)置表示“pAction”中的讀取的常量,在“pReqData”中設(shè)置任務(wù)ID,并且指定返回值(未示出)。因此,語(yǔ)言監(jiān)視器32在返回值中存儲(chǔ)地址的指針,其中在此地址中存儲(chǔ)了與“ppResData”相對(duì)應(yīng)的打印設(shè)置,同時(shí)語(yǔ)言監(jiān)視器32將返回值返回給渲染驅(qū)動(dòng)39。通過(guò)使用如上所述的OS 10的功能,語(yǔ)言監(jiān)視器32的數(shù)據(jù)保存單元321中的密鑰能夠用作彼此不重疊的打印任務(wù)的任務(wù)ID。操作過(guò)程
圖20是RAW spool的Window 系統(tǒng)OS的打印架構(gòu)的順序圖。實(shí)際上,存在在⑶I 34和UI驅(qū)動(dòng)38之間或者在⑶I 34和渲染驅(qū)動(dòng)39之間執(zhí)行的通信(未示出);然而,并未示出這樣的通信。通過(guò)UI系統(tǒng)的DDI函數(shù)來(lái)報(bào)告從⑶I 34到UI驅(qū)動(dòng)38的消息,通過(guò)渲染系統(tǒng)的DDI函數(shù)來(lái)報(bào)告從⑶I 34到渲染驅(qū)動(dòng)39的消息。在圖20的步驟SI之前,Π驅(qū)動(dòng)38已經(jīng)接收到了由用戶設(shè)置的打印設(shè)置,并且當(dāng)用戶執(zhí)行開始打印的操作時(shí),應(yīng)用程序31獲取存儲(chǔ)在DEVM0DE中的打印設(shè)置。步驟S1:應(yīng)用程序31首先指示⑶I 34開始打印準(zhǔn)備。具體地講,應(yīng)用程序31通過(guò)使用打印設(shè)置(DEVM0DE)作為變?cè)腃reateDCO函數(shù)來(lái)調(diào)用⑶I 34。步驟S1.1:⑶I 34調(diào)用與API對(duì)應(yīng)的DDI,從而將打印設(shè)置傳送至渲染驅(qū)動(dòng)39。打印設(shè)置被存儲(chǔ)在DrvEnableroEVO的變?cè)胁⑶冶粓?bào)告給渲染驅(qū)動(dòng)39,其中該打印設(shè)置已經(jīng)被利用CreateDCO變?cè)獜膽?yīng)用程序31傳遞至⑶I 34。接著,渲染驅(qū)動(dòng)39能夠查閱打印設(shè)置,直到完成任務(wù)(直到設(shè)備上下文被擦除)。步驟S2:當(dāng)⑶I 34向應(yīng)用程序31報(bào)告打印準(zhǔn)備工作完成時(shí),應(yīng)用程序31指示⑶I34開始打印。具體地講,應(yīng)用程序31通過(guò)使用DocINFO作為變?cè)腟tartDocO函數(shù)來(lái)調(diào)用⑶I 34。步驟S2.1 =GDI 34指示UI驅(qū)動(dòng)38開始打印。具體地講,⑶I 34將DrvDocumentEvent O DOCUMENTEVENT_STARTDOCPER O 傳送至 UI 驅(qū)動(dòng) 38。步驟S2.2 =GDI 34指示渲染驅(qū)動(dòng)39開始打印。具體地講,⑶I 34將DrvStartDoc O函數(shù)傳送至渲染驅(qū)動(dòng)39。OS 10在預(yù)定的時(shí)機(jī)通過(guò)CreateDC O函數(shù)生成任務(wù)ID。⑶I 34在DrvStartDocO函數(shù)的變?cè)性O(shè)置任務(wù)ID,因此渲染驅(qū)動(dòng)39能夠查閱任務(wù)ID。步驟S2.3.1:UI驅(qū)動(dòng)38在給出打印開始指令之后在打印設(shè)置中檢測(cè)到存在用于接收打印設(shè)置的改變的設(shè)置。因此,Π驅(qū)動(dòng)38開始顯示彈出窗口的處理。Π驅(qū)動(dòng)38不能直接與渲染驅(qū)動(dòng)39通信,因此將ExtEscape O傳送給⑶I 34。步驟S2.3.1.1:⑶I 34將DrvEscape O報(bào)告給渲染驅(qū)動(dòng)39。渲染驅(qū)動(dòng)39通過(guò)⑶I34將保存的打印設(shè)置傳送給UI驅(qū)動(dòng)38。步驟2.4:根據(jù)ExtEscape O的處理,假定UI驅(qū)動(dòng)38已經(jīng)獲取到了打印設(shè)置。當(dāng)打印設(shè)置包括顯示用于在打印開始指令之后(在打印的過(guò)程中)改變打印設(shè)置的打印對(duì)話框的指令的設(shè)置時(shí),Π驅(qū)動(dòng)38顯示如圖1和2所示的打印對(duì)話框,并且接收由用戶給出的對(duì)打印設(shè)置的改變。步驟S2.3.2:隨著用戶關(guān)閉打印對(duì)話框,UI驅(qū)動(dòng)38通過(guò)SendRecvBidiDataFromPort O::set使用任務(wù)ID作為密鑰,并且將用戶改變的打印設(shè)置傳送至語(yǔ)言監(jiān)視器32 (“:: ”意思是省略了 “DOCUMENTEVENT”)。因此,語(yǔ)言監(jiān)視器32能夠彼此關(guān)聯(lián)保存任務(wù)ID和打印設(shè)置。此時(shí),也傳送指示用戶是否通過(guò)選擇“確認(rèn)”或“取消”來(lái)關(guān)閉對(duì)話框的內(nèi)容。步驟S3:當(dāng)⑶134向應(yīng)用程序31報(bào)告開始打印已經(jīng)完成時(shí),應(yīng)用程序31以頁(yè)為單位重復(fù)處理。首先,應(yīng)用程序31指示GDI34接收新的頁(yè)的打印數(shù)據(jù)。具體地講,應(yīng)用程序31將StartPage O函數(shù)傳送至⑶134。步驟S3.1:⑶I 34將DrvStartPage O傳送至渲染驅(qū)動(dòng)39。
步驟S3.1.1:只有當(dāng)接收到DrvStartPageO的第一 DDI調(diào)用時(shí),渲染驅(qū)動(dòng)39才通過(guò)SendRecvBidiDataFromPortO::get,使用保持的任務(wù)ID作為密鑰來(lái)向語(yǔ)言監(jiān)視器32請(qǐng)求打印設(shè)置。語(yǔ)言監(jiān)視器32保存指示步驟S2.2.2中用戶是否通過(guò)選擇“確認(rèn)”或“取消”來(lái)關(guān)閉對(duì)話框的信息。當(dāng)用戶通過(guò)“確認(rèn)”關(guān)閉打印對(duì)話框時(shí),渲染驅(qū)動(dòng)39基于打印設(shè)置生成打印數(shù)據(jù)。當(dāng)用戶通過(guò)“取消”關(guān)閉對(duì)話框時(shí),渲染驅(qū)動(dòng)39不會(huì)將數(shù)據(jù)傳送到打印機(jī)或傳真機(jī)。步驟S4:當(dāng)接收到來(lái)自于渲染驅(qū)動(dòng)39的響應(yīng)時(shí),應(yīng)用程序31將渲染函數(shù)(文檔數(shù)據(jù))傳送到⑶I 34。步驟S4.1:⑶I 34將渲染函數(shù)(文檔數(shù)據(jù))傳送至渲染驅(qū)動(dòng)39。渲染驅(qū)動(dòng)39根據(jù)打印設(shè)置將文檔數(shù)據(jù)轉(zhuǎn)換成打印數(shù)據(jù)。以后的過(guò)程與傳統(tǒng)技術(shù)的過(guò)程相同,因此不做進(jìn)一步描述。如上所述,渲染驅(qū)動(dòng)39能夠從語(yǔ)言監(jiān)視器32中獲取由任務(wù)ID唯一地指定的打印設(shè)置。也就是說(shuō),即使在RAW SPOOL中打印已經(jīng)開始之后改變打印設(shè)置,打印設(shè)置也不會(huì)被
蓋與O圖21A和圖21B表示EMF SPOOL的Window 系統(tǒng)OS的打印架構(gòu)的順序圖。實(shí)際上,存在在⑶I 34和UI驅(qū)動(dòng)38之間或者在⑶I 34和渲染驅(qū)動(dòng)39之間執(zhí)行的通信(未示出);然而,并未示出這樣的通信。在圖21A的步驟SI之前,UI驅(qū)動(dòng)38已經(jīng)接收了用戶設(shè)置的打印設(shè)置,并且當(dāng)用戶執(zhí)行開始打印的操作時(shí),應(yīng)用程序 31獲取存儲(chǔ)在DEVM0DE中的打印設(shè)置。步驟S1:應(yīng)用程序31首先指示⑶134開始打印準(zhǔn)備。具體地講,應(yīng)用程序31通過(guò)使用打印設(shè)置(DEVM0DE)作為變?cè)腃reateDCO函數(shù)來(lái)調(diào)用⑶134。步驟S1.1:⑶134調(diào)用與API對(duì)應(yīng)的DDI,以將打印設(shè)置傳送至渲染驅(qū)動(dòng)39。打印設(shè)置被存儲(chǔ)在DrvEnableroEVO的變?cè)?,并且被?bào)告給渲染驅(qū)動(dòng)39,其中該打印設(shè)置已經(jīng)被利用CreateDCO變?cè)獜膽?yīng)用程序31傳遞至⑶134。接下來(lái),渲染驅(qū)動(dòng)39能夠查閱打印設(shè)置,直到完成任務(wù)(直到擦除設(shè)備上下文)。步驟S2:當(dāng)GDI34將打印準(zhǔn)備完成報(bào)告給應(yīng)用程序31時(shí),應(yīng)用程序31指示GDI34開始打印。具體地講,應(yīng)用程序31通過(guò)使用DocINFO作為變?cè)腟tartDocO函數(shù)來(lái)調(diào)用⑶134。步驟S2.1:⑶134指示UI驅(qū)動(dòng)38開始打印。具體地講,⑶134將DrvDocumentEvent O D0CUMENTEVENT_STARTD0C O 傳送至 UI 驅(qū)動(dòng) 38。步驟S2.2:⑶134將任務(wù)ID送至UI驅(qū)動(dòng)38。具體地講,⑶134將DrvDocumentEvent O D0CUMENT_STARTD0CP0ST O 送至 UI 驅(qū)動(dòng) 38。⑶ 134 在此函數(shù)的變?cè)性O(shè)置任務(wù)ID,因此UI驅(qū)動(dòng)38能夠查閱任務(wù)ID。在此點(diǎn)上,渲染驅(qū)動(dòng)39不能獲取任務(wù)ID。步驟S2.2.1:UI驅(qū)動(dòng)38在給出打印開始指令之后在打印設(shè)置中檢測(cè)到存在用于接收打印設(shè)置的改變的設(shè)置。因此,Π驅(qū)動(dòng)38開始顯示彈出窗口的處理。Π驅(qū)動(dòng)38利用設(shè)備上下文作為變?cè)詮蘑?34中調(diào)用ExtEscapeO。步驟S2.2.1.1:⑶134將DrvEscape O的DDI調(diào)用傳送給渲染驅(qū)動(dòng)39以請(qǐng)求由渲染驅(qū)動(dòng)39保存的打印設(shè)置。渲染驅(qū)動(dòng)39通過(guò)⑶134將保存的打印設(shè)置傳送給UI驅(qū)動(dòng)38。步驟S2.4:根據(jù)ExtEscape O的處理,假定Π驅(qū)動(dòng)38已經(jīng)獲取到了打印設(shè)置。當(dāng)打印設(shè)置包括顯示用于在打印開始指令之后(在打印的過(guò)程中)改變打印設(shè)置的打印對(duì)話框的指令的設(shè)置時(shí),UI驅(qū)動(dòng)38接收由用戶給出的對(duì)打印設(shè)置的改變。步驟S2.2.2:隨著用戶關(guān)閉打印對(duì)話框,UI驅(qū)動(dòng)38通過(guò)SendRecvBidiDataFromPort O::set使用任務(wù)ID作為密鑰,并且將用戶改變的打印設(shè)置傳送至語(yǔ)言監(jiān)視器32。因此,語(yǔ)言監(jiān)視器32能夠彼此關(guān)聯(lián)保存任務(wù)ID和打印設(shè)置。此時(shí),也傳送指示用戶是否通過(guò)選擇“確認(rèn)”或“取消”來(lái)關(guān)閉對(duì)話框的內(nèi)容。步驟S3到S6與傳統(tǒng)技術(shù)一樣,因此不做進(jìn)一步描述。直到此時(shí),在應(yīng)用程序處理中的打印(EMF數(shù)據(jù)的生成)完成O接下來(lái),在假脫機(jī)程序35的處理中再次執(zhí)行打印處理,其中EMF數(shù)據(jù)被轉(zhuǎn)換成RAW數(shù)據(jù)。在OSlO監(jiān)控應(yīng)用程序31和⑶134之間的通信,并且在預(yù)定的時(shí)機(jī)(例如,在StartPageO之后),OSlO使得假脫機(jī)程序35開始假脫機(jī)程序處理。步驟S7:假脫機(jī)程序35指示打印處理器41開始打印準(zhǔn)備。步驟S7.1:打印處理器41指示⑶134開始打印準(zhǔn)備。步驟S7.1.1:⑶134將打印設(shè)置傳送至渲染驅(qū)動(dòng)39。具體地講,打印設(shè)置被存儲(chǔ)在DrvEnableroEVO的變?cè)胁⑶冶粓?bào)告給渲染驅(qū)動(dòng)39,其中,應(yīng)用程序31已經(jīng)通過(guò)CreateDCO的變?cè)獙⒃摯蛴≡O(shè)置傳遞至⑶134。接下來(lái),渲染驅(qū)動(dòng)39能夠查閱打印設(shè)置,直到任務(wù)終止(直到擦除設(shè)備上下文)。步驟S7.1.2:⑶134指 示渲染驅(qū)動(dòng)39開始打印。具體地,⑶134將DrvStartDoc ()函數(shù)傳送至渲染驅(qū)動(dòng)39。OS 10在預(yù)定的時(shí)機(jī)通過(guò)CreateDCO函數(shù)產(chǎn)生任務(wù)ID。⑶I 34將任務(wù)ID設(shè)置成DrvStartDoc O函數(shù)的變?cè)?,因此渲染?qū)動(dòng)39能夠查閱任務(wù)ID。步驟S7.2:接下來(lái),打印處理器41以頁(yè)為單位重復(fù)處理。首先,打印處理器41指示⑶I 34接收新的頁(yè)的打印數(shù)據(jù)。具體地,打印處理器41將GdiStartPageEMFO傳送至⑶I 34。步驟S7.2.1:⑶I 34將DrvStartPage ()傳送至渲染驅(qū)動(dòng)39。步驟S7.2.1.1:只有當(dāng)接收到DrvStartPage O的第一 DDI調(diào)用時(shí),渲染驅(qū)動(dòng)39通過(guò)SendRecvBidiDataFromPortO::get使用保存的任務(wù)ID作為密鑰來(lái)向語(yǔ)言監(jiān)視器32請(qǐng)求打印設(shè)置。語(yǔ)言監(jiān)視器32保持指示在步驟S2.2.2用戶是否通過(guò)選擇“確認(rèn)”或“取消”來(lái)關(guān)閉對(duì)話框的信息。當(dāng)用戶通過(guò)“確認(rèn)”關(guān)閉打印對(duì)話框時(shí),渲染驅(qū)動(dòng)39基于打印設(shè)置生成打印數(shù)據(jù)。當(dāng)用戶通過(guò)“取消”關(guān)閉對(duì)話框時(shí),渲染驅(qū)動(dòng)39不會(huì)將數(shù)據(jù)傳送到打印機(jī)或傳真機(jī)。步驟S7.2.2 ADI 34將渲染功能(文檔數(shù)據(jù))傳送至渲染驅(qū)動(dòng)39。渲染驅(qū)動(dòng)39根據(jù)打印設(shè)置將文檔數(shù)據(jù)轉(zhuǎn)換成打印數(shù)據(jù)。步驟S7.2.3:⑶I 34向渲染驅(qū)動(dòng)39報(bào)告一頁(yè)的寫入已經(jīng)完成。具體地講,⑶I 34將DrvSendPage O函數(shù)傳送至渲染驅(qū)動(dòng)39。接下來(lái),以頁(yè)為單位重復(fù)相同的處理。也就是說(shuō),即使在EMF SPOOL中在開始打印之后改變打印設(shè)置,該打印設(shè)置也不會(huì)
被蓋寫。在圖20和圖21中,打印順序依據(jù)spool格式而不同,因此看起來(lái)有不同之處。
然而,在渲染驅(qū)動(dòng)39的以下函數(shù)中,在Π驅(qū)動(dòng)38的以下函數(shù)中以及在語(yǔ)言監(jiān)視器32的以下函數(shù)中,在RAW SPOOL和EMF SPOOL中執(zhí)行相同的處理,其中渲染驅(qū)動(dòng)39的以下函數(shù):.DrvEnablePDEV ().DrvStartDoc O.DrvStartPage O.DrvEscape OΠ驅(qū)動(dòng)38的以下函數(shù):DrvDocumentEventO D0CUMENTEVENT_STARTD0CP0STO以及語(yǔ)言監(jiān)視器32的以下函數(shù)SendRecvBidiDataFromPort()::setSendRecvBidiDataFromPort()::get因此,不管spool格式如何,都能實(shí)現(xiàn)根據(jù)本實(shí)施例的管理打印設(shè)置的方法,即使在操作多個(gè)應(yīng)用程序的情況下, 用戶也能夠在打印開始之后改變打印設(shè)置。第二實(shí)施例在本實(shí)施例中,將說(shuō)明在Point&Print環(huán)境下使用語(yǔ)言監(jiān)視器32管理打印設(shè)置的方法。圖22示意性地示出了包括Point&Print環(huán)境在內(nèi)的打印系統(tǒng)的示例。四個(gè)客戶端PC通過(guò)網(wǎng)絡(luò)連接到一個(gè)服務(wù)器PC。打印機(jī)200被連接到服務(wù)器PClOO,但是打印機(jī)200也可以連接到網(wǎng)絡(luò)。打印機(jī)驅(qū)動(dòng)30被注冊(cè)在服務(wù)器PClOO中,服務(wù)器PC 110通過(guò)拷貝打印機(jī)驅(qū)動(dòng)30將打印機(jī)驅(qū)動(dòng)30分發(fā)到各個(gè)客戶端PC,因此用戶能夠很容易地安裝打印機(jī)驅(qū)動(dòng)30。在下文中,假定客戶端PCl被連接到服務(wù)器PC 110并且通過(guò)Point&Print安裝打印機(jī)驅(qū)動(dòng)。在Point&Print環(huán)境下的服務(wù)器側(cè)渲染中,客戶端PC接收用戶的打印設(shè)置,服務(wù)器PC 110執(zhí)行渲染處理,因此很難共享打印設(shè)置。同時(shí),在本實(shí)施例中,服務(wù)器PC 110和客戶端PC通過(guò)利用OS 10提供的打印架構(gòu)內(nèi)的語(yǔ)言監(jiān)視器32來(lái)交換打印設(shè)置。因此,服務(wù)器PC 110通過(guò)打印架構(gòu)中的處理能夠從客戶端PC中獲取打印設(shè)置。因此,即使用戶在打印開始之后改變打印設(shè)置,服務(wù)器PC 110也能夠基于改變的打印設(shè)置執(zhí)行渲染處理。圖23表示Point&Print環(huán)境下的語(yǔ)言監(jiān)視器32的定位。語(yǔ)言監(jiān)視器32是包含在Window 系統(tǒng)OS的打印架構(gòu)中的模塊。因此,即使通過(guò)Point&Print由客戶端PC負(fù)責(zé)UI驅(qū)動(dòng)38的處理,由服務(wù)器PC負(fù)責(zé)渲染驅(qū)動(dòng)39的處理,也只有一個(gè)語(yǔ)言監(jiān)視器32在服務(wù)器PC中起作用。因此,客戶端PC的打印機(jī)驅(qū)動(dòng)30和服務(wù)器PC 110的打印機(jī)驅(qū)動(dòng)30訪問(wèn)一個(gè)語(yǔ)言監(jiān)視器32。也就是說(shuō),當(dāng)客戶端PC的UI驅(qū)動(dòng)38訪問(wèn)語(yǔ)言監(jiān)視器32時(shí),客戶端PC的OS 10和服務(wù)器PC的OS 10在客戶端PC和服務(wù)器PC 110之間建立通信(例如,通過(guò)使用RPC(遠(yuǎn)程過(guò)程調(diào)用))。然后,Π驅(qū)動(dòng)38看起來(lái)正在訪問(wèn)客戶端PC的語(yǔ)言監(jiān)視器32。如上所述,在客戶端PC和服務(wù)器PC 110中安裝了相同的Window ,系統(tǒng)OS,因此客戶端PC和服務(wù)器PC 110能夠共享Window 系統(tǒng)OS打印架構(gòu)的語(yǔ)言監(jiān)視器32。利用由制造商唯一開發(fā)的模塊,往往會(huì)出現(xiàn)訪問(wèn)權(quán)限的不同和通信錯(cuò)誤;然而,在本實(shí)施例中,這種不便很少出現(xiàn)。此外,出于相同的原因,語(yǔ)言監(jiān)視器32與OS 10有很好的兼容性。在Point&Print 中,存在 RAW SPOOL 和 EMF SPOOL 的 spool 格式。然而,在 RAWSPOOL的情況下,沒(méi)有服務(wù)器側(cè)渲染。RAW SPOOL是應(yīng)用程序的處理,因此渲染的位置受到了限制。在其他情況下,也就是在RAW SPOOL的客戶端側(cè)渲染,EMF SPOOL的客戶端側(cè)渲染以及EMF SPOOL的服務(wù)器側(cè)渲染的情況下,如圖23所示使用語(yǔ)言監(jiān)視器32。圖24用于說(shuō)明Point&Print環(huán)境下的任務(wù)ID。當(dāng)客戶端PC通過(guò)RPC連接到服務(wù)器PC110,并且從客戶端PC獲取服務(wù)器PCllO的打印機(jī)的句柄時(shí),建立一個(gè)會(huì)話。當(dāng)建立一個(gè)會(huì)話時(shí),服務(wù)器PCl 10生成任務(wù)ID,并且把任務(wù)ID報(bào)告給客戶端PC。因此,在RAW SPOOL的客戶端側(cè)渲染,EMF SPOOL的客戶端側(cè)渲染以及EMF SPOOL的服務(wù)器側(cè)渲染的每種情況下,服務(wù)器PCllO都生成任務(wù)ID。產(chǎn)生任務(wù)ID的時(shí)機(jī)與第一實(shí)施例相同。在圖24中,客戶端PCl執(zhí)行應(yīng)用程序A,客戶端PC2執(zhí)行應(yīng)用程序A和B,以及客戶端PC3執(zhí)行應(yīng)用程序C。應(yīng)用程序在任意的時(shí)機(jī)指示打印開始。打印開始指令1:客戶端PC2+應(yīng)用程序A打印開始指令2:客戶端PCl+應(yīng)用程序A打印開始指令3:客戶端PC3+應(yīng)用程序C打印開始指令4:客戶端PC2+應(yīng)用程序B服務(wù)器PC 110的OS 10為打印開始指令1-4分配唯一的任務(wù)ID 1_4。也就是說(shuō),即使一個(gè)客戶端PC開始從單個(gè)的應(yīng)用程序開始打印時(shí),或者一個(gè)客戶端PC從多個(gè)應(yīng)用程序開始打印時(shí),或者一個(gè)客戶端PC從單個(gè)的應(yīng)用程序多次開始打印時(shí),服務(wù)器PC 110分配彼此不重疊的任務(wù)ID。與第一實(shí)施例類似,Π驅(qū)動(dòng)38能夠通過(guò)作為⑶I 34的DDI調(diào)用的DrvStartDoc O的變?cè)獊?lái)接收由客戶端PC從服務(wù)器PC 110獲取的任務(wù)ID。渲染驅(qū)動(dòng)39能夠通過(guò)從⑶I34傳送的DrvStartDoc O的變?cè)獜蘑荌 34來(lái)接收任務(wù)ID。圖25示意性地示出了 Point&Print環(huán)境下的RAW SPOOL的打印過(guò)程。在Point&Print環(huán)境下,當(dāng)用戶設(shè)置RAW SPOOL (服務(wù)器側(cè)渲染不能設(shè)置)時(shí),在客戶端PC執(zhí)行渲染處理(生成RAW數(shù)據(jù))。(I)應(yīng)用程序調(diào)用⑶I 34。此時(shí),服務(wù)器PC 110為服務(wù)器分配唯一的任務(wù)ID,并且將此任務(wù)ID返回至客戶端PC。(2)⑶I 34調(diào)用打印機(jī)驅(qū)動(dòng)30。(3)打印機(jī)驅(qū)動(dòng)30的渲染驅(qū)動(dòng)39通過(guò)DrvStartDocO的變?cè)獜蘑?34中獲取任務(wù)ID。此外,打印機(jī)驅(qū)動(dòng)30的UI驅(qū)動(dòng)38通過(guò)DrvDocumentEvent O D0CUMENTEVENT_STARTD0CP0ST O從⑶134獲取任務(wù)ID。當(dāng)UI驅(qū)動(dòng)38顯示打印對(duì)話框時(shí),用戶能夠改變打印設(shè)置。UI驅(qū)動(dòng)38通過(guò)SendRecvBidiDataFromPortO::set將打印設(shè)置設(shè)置在語(yǔ)言監(jiān)視器32中,其中該打印設(shè)置通過(guò)DrvEscapeO從渲染驅(qū)動(dòng)39獲取。然后,當(dāng)以頁(yè)為單位開始打印時(shí),渲染驅(qū)動(dòng)39通過(guò)SendRecvBidiDataFromPortO::get從語(yǔ)言監(jiān)視器32獲取打印設(shè)置。(4)根據(jù)所需, 渲染驅(qū)動(dòng)39執(zhí)行渲染處理,并且將打印數(shù)據(jù)發(fā)送至假脫機(jī)程序35。假脫機(jī)程序35假脫機(jī)打印數(shù)據(jù)(RAW數(shù)據(jù))。(5)假脫機(jī)程序35通過(guò)RPC將打印數(shù)據(jù)送至服務(wù)器PC 110。(6)處理轉(zhuǎn)換至服務(wù)器PC 110,服務(wù)器PC 110的打印處理器41假脫機(jī)打印數(shù)據(jù)。(7)假脫機(jī)程序35把打印數(shù)據(jù)傳送至語(yǔ)言監(jiān)視器32。(8)語(yǔ)言監(jiān)視器32和端口監(jiān)視器33將打印數(shù)據(jù)送至打印機(jī)。在此階段中,語(yǔ)言監(jiān)視器32不能執(zhí)行處理。如上所述,除了在服務(wù)器PC 110生成任務(wù)ID之外,打印過(guò)程與在本地操作打印機(jī)驅(qū)動(dòng)30的情況相同。因此,順序圖與圖20的相同。因此,在Point&Print環(huán)境下在RAWSPOOL的情況下,能夠?qū)崿F(xiàn)使用語(yǔ)言監(jiān)視器32管理任務(wù)ID和打印設(shè)置的操作。圖26示意性地示出了 Point&Print環(huán)境下的EMF SPOOL的打印過(guò)程(客戶端側(cè)渲染)。在Point&Print環(huán)境下,當(dāng)用戶設(shè)置EMF SPOOL時(shí),用戶能夠選擇渲染側(cè)。當(dāng)用戶選擇客戶端側(cè)渲染時(shí),能夠在客戶端PC執(zhí)行渲染處理(RAW數(shù)據(jù)的生成)。(I)應(yīng)用程序調(diào)用⑶I 34。此時(shí),服務(wù)器PC 110分配用于服務(wù)器的唯一的任務(wù)ID,并且將此任務(wù)ID返回至客戶端PC。(2)⑶I 34調(diào)用打印機(jī)驅(qū)動(dòng)30。打印機(jī)驅(qū)動(dòng)30的UI驅(qū)動(dòng)38通過(guò) DrvDocumentEventODOCUMENTEVENT STARTD0CP0ST O 從 GDI34 獲取任務(wù)ID。當(dāng)UI驅(qū)動(dòng)38顯示打印對(duì)話框時(shí) ,用戶能夠改變打印設(shè)置。UI驅(qū)動(dòng)38通過(guò)SendRecvBidiDataFromPort ()::set將通過(guò)DrvEscape O從渲染驅(qū)動(dòng)39獲取的打印設(shè)置設(shè)置在語(yǔ)言監(jiān)視器32中。⑶134從打印數(shù)據(jù)生成EMF數(shù)據(jù)。(3)假脫機(jī)程序35假脫機(jī)打印數(shù)據(jù)(EMF數(shù)據(jù))。(4)打印處理器41調(diào)用⑶134。(5)⑶134調(diào)用打印機(jī)驅(qū)動(dòng)30。(6)打印機(jī)驅(qū)動(dòng)30的渲染驅(qū)動(dòng)39通過(guò)DrvStartDoc O的變?cè)獜蘑?34中獲取任務(wù)ID。當(dāng)以頁(yè)為單位開始打印時(shí),渲染驅(qū)動(dòng)39通過(guò)SendRecvBidiDataFromPort O::get從語(yǔ)言監(jiān)視器32獲取打印設(shè)置。打印機(jī)驅(qū)動(dòng)30的渲染驅(qū)動(dòng)39從EMF數(shù)據(jù)生成RAW數(shù)據(jù)。(7)假脫機(jī)程序35通過(guò)RPC將打印數(shù)據(jù)(RAW數(shù)據(jù))傳送至服務(wù)器PC 110。(8)處理轉(zhuǎn)換至服務(wù)器PC 110,服務(wù)器PC 110的打印處理器41假脫機(jī)打印數(shù)據(jù)。(9)假脫機(jī)程序35把打印數(shù)據(jù)傳送至語(yǔ)言監(jiān)視器32。(10)語(yǔ)言監(jiān)視器32和端口監(jiān)視器33將打印數(shù)據(jù)送至打印機(jī)。在此階段中,語(yǔ)言監(jiān)視器32不能執(zhí)行處理。如上所述,在EMF SPOOL中,除了在服務(wù)器PC 110生成任務(wù)ID之外,打印過(guò)程與在本地操作打印機(jī)驅(qū)動(dòng)30的情況相同。即使通過(guò)OS 10的功能由客戶端PC和服務(wù)器PC110分開執(zhí)行處理,無(wú)論語(yǔ)言監(jiān)視器32在客戶端PC中還是在服務(wù)器PC 110中,客戶端PC的打印機(jī)驅(qū)動(dòng)30都能訪問(wèn)語(yǔ)言監(jiān)視器32。此外,渲染驅(qū)動(dòng)39能夠通過(guò)語(yǔ)言監(jiān)視器32獲取在打印已經(jīng)開始之后通過(guò)Π驅(qū)動(dòng)38的打印對(duì)話框改變的打印設(shè)置。因此,順序圖與圖21A和21B的相同。因此,在Point&Print環(huán)境下在EMFspool(客戶端側(cè)渲染)的情況下,能夠?qū)崿F(xiàn)使用語(yǔ)言監(jiān)視器32管理任務(wù)ID和打印設(shè)置的操作。圖27示意性地示出了 Point&Print環(huán)境下的EMF spool (服務(wù)器側(cè)渲染)的打印過(guò)程。在Point&Print環(huán)境下,當(dāng)用戶設(shè)置EMF spool時(shí),用戶能夠選擇渲染側(cè)。當(dāng)用戶選擇服務(wù)器側(cè)渲染時(shí),能夠在服務(wù)器PC 110執(zhí)行渲染處理(RAW數(shù)據(jù)的生成)。(I)應(yīng)用程序調(diào)用⑶I 34。此時(shí),服務(wù)器PC 110分配用于服務(wù)器的唯一的任務(wù)ID,并且將此任務(wù)ID返回至客戶端PC。(2)⑶I 34調(diào)用打印機(jī)驅(qū)動(dòng)30。打印機(jī)驅(qū)動(dòng)30的UI驅(qū)動(dòng)38通過(guò) DrvDocumentEvent O D0CUMENTEVENT_STARTD0CP0ST O 從 GDI 34 獲取任務(wù)ID。當(dāng)UI驅(qū)動(dòng)38顯示打印對(duì)話框時(shí),用戶能夠改變打印設(shè)置。UI驅(qū)動(dòng)38通過(guò)SendRecvBidiDataFromPort O::set將打印設(shè)置設(shè)置在語(yǔ)言監(jiān)視器32中,其中該打印設(shè)置通過(guò)DrvEscape O從渲染驅(qū)動(dòng)39獲取。⑶134從打印數(shù)據(jù)生成EMF數(shù)據(jù)。(3)假脫機(jī)程序35假脫機(jī)打印數(shù)據(jù)(EMF數(shù)據(jù))。(4)假脫機(jī)程序35通過(guò)RPC將打印數(shù)據(jù)(EMF數(shù)據(jù))傳送至服務(wù)器PC 110。(5)處理轉(zhuǎn)換至服務(wù)器PC 110,服務(wù)器PC 110的打印處理器41調(diào)用⑶I 34。(6)⑶I 34調(diào)用打印機(jī)驅(qū)動(dòng)30。(7)打印機(jī)驅(qū)動(dòng)30的渲染驅(qū)動(dòng)39通過(guò)DrvStartDoc O的變?cè)獜蘑?34中獲取任務(wù)ID。然后,當(dāng)以頁(yè)為單位開始打印時(shí),渲染驅(qū)動(dòng)39通過(guò)SendRecvBidiDataFromPort O::get從語(yǔ)言監(jiān)視器32獲取打印設(shè)置。打印機(jī)驅(qū)動(dòng)30的渲染驅(qū)動(dòng)39從EMF數(shù)據(jù)生成RAW數(shù)據(jù)。打印機(jī)驅(qū)動(dòng)30假脫機(jī)打印數(shù)據(jù)(RAW數(shù)據(jù))。(8)假脫機(jī)程序35把打印數(shù)據(jù)傳送至語(yǔ)言監(jiān)視器32。(9)語(yǔ)言監(jiān)視器32和端口監(jiān)視器33將打印數(shù)據(jù)送至打印機(jī)。在此階段中,語(yǔ)言監(jiān)視器32不能執(zhí)行處理。如上所述,在EMF SPOOL中,除了在服務(wù)器PC 110生成打印任務(wù)ID之外,打印過(guò)程與在本地操作打印機(jī)驅(qū)動(dòng)30的情況相同。即使,通過(guò)OS 10的功能由客戶端PC和服務(wù)器PC 110分開執(zhí)行處理,無(wú)論語(yǔ)言監(jiān)視器32在客戶端PC中還是在服務(wù)器PC 110中,打印機(jī)驅(qū)動(dòng)30都能訪問(wèn)語(yǔ)言監(jiān)視器32。此外,渲染驅(qū)動(dòng)39能夠通過(guò)語(yǔ)言監(jiān)視器32獲取在打印已經(jīng)開始之后通過(guò)Π驅(qū)動(dòng)38的打印對(duì)話框改變的打印設(shè)置。因此,順序圖與圖21A和21B的相同。因此,在Point&Print環(huán)境下在EMFSPOOL(客戶端側(cè)渲染)的情況下,能夠?qū)崿F(xiàn)使用語(yǔ)言監(jiān)視器32管理任務(wù)ID和打印設(shè)置的操作。根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供一種信息處理裝置,無(wú)論spool格式如何不同或打印器驅(qū)動(dòng)的安裝環(huán)境如何,該信息處理裝置都能夠在已經(jīng)開始打印之后改變打印設(shè)置。該信息處理裝置和系統(tǒng)不限于在此文中描述的具體的實(shí)施例,在不脫離本發(fā)明的范圍的情況下可以進(jìn)行任意的 變形和修改。本發(fā)明基于于2011年10月13日提交的日本在先專利申請(qǐng)N0.2011-226153,其內(nèi)容通過(guò)引用全部納入此文。
權(quán)利要求
1.一種信息處理裝置,包括: 操作接收單元,被配置成接收操作; 設(shè)置接收單元,被配置成在所述操作接收單元接收到開始打印指令或開始傳送指令之后,顯示用于打印或傳送的設(shè)置條件,并且接收對(duì)所述設(shè)置條件的改變; 圖像處理單元,被配置成從文檔數(shù)據(jù)提供單元獲取作為打印目標(biāo)或傳送目標(biāo)的文檔數(shù)據(jù),并且根據(jù)所述設(shè)置條件將所述文檔數(shù)據(jù)轉(zhuǎn)換成打印設(shè)備的打印數(shù)據(jù);以及 設(shè)置條件存儲(chǔ)單元,在該設(shè)置條件存儲(chǔ)單元中,經(jīng)過(guò)操作系統(tǒng)通過(guò)使用由所述設(shè)置接收單元獲取的識(shí)別信息作為密鑰來(lái)存儲(chǔ)所述設(shè)置條件,其中所述識(shí)別信息識(shí)別打印處理或傳送處理并且由所述操作系統(tǒng)根據(jù)所述開始打印指令或開始傳送指令而生成,其中, 所述圖像處理單元從所述操作系統(tǒng)中獲取所述識(shí)別信息,并且通過(guò)使用所述識(shí)別信息作為密鑰經(jīng)由所述操作系統(tǒng)從所述設(shè)置條件存儲(chǔ)單元讀取所述設(shè)置條件,并且基于所述設(shè)置條件將所述文檔數(shù)據(jù)轉(zhuǎn)換成所述打印設(shè)備的打印數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的信息處理裝置,其中, 當(dāng)所述設(shè)置接收單元在接收到開始打印指令或開始傳送指令之后顯示用于打印或傳送的所述設(shè)置條件時(shí),所述設(shè)置接收單元調(diào)用所述操作系統(tǒng)的預(yù)定的API函數(shù)以從所述圖像處理單元獲取所述設(shè)置條件。
3.根據(jù)權(quán)利要求1所述的信息處理裝置,其中, 所述設(shè)置接收單元獲取由所述操作接收單元在顯示用于打印或傳送所述設(shè)置條件之后接收的指示執(zhí)行打印或執(zhí)行傳送或取消打印或取消傳送的操作結(jié)果,并且將所述操作結(jié)果與所述設(shè)置條件一起存儲(chǔ)在所述設(shè)置條件存儲(chǔ)單元中,以及 當(dāng)從所述設(shè)置條件存儲(chǔ)單元讀取的操作結(jié)果指示取消打印或取消傳送時(shí),所述圖像處理單元取消將所述文檔數(shù)據(jù)轉(zhuǎn)換成所述打印數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的信息處理裝置,其中, 所述設(shè)置條件存儲(chǔ)單元是語(yǔ)言監(jiān)視器,以及 所述設(shè)置接收單元通過(guò)使用所述識(shí)別信息作為密鑰調(diào)用所述操作系統(tǒng)的預(yù)定的API函數(shù),來(lái)在所述語(yǔ)言監(jiān)視器中存儲(chǔ)所述設(shè)置條件。
5.根據(jù)權(quán)利要求4所述的信息處理裝置,其中, 所述圖像處理單元通過(guò)使用所述識(shí)別信息作為密鑰調(diào)用所述操作系統(tǒng)的預(yù)定的API函數(shù),來(lái)從所述語(yǔ)言監(jiān)視器中讀取所述設(shè)置條件。
6.根據(jù)權(quán)利要求1所述的信息處理裝置,其中, 每次所述操作接收單元接收到開始打印指令或開始傳送指令時(shí),所述操作系統(tǒng)在所述信息處理裝置中生成任務(wù)ID作為所述識(shí)別信息的唯一項(xiàng)。
7.根據(jù)權(quán)利要求6所述的信息處理裝置,其中, 所述操作系統(tǒng) 對(duì)于由不同的文檔數(shù)據(jù)提供單元提供的文檔數(shù)據(jù)的打印處理或傳送處理,生成所述識(shí)別信息的唯一項(xiàng), 對(duì)于由相同的文檔數(shù)據(jù)提供單元提供的不同的文檔數(shù)據(jù)的打印處理或傳送處理,生成所述識(shí)別信息的唯一項(xiàng),以及 對(duì)于由相同的文檔數(shù)據(jù)提供單元提供的相同的文檔數(shù)據(jù)的不同的打印處理或傳送處理,生成所述識(shí)別信息的唯一項(xiàng)。
8.根據(jù)權(quán)利要求1所述的信息處理裝置,其中, 在所述操作接收單元接收開始打印指令或開始傳送指令之后且在所述操作系統(tǒng)生成不依賴于所述打印設(shè)備的中間打印數(shù)據(jù)之前,所述設(shè)置接收單元通過(guò)使用所述識(shí)別信息作為密鑰來(lái)在所述設(shè)置條件存儲(chǔ)單元中存儲(chǔ)所述設(shè)置條件,并且 在所述操作系統(tǒng)從所述打印處理或所述傳送處理中釋放所述文檔數(shù)據(jù)提供單元之后, 被所述操作系統(tǒng)調(diào)用的所述圖像處理單元通過(guò)使用所述識(shí)別信息作為密鑰來(lái)從所述設(shè)置條件存儲(chǔ)單元讀取所述設(shè)置條件。
9.一種系統(tǒng),在該系統(tǒng)中第一信息處理裝置、第二信息處理裝置以及打印設(shè)備通過(guò)網(wǎng)絡(luò)連接,所述系統(tǒng)包括: 操作接收單元,被配置成接收操作; 設(shè)置接收單元,被配置成在所述操作接收單元接收到開始打印指令或開始傳送指令之后,顯示用于打印或傳送的設(shè)置條件,并且接收對(duì)所述設(shè)置條件的改變; 圖像處理單元,被配置成從文檔數(shù)據(jù)提供單元獲取作為打印目標(biāo)或傳送目標(biāo)的文檔數(shù)據(jù),并且基于所述設(shè)置條件將所述文檔數(shù)據(jù)轉(zhuǎn)換成打印設(shè)備的打印數(shù)據(jù);以及 設(shè)置條件存儲(chǔ)單元,被提供在所述第二信息處理裝置中,在所述設(shè)置條件存儲(chǔ)單元中,經(jīng)過(guò)所述第一信息處理裝置和所述第二信息處理裝置的操作系統(tǒng)通過(guò)使用由所述設(shè)置接收單元獲取的識(shí)別信息作為密鑰來(lái)存儲(chǔ)所述設(shè)置條件,其中所述識(shí)別信息識(shí)別打印處理或傳送處理并且由所述第二信息處理裝置的所述操作系統(tǒng)根據(jù)開始打印指令或開始傳送指令而生成,其中, 所述圖像處理單元從所述第二信息處理裝置的所述操作系統(tǒng)中獲取所述識(shí)別信息,并且通過(guò)使用所述識(shí)別信息作為密鑰經(jīng)由至少所述第二信息處理裝置的所述操作系統(tǒng)從所述設(shè)置條件存儲(chǔ)單元讀取所述設(shè)置條件,并且基于所述設(shè)置條件將所述文檔數(shù)據(jù)轉(zhuǎn)換成所述打印設(shè)備的打印數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中, 所述第一信息處理裝置包括所述操作接收單元、所述設(shè)置接收單元以及所述圖像處理單元,且 所述第一信息處理裝置將所述打印數(shù)據(jù)傳送至所述第二信息處理裝置。
11.根據(jù)權(quán)利要求9所述的系統(tǒng),其中, 所述第一信息處理裝置包括所述操作接收單元和所述設(shè)置接收單元, 所述第二信息處理裝置包括所述圖像處理單元, 所述第一信息處理裝置將由所述第一信息處理裝置的操作系統(tǒng)從所述文檔數(shù)據(jù)轉(zhuǎn)換的不依賴于所述打印設(shè)備的中間打印數(shù)據(jù),傳送至所述第二信息處理裝置,以及 所述圖像處理單元通過(guò)使用所述識(shí)別信息作為密鑰從所述第二信息處理裝置的所述設(shè)置條件存儲(chǔ)單元讀取所述設(shè)置條件,并且基于所述設(shè)置條件將所述中間打印數(shù)據(jù)轉(zhuǎn)換成所述打印設(shè)備的打印數(shù)據(jù)。
12.—種非瞬時(shí)的計(jì)算機(jī)可讀記錄介質(zhì),存儲(chǔ)使得包括用于接收操作的操作接收單元的信息處理裝置執(zhí)行如下的方法的程序,該方法包括: 在所述操作接收單元接收開始打印指令或開始傳送指令之后,顯示用于打印或傳送的設(shè)置條件,并且接收對(duì)所述設(shè)置條件的改變; 通過(guò)設(shè)置模塊來(lái)獲取識(shí)別信息,其中所述識(shí)別信息識(shí)別打印處理或傳送處理并且由操作系統(tǒng)根據(jù)開始打印指令或開始傳送指令生成; 通過(guò)使用所述識(shí)別信息作為密鑰經(jīng)由所述操作系統(tǒng)在設(shè)置條件存儲(chǔ)單元中存儲(chǔ)所述設(shè)置條件; 通過(guò)圖像處理模塊從所述操作系統(tǒng)獲取所述識(shí)別信息; 通過(guò)所述圖像處理模塊,通過(guò)使用所述識(shí)別信息作為密鑰經(jīng)由所述操作系統(tǒng)從所述設(shè)置條件存儲(chǔ)單元中讀取所述設(shè)置條件; 基于從所述設(shè)置條件存儲(chǔ)單元讀取的所述設(shè)置條件,通過(guò)所述圖像處理模塊將由文檔數(shù)據(jù)提供單元提供的 作為打印目標(biāo)或傳送目標(biāo)的文檔數(shù)據(jù)傳換成打印設(shè)備的打印數(shù)據(jù)。
全文摘要
本發(fā)明涉及信息處理裝置和系統(tǒng)。信息處理裝置包括操作接收單元,用于接收操作;設(shè)置接收單元,用于在操作接收單元接收到開始打印或傳送的指令后,顯示用于打印或傳送的設(shè)置條件并接收對(duì)設(shè)置條件的改變;及,存儲(chǔ)單元,在存儲(chǔ)單元中,由設(shè)置接收單元經(jīng)過(guò)操作系統(tǒng)通過(guò)使用由設(shè)置接收單元獲取的識(shí)別信息作為密鑰來(lái)存儲(chǔ)設(shè)置條件,其中識(shí)別信息識(shí)別打印處理或傳送處理并由操作系統(tǒng)根據(jù)開始打印或傳送的指令生成。圖像處理單元從操作系統(tǒng)獲取識(shí)別信息并通過(guò)使用識(shí)別信息作為密鑰從存儲(chǔ)單元讀取設(shè)置條件,并基于設(shè)置條件將文檔數(shù)據(jù)轉(zhuǎn)換成打印設(shè)備的打印數(shù)據(jù)。
文檔編號(hào)G06F3/12GK103218183SQ201210387450
公開日2013年7月24日 申請(qǐng)日期2012年10月12日 優(yōu)先權(quán)日2011年10月13日
發(fā)明者小林纮士 申請(qǐng)人:株式會(huì)社理光