毛片网站在线看_天堂俺去俺来也www久久婷婷_日韩av免费网站_18性欧美xxxⅹ性满足_一区二区三区韩国免费中文网站 _性xx色xx综合久久久xx_999亚洲国产精


曙海教育集團(tuán)論壇Win CE 專區(qū)WinCE系統(tǒng)定制與驅(qū)動開發(fā) → WinCE Display驅(qū)動開發(fā)介紹


  共有9580人關(guān)注過本帖樹形打印

主題:WinCE Display驅(qū)動開發(fā)介紹

美女呀,離線,留言給我吧!
wangxinxin
  1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


加好友 發(fā)短信
等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
WinCE Display驅(qū)動開發(fā)介紹  發(fā)帖心情 Post By:2010-11-26 10:28:12

在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ū)動實(shí)際上也是分層的,其中包括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ā)對另一個進(jìn)程的本地過程調(diào)用(LPC),所有的繪圖和開窗口的工作被傳給內(nèi)核中GWES模塊。GWES模塊被稱為圖形,窗口和事件子系統(tǒng),專門處理圖形輸出和用戶輸入等事件及相關(guān)的所有交互。GWES模塊會調(diào)用Display驅(qū)動完成對顯示硬件的操作。Display驅(qū)動由GPE和DDL.dll組成,GPE完成基本的默認(rèn)繪圖工作,而DDI.dll實(shí)際上從GPE類上繼承而來的,并實(shí)現(xiàn)了相關(guān)的顯示硬件的操作。

       2. DirectDraw Display驅(qū)動模型

       DirectDraw提供了獨(dú)立于硬件的直接訪問顯示設(shè)備的能力。它可以通過直接訪問硬件抽象層(HAL)中的一些函數(shù)來達(dá)到直接操作顯示設(shè)備的目的,在這個過程中,不再需要圖形設(shè)備接口(GDI)的轉(zhuǎn)換。這種直接的方法可以使圖像更加連貫,也提高了顯示的性能。為了實(shí)現(xiàn)這樣的功能,需要在顯示驅(qū)動上擴(kuò)展能夠直接訪問相關(guān)硬件的函數(shù)。這些函數(shù)會被DirectDraw模塊調(diào)用,并形成DirectDraw的硬件抽象層(DDHAL)。DirectDraw顯示驅(qū)動架構(gòu)如圖:

 

       如圖,DirectDraw的真正實(shí)現(xiàn)代碼都駐留在gwes.dll模塊中,應(yīng)用程序只是連接了一個小的客戶端,被稱為DDRAW.dll代理,該代理主要負(fù)責(zé)用戶進(jìn)程與系統(tǒng)之間的遠(yuǎn)程DirectDraw COM接口連接。這樣,用戶請求會被傳送到內(nèi)核的GWES模塊中。針對DirectDraw,WinCE提供了一個名為DirectDraw的GPE庫(DDGPE),它是從GPE類上面繼承而來的。實(shí)際上,DirectDraw顯示驅(qū)動是由DDGPE和DDHAL組成,而DDGPE中已經(jīng)包含了DDHAL的功能。用戶需要從DDGPE類繼承并實(shí)現(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類繼承來實(shí)現(xiàn)的,第二種架構(gòu)是基于DDGPE類繼承來實(shí)現(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類來實(shí)現(xiàn)的,其中GPE中已經(jīng)實(shí)現(xiàn)了基本的繪制工作,相當(dāng)于MDD層。用戶需要繼承該類,并實(shí)現(xiàn)里面的其他一些函數(shù),所以用戶實(shí)現(xiàn)的相當(dāng)于PDD層。

       GPE類是一個抽象類,其中包含很多純虛函數(shù),只能用于繼承。用戶在繼承了GPE類以后,要對GPE類中的純虛函數(shù)做相應(yīng)的實(shí)現(xiàn)。開發(fā)Display驅(qū)動的大致步驟如下:

       (1)    繼承GPE類并定義一個該類的實(shí)例。

       (2)    實(shí)現(xiàn)GetGPE()函數(shù),把該類的實(shí)例返回給上層的DDI接口。

       (3)    實(shí)現(xiàn)DrvEnableDriver(..)和DisplayInit(..)函數(shù)并導(dǎo)出這兩個接口。

       (4)    實(shí)現(xiàn)GPE類中的函數(shù)。

       下面將具體介紹實(shí)現(xiàn)的步驟:

       1 繼承GPE類

       首先,基于GPE類進(jìn)行繼承,如果想在Display驅(qū)動支持Rotation可以從GPERotate類上面繼承。實(shí)際上,在”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);

        virtual SCODE GetModeInfo(GPEMode *pMode, INT modeNumber);

        virtual SCODE SetPointerShape(GPESurf *mask, GPESurf *colorSurface, INT xHot, INT yHot, INT cX, INT cY);

        virtual SCODE MovePointer(INT xPosition, INT yPosition);

        virtual void  WaitForNotBusy(void);

        virtual INT   IsBusy(void);

        virtual void      GetPhysicalVideoMemory(unsigned long *physicalMemoryBase, unsigned long *videoMemorySize);

        virtual SCODE AllocSurface(GPESurf **surface, INT width, INT height, EGPEFormat format, INT surfaceFlags);

        virtual SCODE     Line(GPELineParms *lineParameters, EGPEPhase phase);

        virtual SCODE     BltPrepare(GPEBltParms *blitParameters);

        virtual SCODE BltComplete(GPEBltParms *blitParameters);

        virtual ULONG GetGraphicsCaps();

        virtual ULONG DrvEscape(

                        SURFOBJ *pso,

                        ULONG    iEsc,

                        ULONG    cjIn,

                        PVOID    pvIn,

                        ULONG    cjOut,

                        PVOID    pvOut);

        SCODE WrappedEmulatedLine (GPELineParms *lineParameters);

        void  CursorOn(void);

        void  CursorOff(void);

#ifdef ROTATE

        void SetRotateParms();

        LONG DynRotate(int angle);

#endif

    };

          類NewGPE從GPE類上面繼承,其中包括一些屬性,如下:

            m_ModeInfo:顯示模式,結(jié)構(gòu)如下

               struct GPEMode {

                               int modeId;                             //開發(fā)者定義的顯示模式的索引號

                               int width;                                //顯示寬度

                               int height;                                //顯示高度

                               int Bpp;                                  //顯示深度

                               int frequency;                          //顯示頻率

                               EGPEFormat format;              // RGB格式,各占多少bit

               };

 

            m_colorDepth:顯示深度

            m_VirtualFrameBuffer:FrameBuffer的地址

      m_FrameBufferSize:FrameBuffer的大小

      m_CursorDisabled:光標(biāo)使能標(biāo)記

      m_CursorVisible:光標(biāo)可視標(biāo)記

        用戶可以根據(jù)需要定義相應(yīng)的屬性,在NewGPE類中,需要定義并實(shí)現(xiàn)基類中的純虛函數(shù),上面的NewGPE類中已經(jīng)包含了這些函數(shù)的定義,還包括了其他一些函數(shù),將在下面介紹。

        2 實(shí)現(xiàn)GetGPE函數(shù)

        在定義了NewGPE類之后,我們需要實(shí)現(xiàn)一個實(shí)例,首先定義一個該類的指針:

            static GPE    *gGPE = (GPE*)NULL;

         然后實(shí)現(xiàn)GetGPE函數(shù),如下:

    GPE *GetGPE(void)

    {

        if (!gGPE)

        {

            gGPE = new NewGPE();

        }

 

  


支持(0中立(0反對(0單帖管理 | 引用 | 回復(fù) 回到頂部

返回版面帖子列表

WinCE Display驅(qū)動開發(fā)介紹








簽名
毛片网站在线看_天堂俺去俺来也www久久婷婷_日韩av免费网站_18性欧美xxxⅹ性满足_一区二区三区韩国免费中文网站 _性xx色xx综合久久久xx_999亚洲国产精
同产精品九九九| 国产精品久久久久久久久图文区| av电影在线观看完整版一区二区| 91 com成人网| 亚洲综合网站在线观看| 99久久精品费精品国产一区二区| 国产视频一区在线观看| 精品亚洲成a人在线观看| 日韩一区二区在线看片| 日韩精品一卡二卡三卡四卡无卡 | 日韩欧美在线不卡| 美女视频一区二区三区| 2023国产精品| 成人国产精品免费| 亚洲精品欧美综合四区| 欧美日韩一卡二卡| 日韩在线一二三区| 欧美成人精品二区三区99精品| 裸体健美xxxx欧美裸体表演| 精品电影一区二区| 91麻豆精品视频| 婷婷中文字幕一区三区| 欧美不卡一区二区三区四区| 国产电影一区二区三区| 亚洲另类中文字| 在线不卡免费欧美| 国产精品77777竹菊影视小说| 亚洲日本中文字幕区| 欧美高清精品3d| 国产一区二区三区免费播放| 亚洲欧洲韩国日本视频| 欧美一二三四区在线| 国产白丝网站精品污在线入口| 亚洲欧美激情小说另类| 欧美一级高清大全免费观看| 成人丝袜18视频在线观看| 亚洲国产成人高清精品| 久久久综合九色合综国产精品| 91蜜桃网址入口| 久久精品国产亚洲aⅴ| 亚洲欧美一区二区在线观看| 91麻豆精品国产自产在线| 欧洲精品在线观看| 日韩午夜激情电影| 久久国产视频网| 亚洲天堂免费看| 日韩亚洲欧美一区二区三区| 成人avav影音| 国产最新精品免费| 夜夜精品浪潮av一区二区三区| 欧美日韩国产经典色站一区二区三区| 久久电影网站中文字幕 | 欧美精选在线播放| eeuss鲁一区二区三区| 麻豆精品一区二区| 亚洲五码中文字幕| 美腿丝袜亚洲综合| 亚洲不卡av一区二区三区| 欧美高清www午色夜在线视频| 免费观看久久久4p| 亚洲一区二区三区爽爽爽爽爽| 国产丝袜在线精品| 欧美成人乱码一区二区三区| 制服丝袜一区二区三区| 在线观看91精品国产入口| k8久久久一区二区三区| 国产一区二区三区最好精华液| 日韩黄色免费电影| 欧美理论片在线| 日韩精品一卡二卡三卡四卡无卡| 亚洲精品少妇30p| 日韩毛片在线免费观看| 国产精品久久久久毛片软件| 久久精品一区四区| 国产欧美日韩在线观看| 国产丝袜在线精品| 国产色一区二区| 国产精品日产欧美久久久久| 国产无遮挡一区二区三区毛片日本| 久久精品视频一区二区三区| 久久久精品国产99久久精品芒果| 久久精品人人做人人爽人人| 欧美激情资源网| 成人欧美一区二区三区白人 | 欧洲av一区二区嗯嗯嗯啊| 色综合天天做天天爱| 91搞黄在线观看| 7777精品伊人久久久大香线蕉| 欧美浪妇xxxx高跟鞋交| 日韩午夜小视频| 欧美精品一区二区在线播放| 国产人妖乱国产精品人妖| 亚洲欧洲av在线| 亚瑟在线精品视频| 国产一区二区调教| 99久久免费精品高清特色大片| 色吊一区二区三区| 日韩免费观看2025年上映的电影| 精品不卡在线视频| 亚洲三级小视频| 日韩不卡手机在线v区| 国产一区在线观看视频| 色综合中文综合网| 亚洲综合激情另类小说区| 婷婷久久综合九色综合伊人色| 日本一区中文字幕| 国产91在线|亚洲| 色伊人久久综合中文字幕| 91精品国产欧美一区二区| 日本一区二区三区高清不卡| 亚洲国产精品久久艾草纯爱| 国产乱理伦片在线观看夜一区 | 亚洲精品国产高清久久伦理二区| 丝袜诱惑亚洲看片| 成人免费视频caoporn| 7777精品伊人久久久大香线蕉| 国产三级精品视频| 日本欧洲一区二区| 99久久精品国产一区| 欧美成人在线直播| 综合中文字幕亚洲| 国内精品免费在线观看| 91丝袜美女网| 久久综合九色综合欧美亚洲| 亚洲午夜在线电影| thepron国产精品| 欧美精品一区二区三区很污很色的| 亚洲欧洲www| 粉嫩一区二区三区性色av| 日韩欧美在线1卡| 图片区小说区区亚洲影院| 91丨国产丨九色丨pron| 久久免费国产精品| 看电影不卡的网站| 在线不卡一区二区| 日韩高清一区在线| 欧美精品日韩综合在线| 亚洲在线观看免费| 91黄色小视频| 一区二区三区中文字幕在线观看| 丁香婷婷综合网| 久久人人97超碰com| 天使萌一区二区三区免费观看| 91视频免费播放| 国产精品午夜电影| 成人黄页在线观看| 国产精品久久久久影视| 不卡一卡二卡三乱码免费网站| 国产区在线观看成人精品 | 国内精品在线播放| 亚洲精品在线网站| 国产成人综合网| 中文一区二区完整视频在线观看| 国产一区二区三区国产| 国产女人18水真多18精品一级做 | 69堂国产成人免费视频| 婷婷成人激情在线网| 欧美精品日韩一区| 国产呦萝稀缺另类资源| 中文字幕在线不卡视频| 在线观看国产91| 男男成人高潮片免费网站| 欧美变态凌虐bdsm| 国产盗摄精品一区二区三区在线 | 日韩精品三区四区| 欧美精品欧美精品系列| 日本欧美一区二区| 久久久国际精品| 99re亚洲国产精品| 丝袜诱惑制服诱惑色一区在线观看| 日韩一级二级三级| 国产精品99久久久| 亚洲国产综合人成综合网站| 精品欧美乱码久久久久久 | 色8久久人人97超碰香蕉987| 亚洲一区二区视频在线观看| 日韩视频不卡中文| 成人av网在线| 天堂久久一区二区三区| 久久只精品国产| av激情成人网| 捆绑紧缚一区二区三区视频| 亚洲区小说区图片区qvod| 91精品在线观看入口| 国产丶欧美丶日本不卡视频| 亚洲在线观看免费视频| 久久久久久久久久久久久夜| 在线免费观看日本一区| 国产麻豆视频一区| 午夜一区二区三区视频| 国产精品天干天干在线综合| 日韩一区二区免费视频| 色婷婷香蕉在线一区二区| 另类小说图片综合网| 中文字幕亚洲不卡| 久久先锋影音av鲁色资源网| 欧美色图一区二区三区| www.亚洲精品| 国产一区二区三区高清播放| 婷婷成人综合网|