Window CE 印表機驅動實現

來源:互聯網
上載者:User

Windows CE 2.0及其以上版本包括對印表機的支援。Windows CE作業系統使用的列印模型是為基於Windows CE的案頭平台定義的列印模型的子集。只有少量為印表機驅動程式定義的圖形驅動程式函數是Windows CE的印表機驅動程式所需要的。

Windows CE的圖形顯示介面(GDI)和顯示驅動程式完成與列印有關的大部分工作。在列印處理的開始,GDI產生帶屬性的裝置背景deviec context,這些屬性是在調用DrvEnablePDEV函數時從印表機驅動程式得到的。顯示驅動程式用於提交(render)隨後的繪圖指令,該指令是由應用程式發向DC的:印表機驅動程式並不提交(render)這個文檔。然後,GDI把結果點陣圖發送給印表機驅動程式,這樣印表機驅動程式才能格式化點陣圖並把它發送給印表機。為了節省記憶體,GDI以批處理方式提交文檔,也就是頁面的水平不分:然後GDI多次調用印表機驅動程式把提交的文檔發送給印表機。

基於Windows CE的印表機驅動程式只能實現些圖形驅動程式函數,這些函數是在搜集印表機度量標準、設定印表機、開始和結束列印任務和準備提交的列印內容時所必需的。中間過程中,印表機驅動程式還把點陣圖資料從GDI bitmap格式轉換為印表機所要求的格式。其中的操作包括把顏色簡化到印表機的色彩空間、資料壓縮、把資料轉換成有時被稱作印表機描述語言的印表機使用格式等。最後,印表機驅動程式調用監視器把提交的列印內容發送給印表機。

基於Windows CE的印表機驅動程式被編譯為(.DLL)因此它必須輸出DrvEnableDriver函數。

下面是印表機驅動程式必須實現的函數:

1.DrvCopyBits 由GDI調用用於把已提交的批次拷貝到印表機驅動程式。在調用函數DrvDisablePDEV時,印表機驅動程式指定在調用這個函數時要用到的點陣圖格式

2.DrvDisbalePDEV用於在印表機裝置環境不再需要時釋放驅動程式使用的記憶體和資源

3.DrvDisableSurfacd由GDI調用用來通知印表機驅動程式為當前列印裝置環境而產生的外表(Windws CE)不再支援

4.DrvEnableDriver從GDI接受兩個回呼函數的指標,並且為印表機驅動程式實現的其它的進入點返回GDI函數指標

5.DrvEnablePdev由GDI使用,用來為目標印表機收集印表機度量標準。印表機驅動程式返回在GDINFO結構中指定的裝置

6. DrvEndDoc由GDI調用來結束或中途停止一個列印工作7. DrvGetModes把印表機驅動程式支援的確省列印模式資訊返回給GDI。印表機驅動程式返回在DEVMODE結構中的卻省配置8. DrvStartDoc由GDI調用,來開始一個列印工作9. DrvStartPage由GDI調用來開始一個列印工作的下一頁

Windows CE使用註冊健來存放裝置的全域印表機設定和單個印表機驅動程式的配置資訊。KVStore for Redis在註冊表的KEY_LOCAL_MACHINE/Printers/下。

1. 全域印表機設定

儲存在註冊表中的全域印表機設定列舉了列印使用的輸入輸入(I/O)口,提供了全域逾時值以及儲存了所選擇的卻省狀態下的印表機驅動程式。卻省印表機驅動程式儲存為DefaultPrinter的值。印表機的介面儲存為/Ports子健的值。 下面的註冊檔案摘錄定義了5個印表機口,兩個逾時和卻省的印表機驅動程式。

(HKEY_LOCAL_MACHINE/Printers/Ports)“Port1”=”COM1:9600”“Port2”=”COM1:57600”“Port3”=”IRDA”“Port4”=”LPT:”“Port5”=”NET0:”(HKEY_LOCAL_MACHINE/Printers/Settings)“TimeOut”=dword:1E(HKEY_LOCAL_MACHINE/PrinterSettings)“TimeOut”=dword:2D(HKEY_LOCAL_MACHINE/Printers)DefaultPrinter”=”PCL Laster”

值分別為9600傳輸速率和57,600傳輸速率的串口、一個紅外口、一個並行口和一個網路印表機介面。對兩個COM1:口,分別指定了相應的傳輸速率。介面監視器分析了要提取的傳輸速率值和裝置檔案名稱。在Windows CE2.0中,COM3:口設定為紅外。然而在2.10和以後的版本中心檔案名稱“IRDA”與留為紅外口,而COM3:用於額外的串列口。在為列印分配紅外口時,介面的索引值必須是字串”IRDA”,儘管該值並不是指定裝置檔案名稱的標準格式。名稱”LPT1:”和”NET0:”分別預留為並行口和網路列印口,儘管這些名稱中裝置檔案名稱索引可以是任何合法值。 Windows CE 2.02及其以後版本都使用了TimeOut鍵。該值是用秒測量的16進位數;例子是一個30秒的逾時。在逾時期間後,印表機驅動程式可以顯示一個對話方塊讓使用者選擇重試或取消。在這個例子中,卻省印表機驅動程式,“PCL Laser”,是KEY_LOCAL_MACHINE/Priners/中一個子健的名稱。在KEY_LOCAL_MACHINE/Priners/中Windows CE可以找到Printer Control Language(PCL)雷射印表機驅動程式的配置。

對不使用並行口的印表機來說,如紅外印表機或串列口印表機,讓Windows CE決定印表機是否接受所有的列印資料是非常困難的。因此,逾時參數用來在印表機不能發出任何其仍在活動的訊號時偵測和報告列印錯誤。超市值儲存在PrintSetting/TimeOut鍵中。卻省值是45秒。 在DefaultPrinter鍵中儲存的值是應用程式在通用列印對話方塊中顯示給使用者,讓使用者預選的印表機。

2. 印表機驅動程式設定

單個印表機驅動程式的設定儲存在KEY_LOCAL_MACHINE/Printers鍵的在鍵中。印表機驅動程式的註冊健應該定義為4個鍵:Driver、High Quality、Draft Quality 和Color。其中Driver值列舉過程包含印表機驅動程式的DLL。如果印表機支援的話,Hight Quality和Draft Quality的值儲存高品質和繪圖品質模式的解析度。但並不是所有的印表機都支援繪圖品質模式,因此Draft Quality鍵可以忽略。High Quality鍵必須提供,它對應於印表機的最高品質模式。Color值定義印表機是彩色的還是單色的。如果支援彩色的話,該索引值必須設定為字元”Color“

下面是PCL機關印表機和PCL噴墨印表機驅動程式的設定例子:(HEKY_LOCAL_MACHINE/Peinters/PCI Laser)“Driver”=”pc1.Dll”“High Quality”=”300”“Draft Quality”=”150”“Color”=Monochrome”“Version”=”0x200”

(HKEY_LOCAL_MACHINE/Peinters/PCl Inkjet)“Driver”=”pcl.dll”“High Quality”=”300”“Draft Quality”=”150”“Color”=”Monochrome”另外Version鍵可以用於支援印表機驅動程式服務多個印表機!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.