打印服務(wù)器的升級(jí)遷移
Microsoft Windows 2000 引入了一個(gè)全新的 Microsoft Windows NT 操作系統(tǒng)版本。與Windows NT 的以前版本相比,Windows 2000 在許多方面都進(jìn)行了重大改動(dòng),打印子系統(tǒng)只是其中的一個(gè)方面。即便這些改動(dòng)所帶來(lái)的好處在操作系統(tǒng)的穩(wěn)定性和可靠性方面得到了印證,但仍然付出了一定的代價(jià)。在升級(jí)和遷移到 Windows 2000 或 Windows Server 2003 之時(shí),公司常常發(fā)現(xiàn)自己處在一個(gè)混合了 Windows NT 4.0 以及 Windows 2000、Windows XP 或 Windows Server 2003 系列操作系統(tǒng)的環(huán)境中。
使用本地和遠(yuǎn)程(客戶端和服務(wù)器)驅(qū)動(dòng)程序功能和設(shè)置生成打印作業(yè)的網(wǎng)絡(luò)打印更增加了互操作性方面的復(fù)雜性。由于這個(gè)原因,包含 Windows NT 4.0 以及 Windows 2000、Windows XP 或 Windows Server 2003 系列操作系統(tǒng)的環(huán)境中的網(wǎng)絡(luò)打印會(huì)給各家公司帶來(lái)一些難題。
本文旨在幫助解釋存在于網(wǎng)絡(luò)打印環(huán)境中的過(guò)程及環(huán)境條件,尤其當(dāng)這些條件與 Windows NT 操作系統(tǒng)的混合版本相關(guān)時(shí)。另外,還討論了可用于處理這些問(wèn)題的各種方法。
一些由混合了 Windows NT 4.0 及更新的 Windows 版本的環(huán)境所引起的互操作性問(wèn)題扎根于對(duì)打印機(jī)驅(qū)動(dòng)程序結(jié)構(gòu)模型所做的改動(dòng)。本文分析了從內(nèi)核模式到用戶模式進(jìn)程空間的遷移,以及 Microsoft 通用打印機(jī)驅(qū)動(dòng)程序的升級(jí)。只有當(dāng)驅(qū)動(dòng)程序模式產(chǎn)生互操作性問(wèn)題時(shí),才會(huì)涉及與打印機(jī)硬件的設(shè)備局限性相關(guān)的其他問(wèn)題。本文還探討了設(shè)備字體支持如何影響處在 Windows NT 4.0 升級(jí)過(guò)渡期的客戶。
請(qǐng)注意有關(guān)這方面的論述緊緊圍繞各公司因升級(jí)數(shù)萬(wàn)臺(tái)客戶端以遷移到 Windows 2000 或更新版本所帶來(lái)的挑戰(zhàn)而要面對(duì)的過(guò)渡期,這一點(diǎn)很重要。混合或舊式客戶端無(wú)法完全獲得 Windows 2000 及更新版本的打印改進(jìn)功能所帶來(lái)的裨益。本文假設(shè)客戶的目標(biāo)是為了獲得一個(gè)所有客戶端和服務(wù)器都運(yùn)行 Windows 2000 或更新版本的網(wǎng)絡(luò)打印環(huán)境。
Windows 2000 和 Windows Server 2003 打印體系結(jié)構(gòu)
認(rèn)識(shí) Windows 打印子系統(tǒng)對(duì)于確定因存在包含 Windows NT、Windows 2000 或 Windows Server 2003 系列操作系統(tǒng)的混合環(huán)境而引發(fā)的互操作性問(wèn)題很有幫助。Windows 2000(及 Windows 的更新版本)的打印體系結(jié)構(gòu)由一個(gè)后臺(tái)打印程序和一組打印機(jī)驅(qū)動(dòng)程序組成。通過(guò)調(diào)用與設(shè)備無(wú)關(guān)的 Win32 打印和圖形設(shè)備接口 (GDI) 函數(shù),應(yīng)用程序可以創(chuàng)建打印作業(yè)并發(fā)送給各種設(shè)備,包括激光打印機(jī)、矢量繪圖儀、光柵打印機(jī)和傳真機(jī)。打印機(jī)驅(qū)動(dòng)程序包括一個(gè)允許用戶控制打印機(jī)的可選項(xiàng)的用戶接口 (UI) 組件。
應(yīng)用程序?qū)?Win32 GDI 函數(shù)的調(diào)用會(huì)傳遞給 GDI 圖形引擎,由該引擎將繪圖指令作為增強(qiáng)型圖元文件 (EMF) 進(jìn)行后臺(tái)處理,或者同打印機(jī)驅(qū)動(dòng)程序一起提供可發(fā)送給后臺(tái)打印程序的可打印的圖像。后臺(tái)打印程序組件會(huì)解析 EMF 文件,并能在數(shù)據(jù)流中插入頁(yè)面布局信息和作業(yè)控制指令。后臺(tái)打印程序隨后會(huì)將數(shù)據(jù)流發(fā)送給目標(biāo)打印機(jī)的 I/O 端口相關(guān)聯(lián)的串行、并行或網(wǎng)絡(luò)端口驅(qū)動(dòng)程序。設(shè)備會(huì)解析作業(yè)(針對(duì)設(shè)備以打印機(jī)描述語(yǔ)言 (PDL) 進(jìn)行了格式化),并輸出打印好的文檔。
后臺(tái)打印程序和驅(qū)動(dòng)程序組件被設(shè)計(jì)為可替代的,從而使硬件供應(yīng)商可以輕松地對(duì)新的硬件增加支持。
Windows 2000 對(duì)打印機(jī)驅(qū)動(dòng)程序所做的改動(dòng)
打印機(jī)驅(qū)動(dòng)程序是一種可將應(yīng)用程序數(shù)據(jù)轉(zhuǎn)化為打印設(shè)備可用以創(chuàng)建打印頁(yè)的格式的軟件。在 Windows NT 4.0 中,所有打印機(jī)驅(qū)動(dòng)程序都以內(nèi)核模式運(yùn)行。這些驅(qū)動(dòng)程序稱為 Windows 打印環(huán)境中的第 2 版驅(qū)動(dòng)程序。Windows 2000 及更新版本本質(zhì)上支持用戶模式驅(qū)動(dòng)程序,同時(shí)還專門支持內(nèi)核模式驅(qū)動(dòng)程序以實(shí)現(xiàn)向后兼容。Microsoft 轉(zhuǎn)而采用用戶模式驅(qū)動(dòng)程序(也稱為第 3 版驅(qū)動(dòng)程序)以實(shí)現(xiàn)系統(tǒng)可靠性和穩(wěn)定性。采用內(nèi)核模式驅(qū)動(dòng)程序,出現(xiàn)一個(gè)錯(cuò)誤就會(huì)令整臺(tái)服務(wù)器崩潰,而對(duì)于用戶模式驅(qū)動(dòng)程序,錯(cuò)誤僅會(huì)影響運(yùn)行驅(qū)動(dòng)程序的進(jìn)程——通常是后臺(tái)打印程序。重新啟動(dòng)后臺(tái)打印程序要比重啟整個(gè)系統(tǒng)快得多。此外,當(dāng)后臺(tái)打印程序出現(xiàn)故障時(shí),用戶仍可運(yùn)用服務(wù)器的其他服務(wù)。Windows Server 2003 默認(rèn)對(duì)后臺(tái)打印程序服務(wù)提供自動(dòng)恢復(fù)功能。(服務(wù)控制管理器中的一項(xiàng)設(shè)置)
將打印機(jī)驅(qū)動(dòng)程序從內(nèi)核模式遷移到用戶模式并不是 Windows 2000 所做的唯一改動(dòng),還引入了 Microsoft 通用打印機(jī)驅(qū)動(dòng)程序 (Unidrv)。這一打印機(jī)驅(qū)動(dòng)程序核心取代了 Windows NT 4.0 及更早版本中的光柵設(shè)備驅(qū)動(dòng)程序 (RASDD) 接口。Unidrv 背后的概念是:不用獨(dú)立硬件供應(yīng)商 (IHVs) 編寫整個(gè)驅(qū)動(dòng)程序,就可使用 Unidrv 引擎的核心打印功能,并且只需通過(guò)運(yùn)用微型驅(qū)動(dòng)程序提供特定于設(shè)備的功能。微型驅(qū)動(dòng)程序通常是一個(gè)自定義文件,或者可能是一個(gè)插件,可提供特殊的生成功能或自定義的 UI 選項(xiàng)。核心打印機(jī)控制語(yǔ)言 (PCL) 引擎 (Unidriv.dll) 和 PostScript 引擎 (PScript5.dll) 均允許使用微型驅(qū)動(dòng)程序。Unidrv 微型驅(qū)動(dòng)程序的自定義文件為 .gpd 文件,而對(duì)于 PostScript 微型驅(qū)動(dòng)程序,則為 .ppd 文件。
Windows Server 2003 附帶了 3,800 種打印設(shè)備的驅(qū)動(dòng)程序。雖然這些驅(qū)動(dòng)程序由 Microsoft 提供給 Windows Server 2003,但是其中大部分都是各個(gè)打印機(jī)制造商提供給 Microsoft 的。這些所謂的 inbox 驅(qū)動(dòng)程序都包含在各自的產(chǎn)品中。雖然標(biāo)準(zhǔn)打印驅(qū)動(dòng)程序完全可滿足絕大多數(shù)企業(yè)打印設(shè)備,但是打印機(jī)制造商可能會(huì)選擇開(kāi)發(fā)自己的驅(qū)動(dòng)程序以供用戶使用,而不采用 Unidrv.這類驅(qū)動(dòng)程序通常稱為一體化驅(qū)動(dòng)程序,因?yàn)樗鼈儾⑽幢粚?shí)施為 UniDrv 微型驅(qū)動(dòng)程序。(許多制造商現(xiàn)在都開(kāi)始致力于讓他們所有的驅(qū)動(dòng)程序都采用 UniDrv 模型而非傳統(tǒng)的一體化模型。)
總的來(lái)說(shuō),有這幾種驅(qū)動(dòng)程序類型:
內(nèi)核模式(第 2 版)或用戶模式(第 3 版)
PostScript (PS) 或 PCL
微型驅(qū)動(dòng)程序或一體化驅(qū)動(dòng)程序
注意:
驅(qū)動(dòng)程序可以是上述不同類型的組合——例如,核心模式 PCL 驅(qū)動(dòng)程序、用戶模式一體化驅(qū)動(dòng)程序、PostScript 微型驅(qū)動(dòng)程序。(Windows 2000 或 Windows Server 2003 所附帶的驅(qū)動(dòng)程序均為用戶模式。)
根據(jù)具體的設(shè)備類型,所有這些驅(qū)動(dòng)程序類型都可從打印機(jī)制造商處獲得。Windows 2000 及更新版本所附帶的 inbox 驅(qū)動(dòng)程序也由打印機(jī)制造商提供,并經(jīng)許可才能分發(fā)。Microsoft 為 Windows 2000、Windows XP 和 Windows Server 2003 提供的所有驅(qū)動(dòng)程序均為 Unidrv 或 PostScript 微型驅(qū)動(dòng)程序,并且在所有這些平臺(tái)上都可兼容。
獨(dú)立硬件供應(yīng)商 (IHV) 還提供了 Windows CD 所沒(méi)有附帶的微型驅(qū)動(dòng)程序。
如果能夠認(rèn)識(shí)到各種打印機(jī)驅(qū)動(dòng)程序間的差異,就會(huì)更清楚地了解混合與匹配驅(qū)動(dòng)程序如何導(dǎo)致網(wǎng)絡(luò)打印環(huán)境出現(xiàn)問(wèn)題。因?yàn)?Windows NT 4.0 只能運(yùn)行內(nèi)核模式打印驅(qū)動(dòng)程序,而 Windows 2000 和 Windows Server 2003 可同時(shí)支持用戶模式和內(nèi)核模式驅(qū)動(dòng)程序,解決不兼容問(wèn)題有時(shí)牽涉到修改運(yùn)行 Windows 2000 或 Windows Server 2003 的服務(wù)器,以便匹配 Windows NT 4.0 服務(wù)器。
升級(jí)到 Windows 2000 Server 或 Server 2003 系列操作系統(tǒng)
從 Windows NT 4 Server 升級(jí)到 Windows 2000 或 Windows Server 2003 之前,許多 IHV 都建議卸載所有 IHV 打印機(jī)驅(qū)動(dòng)程序,并對(duì) Windows 2000 和 Windows Server 2003 系列操作系統(tǒng)重新安裝有關(guān)打印機(jī)驅(qū)動(dòng)程序的最新版本。Microsoft 推薦用戶使用 Fixprnsv.exe 實(shí)用工具,其位于 Windows Server CD 上的 \Printers\Fixprnsv 目錄。此實(shí)用工具可幫助在升級(jí)前確定已知的不良驅(qū)動(dòng)程序,并用兼容的驅(qū)動(dòng)程序取而代之。如果 Windows CD 上沒(méi)有可供替代的驅(qū)動(dòng)程序,那么該實(shí)用工具會(huì)提示用戶從打印機(jī)制造商那里獲取經(jīng)過(guò)更新的驅(qū)動(dòng)程序。Microsoft 推薦用戶按照 IHV 的指示更新系統(tǒng)上的打印驅(qū)動(dòng)程序,然后運(yùn)用 Fixprnsv.exe 實(shí)用工具定位可能在升級(jí)期間產(chǎn)生問(wèn)題的其他打印驅(qū)動(dòng)程序。
下面幾節(jié)將介紹如果在升級(jí)到 Windows 2000 或 Windows Server 2003 系列操作系統(tǒng)之前沒(méi)有卸載驅(qū)動(dòng)程序可能發(fā)生的情況。
驅(qū)動(dòng)程序的升級(jí)過(guò)程
從 Windows NT 4.0 升級(jí)到 Windows 2000 或更新版本時(shí),可能會(huì)發(fā)生許多與打印機(jī)驅(qū)動(dòng)程序有關(guān)的情況。本節(jié)對(duì)每一種情況都進(jìn)行了介紹。
Windows NT 4.0 操作系統(tǒng)附帶的 inbox 驅(qū)動(dòng)程序(PCL 和 PostScript)都被升級(jí)到 Windows 2000 或 Windows Server 2003 系列操作系統(tǒng)的新版驅(qū)動(dòng)程序。(將 Windows 2000 Server 升級(jí)到 Windows Server 2003 系列操作系統(tǒng)也會(huì)發(fā)生同樣的替代/更新?tīng)顩r。)
驅(qū)動(dòng)程序型號(hào)名與 Windows 2000 或 Windows Server 2003 系列操作系統(tǒng)的驅(qū)動(dòng)程序名稱完全匹配的 IHV 驅(qū)動(dòng)程序(PCL 或 PostScript)會(huì)在不受用戶干涉的情況下升級(jí)到 inbox 驅(qū)動(dòng)程序。
不使用因穩(wěn)定性因素而被阻止的驅(qū)動(dòng)程序。在升級(jí)期間,使用這些驅(qū)動(dòng)程序的打印機(jī)會(huì)被移除。如果某臺(tái)打印機(jī)直接到一臺(tái)計(jì)算機(jī)并擁有一個(gè)可識(shí)別的即插即用 ID,那么 Windows 會(huì)為其搜索一個(gè)合適的驅(qū)動(dòng)程序。如果找到了合適的驅(qū)動(dòng)程序,該打印機(jī)會(huì)在升級(jí)期間作為新的打印機(jī)進(jìn)行安裝。
未被阻止并且不存在名稱匹配的驅(qū)動(dòng)程序?qū)⒃谡麄€(gè)升級(jí)期間保持不變。
Windows NT 4.0 Inbox 驅(qū)動(dòng)程序
在升級(jí)過(guò)程中,所有 Windows NT 4.0 PCL 驅(qū)動(dòng)程序 (RASDD) 都將被升級(jí)到最新的 Unidrv 驅(qū)動(dòng)程序。(UNIDRV5 用于 Windows 2000,而 UNIDRV5.1 則用于 Windows Server 2003 系列操作系統(tǒng)。)Windows NT 4.0 所附帶的 PostScript 驅(qū)動(dòng)程序在 Windows 2000 或 Windows Server 2003 系列操作系統(tǒng)