WinCE Display驅(qū)動開發(fā)介紹
發(fā)布時間:2008/9/5 0:00:00 訪問次數(shù):849
在wince中,display驅(qū)動由gwes模塊來管理。wince提供了兩種架構(gòu)的display驅(qū)動模型,可以滿足不同的硬件需求。一種是基于wince ddi的display驅(qū)動模型,另一種是基于directdraw的display驅(qū)動模型。下面將對兩種架構(gòu)作簡單介紹。
1. display驅(qū)動模型
wince下的display驅(qū)動直接由gwes模塊管理,它會直接被gwes模塊管理和調(diào)用。display驅(qū)動實際上也是分層的,其中包括gpe庫,該庫處理一些默認(rèn)的繪圖,相當(dāng)于驅(qū)動的mdd層。用戶只需要開發(fā)和硬件相關(guān)的pdd層驅(qū)動就可以了。在wince中,整個架構(gòu)如圖:
如圖,application為一個應(yīng)用程序,該程序會調(diào)用圖形設(shè)備接口函數(shù)(gdi),而gdi函數(shù)是由coredll.dll模塊導(dǎo)出的。coredll.dll會將函數(shù)調(diào)用的參數(shù)打包,然后觸發(fā)對另一個進程的本地過程調(diào)用(lpc),所有的繪圖和開窗口的工作被傳給內(nèi)核中g(shù)wes模塊。gwes模塊被稱為圖形,窗口和事件子系統(tǒng),專門處理圖形輸出和用戶輸入等事件及相關(guān)的所有交互。gwes模塊會調(diào)用display驅(qū)動完成對顯示硬件的操作。display驅(qū)動由gpe和ddl.dll組成,gpe完成基本的默認(rèn)繪圖工作,而ddi.dll實際上從gpe類上繼承而來的,并實現(xiàn)了相關(guān)的顯示硬件的操作。
2. directdraw display驅(qū)動模型
directdraw提供了獨立于硬件的直接訪問顯示設(shè)備的能力。它可以通過直接訪問硬件抽象層(hal)中的一些函數(shù)來達到直接操作顯示設(shè)備的目的,在這個過程中,不再需要圖形設(shè)備接口(gdi)的轉(zhuǎn)換。這種直接的方法可以使圖像更加連貫,也提高了顯示的性能。為了實現(xiàn)這樣的功能,需要在顯示驅(qū)動上擴展能夠直接訪問相關(guān)硬件的函數(shù)。這些函數(shù)會被directdraw模塊調(diào)用,并形成directdraw的硬件抽象層(ddhal)。directdraw顯示驅(qū)動架構(gòu)如圖:
如圖,directdraw的真正實現(xiàn)代碼都駐留在gwes.dll模塊中,應(yīng)用程序只是連接了一個小的客戶端,被稱為ddraw.dll代理,該代理主要負責(zé)用戶進程與系統(tǒng)之間的遠程directdraw com接口連接。這樣,用戶請求會被傳送到內(nèi)核的gwes模塊中。針對directdraw,wince提供了一個名為directdraw的gpe庫(ddgpe),它是從gpe類上面繼承而來的。實際上,directdraw顯示驅(qū)動是由ddgpe和ddhal組成,而ddgpe中已經(jīng)包含了ddhal的功能。用戶需要從ddgpe類繼承并實現(xiàn)相關(guān)函數(shù)即可。gwes.dll模塊中包含gdi和ddraw兩個組件,這兩個組件會調(diào)用驅(qū)動中的ddgpe的相關(guān)接口完成對硬件的操作。
在上述兩種架構(gòu)中,用戶可以根據(jù)自己的硬件情況選擇相應(yīng)的架構(gòu)。第一種架構(gòu)是基于gpe類繼承來實現(xiàn)的,第二種架構(gòu)是基于ddgpe類繼承來實現(xiàn)的,而第二種架構(gòu)的ddgpe類又是從第一種架構(gòu)的gpe類繼承而來。關(guān)于兩種類的具體定義,可參見” \wince600\public\common\oak\inc”路徑下的gpe.h和ddgpe.h文件。
本blog將基于display驅(qū)動模型來介紹,directdraw display驅(qū)動模型不在這里介紹。
wince下的display驅(qū)動是基于gpe類來實現(xiàn)的,其中g(shù)pe中已經(jīng)實現(xiàn)了基本的繪制工作,相當(dāng)于mdd層。用戶需要繼承該類,并實現(xiàn)里面的其他一些函數(shù),所以用戶實現(xiàn)的相當(dāng)于pdd層。
gpe類是一個抽象類,其中包含很多純虛函數(shù),只能用于繼承。用戶在繼承了gpe類以后,要對gpe類中的純虛函數(shù)做相應(yīng)的實現(xiàn)。開發(fā)display驅(qū)動的大致步驟如下:
(1) 繼承g(shù)pe類并定義一個該類的實例。
(2) 實現(xiàn)getgpe()函數(shù),把該類的實例返回給上層的ddi接口。
(3) 實現(xiàn)drvenabledriver(..)和displayinit(..)函數(shù)并導(dǎo)出這兩個接口。
(4) 實現(xiàn)gpe類中的函數(shù)。
下面將具體介紹實現(xiàn)的步驟:
1 繼承g(shù)pe類
首先,基于gpe類進行繼承,如果想在display驅(qū)動支持rotation可以從gperotate類上面繼承。實際上,在”gpe.h”中有如下定義:
typedef gpe gperotate;
可以看出gperotate類就是gpe類。在這里,用戶從gpe類上面繼承就可以了,舉個例子如下:
class newgpe: public gpe
{
private:
gpemode m_modeinfo;
dword m_colordepth;
dword m_virtualframebuffer;
dword m_framebuffersize;
bool m_cursordisabled;
bool m_cursorvisible;
…
public:
newgpe(void);
virtual int nummodes(void);
virtual scode setmode(int modeid, hpalette *palette);
virtual int invblank(void);
virtual scode setpalette(const paletteentry *source, ushort firstentry, ushort numentries);
virtu
在wince中,display驅(qū)動由gwes模塊來管理。wince提供了兩種架構(gòu)的display驅(qū)動模型,可以滿足不同的硬件需求。一種是基于wince ddi的display驅(qū)動模型,另一種是基于directdraw的display驅(qū)動模型。下面將對兩種架構(gòu)作簡單介紹。
1. display驅(qū)動模型
wince下的display驅(qū)動直接由gwes模塊管理,它會直接被gwes模塊管理和調(diào)用。display驅(qū)動實際上也是分層的,其中包括gpe庫,該庫處理一些默認(rèn)的繪圖,相當(dāng)于驅(qū)動的mdd層。用戶只需要開發(fā)和硬件相關(guān)的pdd層驅(qū)動就可以了。在wince中,整個架構(gòu)如圖:
如圖,application為一個應(yīng)用程序,該程序會調(diào)用圖形設(shè)備接口函數(shù)(gdi),而gdi函數(shù)是由coredll.dll模塊導(dǎo)出的。coredll.dll會將函數(shù)調(diào)用的參數(shù)打包,然后觸發(fā)對另一個進程的本地過程調(diào)用(lpc),所有的繪圖和開窗口的工作被傳給內(nèi)核中g(shù)wes模塊。gwes模塊被稱為圖形,窗口和事件子系統(tǒng),專門處理圖形輸出和用戶輸入等事件及相關(guān)的所有交互。gwes模塊會調(diào)用display驅(qū)動完成對顯示硬件的操作。display驅(qū)動由gpe和ddl.dll組成,gpe完成基本的默認(rèn)繪圖工作,而ddi.dll實際上從gpe類上繼承而來的,并實現(xiàn)了相關(guān)的顯示硬件的操作。
2. directdraw display驅(qū)動模型
directdraw提供了獨立于硬件的直接訪問顯示設(shè)備的能力。它可以通過直接訪問硬件抽象層(hal)中的一些函數(shù)來達到直接操作顯示設(shè)備的目的,在這個過程中,不再需要圖形設(shè)備接口(gdi)的轉(zhuǎn)換。這種直接的方法可以使圖像更加連貫,也提高了顯示的性能。為了實現(xiàn)這樣的功能,需要在顯示驅(qū)動上擴展能夠直接訪問相關(guān)硬件的函數(shù)。這些函數(shù)會被directdraw模塊調(diào)用,并形成directdraw的硬件抽象層(ddhal)。directdraw顯示驅(qū)動架構(gòu)如圖:
如圖,directdraw的真正實現(xiàn)代碼都駐留在gwes.dll模塊中,應(yīng)用程序只是連接了一個小的客戶端,被稱為ddraw.dll代理,該代理主要負責(zé)用戶進程與系統(tǒng)之間的遠程directdraw com接口連接。這樣,用戶請求會被傳送到內(nèi)核的gwes模塊中。針對directdraw,wince提供了一個名為directdraw的gpe庫(ddgpe),它是從gpe類上面繼承而來的。實際上,directdraw顯示驅(qū)動是由ddgpe和ddhal組成,而ddgpe中已經(jīng)包含了ddhal的功能。用戶需要從ddgpe類繼承并實現(xiàn)相關(guān)函數(shù)即可。gwes.dll模塊中包含gdi和ddraw兩個組件,這兩個組件會調(diào)用驅(qū)動中的ddgpe的相關(guān)接口完成對硬件的操作。
在上述兩種架構(gòu)中,用戶可以根據(jù)自己的硬件情況選擇相應(yīng)的架構(gòu)。第一種架構(gòu)是基于gpe類繼承來實現(xiàn)的,第二種架構(gòu)是基于ddgpe類繼承來實現(xiàn)的,而第二種架構(gòu)的ddgpe類又是從第一種架構(gòu)的gpe類繼承而來。關(guān)于兩種類的具體定義,可參見” \wince600\public\common\oak\inc”路徑下的gpe.h和ddgpe.h文件。
本blog將基于display驅(qū)動模型來介紹,directdraw display驅(qū)動模型不在這里介紹。
wince下的display驅(qū)動是基于gpe類來實現(xiàn)的,其中g(shù)pe中已經(jīng)實現(xiàn)了基本的繪制工作,相當(dāng)于mdd層。用戶需要繼承該類,并實現(xiàn)里面的其他一些函數(shù),所以用戶實現(xiàn)的相當(dāng)于pdd層。
gpe類是一個抽象類,其中包含很多純虛函數(shù),只能用于繼承。用戶在繼承了gpe類以后,要對gpe類中的純虛函數(shù)做相應(yīng)的實現(xiàn)。開發(fā)display驅(qū)動的大致步驟如下:
(1) 繼承g(shù)pe類并定義一個該類的實例。
(2) 實現(xiàn)getgpe()函數(shù),把該類的實例返回給上層的ddi接口。
(3) 實現(xiàn)drvenabledriver(..)和displayinit(..)函數(shù)并導(dǎo)出這兩個接口。
(4) 實現(xiàn)gpe類中的函數(shù)。
下面將具體介紹實現(xiàn)的步驟:
1 繼承g(shù)pe類
首先,基于gpe類進行繼承,如果想在display驅(qū)動支持rotation可以從gperotate類上面繼承。實際上,在”gpe.h”中有如下定義:
typedef gpe gperotate;
可以看出gperotate類就是gpe類。在這里,用戶從gpe類上面繼承就可以了,舉個例子如下:
class newgpe: public gpe
{
private:
gpemode m_modeinfo;
dword m_colordepth;
dword m_virtualframebuffer;
dword m_framebuffersize;
bool m_cursordisabled;
bool m_cursorvisible;
…
public:
newgpe(void);
virtual int nummodes(void);
virtual scode setmode(int modeid, hpalette *palette);
virtual int invblank(void);
virtual scode setpalette(const paletteentry *source, ushort firstentry, ushort numentries);
virtu
上一篇:SMT柔性貼裝系統(tǒng)
上一篇:關(guān)于ISA插槽簡介
熱門點擊
- 各種通訊總線介紹
- 關(guān)于ISA插槽簡介
- USB 通信技術(shù)
- Nios II與CF卡的接口設(shè)計
- 基于80C196KC的ARINC429總線接
- TK512B面陣CCD相機驅(qū)動電路設(shè)計
- 非易失性并行存儲器的應(yīng)用
- ACTEL發(fā)布兩款實現(xiàn)人機接口(HMI)和微
- WinCE Display驅(qū)動開發(fā)介紹
- 基于USB的接口卡
推薦技術(shù)資料
- MOSFET 電感單片降壓開關(guān)模式變換器優(yōu)勢
- SiC MOSFET 和 IG
- 新型 電隔離無芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對位置編碼器技術(shù)參數(shù)設(shè)計
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究