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


曙海教育集團(tuán)論壇Win CE 專(zhuān)區(qū)WinCE系統(tǒng)定制與驅(qū)動(dòng)開(kāi)發(fā) → wince驅(qū)動(dòng)開(kāi)發(fā)3


  共有10453人關(guān)注過(guò)本帖樹(shù)形打印

主題:wince驅(qū)動(dòng)開(kāi)發(fā)3

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


加好友 發(fā)短信
等級(jí):青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊(cè):2010-11-12 11:08:23
wince驅(qū)動(dòng)開(kāi)發(fā)3  發(fā)帖心情 Post By:2010-11-26 11:16:35

6、驅(qū)動(dòng)中注意的要點(diǎn)

1:CE下同名設(shè)備不能大于10

CE5.0中已經(jīng)沒(méi)有這個(gè)問(wèn)題了,以前的版本可以這樣做:只給上層輸出一個(gè)設(shè)備,然后用一個(gè)IOCTL去打開(kāi)一個(gè)個(gè)的物理設(shè)備這樣就可以做到不受任何限制了。

 

2:MDD與PDD
一個(gè)驅(qū)動(dòng)程序通常會(huì)被分成硬件相關(guān)(PDD)與硬件無(wú)關(guān)(MDD)層兩部分。
當(dāng)然,這種分層不是必須的,只是采用這種分層以后可以少寫(xiě)很多代碼,因?yàn)槲④浱峁┝撕芏囹?qū)動(dòng)程序的MDD。即使CE中沒(méi)有我們所寫(xiě)的驅(qū)動(dòng)程序的樣例,采用這種結(jié)構(gòu)以后,當(dāng)需要寫(xiě)第二個(gè)程序時(shí),就可以重用它的代碼,就可以提高開(kāi)發(fā)效率。

 

MDD是提供同類(lèi)型的設(shè)備(比如串口)都會(huì)有的功能,這樣PDD基本上就只有寄存器操作了。

像串口的中斷處理,Read/Write函數(shù),其大部分代碼都是在MDD中實(shí)現(xiàn)的,不同的串口實(shí)現(xiàn)中只需要提供一些實(shí)際操作寄存器的函數(shù)。不同的驅(qū)動(dòng)程序,其MDD與PDD的接口不盡相同,

 

3:XXX_Init函數(shù)的返回句柄
通常,這個(gè)句柄是驅(qū)動(dòng)程序自己保存數(shù)據(jù)的一個(gè)指針,我們?cè)贗nit返回時(shí)告訴上層程序,以后上層調(diào)用其它函數(shù)(例如Open)時(shí),會(huì)將這個(gè)值傳入,這樣,我們就可以訪問(wèn)自己的一些私有數(shù)據(jù)。

當(dāng)然,也可以返回一個(gè)任意的非0值對(duì)于一個(gè)設(shè)備驅(qū)動(dòng)程序,系統(tǒng)不用的層會(huì)有不同的句柄。我們?cè)赬XX_Init中返回的句柄保存在設(shè)備管理器中,別的程序中應(yīng)該是看不到的,而用CreateFile也會(huì)得到一個(gè)文件句柄,這個(gè)保存在哪我不知道,但和前者是不一樣的。也就是說(shuō)不同層的軟件所關(guān)心的句柄也會(huì)不一樣

4:DEBUGMSG與RETAILMSG的區(qū)別
它們都是輸出調(diào)試信息用的,區(qū)別是:
DEBUGMSG只在DEBUG版中有效,RELEASE版中它被定義成了NULL
RETAILMSG在DEBUG和RELEASE版中都可以輸出,
而且DEBUGMSG可以在運(yùn)行時(shí)刻用DEBUZONE控制要不要輸出信息。

 

在ship build 時(shí),RETAILMSG 和DEBUGMSG都無(wú)效。

 

5調(diào)試區(qū)與dpCurSettings

我們都是利用OutpubDebugString函數(shù)來(lái)實(shí)現(xiàn)調(diào)試信息的輸出的,但是由于系統(tǒng)底層的調(diào)試信息非常繁多,如果這樣大量的調(diào)試信息用于實(shí)時(shí)輸出的話一定會(huì)影響到系統(tǒng)的性能和實(shí)時(shí)性,也就影響到了系統(tǒng)的運(yùn)行。如果有一種方式能允許開(kāi)發(fā)人員自己選擇輸出哪些調(diào)試信息,不輸出哪些調(diào)試信息的話,那么就可以讓開(kāi)發(fā)人員只看到關(guān)心的調(diào)試信息,而把諸如鍵盤(pán)按鍵、鼠標(biāo)移動(dòng)等無(wú)用的調(diào)試信息隱去,則可以更好的提高開(kāi)發(fā)效率。

 

調(diào)試區(qū)就是為了解決以上提出的問(wèn)題的,對(duì)某一個(gè)驅(qū)動(dòng)程序,它規(guī)定好自己向外輸出的調(diào)試信息的分類(lèi),比如初始化時(shí)的信息,出錯(cuò)時(shí)的信息,釋放時(shí)的信息,激活時(shí)的信息等,然后分成幾個(gè)調(diào)試區(qū),在現(xiàn)有的CE版本中最多允許16個(gè)調(diào)試區(qū)。

 

開(kāi)發(fā)人員通過(guò)Platform Builder中Target菜單下的CE Debug Zones命令來(lái)決定想要得到哪一個(gè)或哪幾個(gè)調(diào)試區(qū)的信息,在驅(qū)動(dòng)程序中則可以根據(jù)開(kāi)發(fā)人員的選擇來(lái)輸出指定調(diào)試區(qū)的信息。這就是調(diào)試區(qū)大體上的工作原理。

 

調(diào)試區(qū)的定義,聲明,注冊(cè)及使用。
在程序中使用調(diào)試區(qū)之前必須先定義它們,一個(gè)程序的16個(gè)調(diào)試區(qū)編號(hào)分別為0-15。代碼樣例如下所示:
#ifdef DEBUG
//
// For debug builds, use the real zones.
//
#define ZONE_TEST DEBUGZONE(0)
#define ZONE_PARAMS DEBUGZONE(1)
#define ZONE_VERBOSE DEBUGZONE(2)
……
#define ZONE_WARN DEBUGZONE(14)
#define ZONE_ERROR DEBUGZONE(15)

#else
//
// For retail builds, use forced messages based on the zones turned on below.
//
#define ZONE_TEST 0
#define ZONE_PARAMS 0
#define ZONE_VERBOSE 0
……
#define ZONE_WARN 0
#define ZONE_ERROR 0

#endif

這樣,就可以程序的DEBUG版本中使用調(diào)試區(qū)了,而在RELEASE版本中則將其全部定義為0,調(diào)試信息即不再輸出。
在程序中,除了以上的定義以外,還要聲明幾個(gè)專(zhuān)用的調(diào)試信息輸出函數(shù),這些函數(shù)與OutputDebugString函數(shù)的區(qū)別就在于在調(diào)用時(shí)需要指定對(duì)應(yīng)的調(diào)試區(qū),這些函數(shù)以及以上用到的DEBUGZONE宏的定義都在DbgApi.h頭文件中,因此只要在源程序中包含此頭文件即可。除此以外,還需要一個(gè)全局的DEBPARAM類(lèi)型的變量命名為dpCurSettings,以供集成開(kāi)發(fā)環(huán)境和調(diào)試信息輸出函數(shù)使用。其代碼樣例如下:
#ifdef DEBUG
DBGPARAM dpCurSettings = {
   TEXT("WaveDriver"), {
   TEXT("Test") // 0
   ,TEXT("Params") // 1
   ,TEXT("Verbose") // 2
   ,TEXT("Interrupt") // 3
   ,TEXT("WODM") // 4
   ,TEXT("WIDM") // 5
   ,TEXT("PDD") // 6
   ,TEXT("MDD") // 7
   ,TEXT("Regs") // 8
   ,TEXT("Misc") // 9
   ,TEXT("Init") // 10
   ,TEXT("IOcontrol") // 11
   ,TEXT("Alloc") // 12
   ,TEXT("Function") // 13
   ,TEXT("Warning") // 14
   ,TEXT("Error") // 15
  }
  ,
  (1 << 15) // Errors
  | (1 << 14) // Warnings
};
#endif
此例中還把ERROR和WARN調(diào)試區(qū)作為默認(rèn)被開(kāi)發(fā)人員選中的調(diào)試區(qū)。
要想使用調(diào)試區(qū),還需要做的最后一件準(zhǔn)備的事情就是在程序中進(jìn)行注冊(cè),也就是在程序啟動(dòng)時(shí)通知集成開(kāi)發(fā)環(huán)境本程序中要使用調(diào)試區(qū),這個(gè)注冊(cè)很簡(jiǎn)單,只要在程序的入口處使用DEBUGREGISTER宏即可,樣例如下:
DllEntry (
HANDLE hinstDLL,
DWORD Op,
LPVOID lpvReserved
)
{
switch (Op) {

case DLL_PROCESS_ATTACH :
DEBUGREGISTER((HINSTANCE)hinstDLL);
break;
……

 


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

返回版面帖子列表

wince驅(qū)動(dòng)開(kāi)發(fā)3








簽名
毛片网站在线看_天堂俺去俺来也www久久婷婷_日韩av免费网站_18性欧美xxxⅹ性满足_一区二区三区韩国免费中文网站 _性xx色xx综合久久久xx_999亚洲国产精
国产成人免费视频一区| 欧美精品一区二区在线观看| 国产精品麻豆一区二区| 99久久精品免费看国产| 麻豆精品在线播放| 午夜精品久久久久久久久久| 国产精品久久久久久久久免费丝袜 | 欧美亚洲动漫制服丝袜| 丁香婷婷综合网| 精品一区二区在线免费观看| 亚洲综合男人的天堂| 成人欧美一区二区三区白人 | 欧美一区二区高清| 日本久久一区二区三区| av资源网一区| 成人精品小蝌蚪| 国产成人精品一区二区三区网站观看| 九九精品视频在线看| 青青草91视频| 久久av中文字幕片| 狠狠狠色丁香婷婷综合久久五月| 久久精品国产成人一区二区三区 | 久久影院电视剧免费观看| 日韩欧美国产小视频| 日韩欧美专区在线| 亚洲精品在线观看网站| 欧美成人福利视频| 久久久精品黄色| 国产精品午夜春色av| 国产精品久久久久四虎| 亚洲欧美日韩一区二区三区在线观看| 成人免费在线播放视频| 国产精品伦理在线| 国产精品青草久久| 亚洲欧美日韩一区二区| 亚洲午夜久久久久久久久电影院| 一区二区三区不卡视频 | 国产精品毛片a∨一区二区三区| 亚洲国产精品t66y| 亚洲免费看黄网站| 亚洲444eee在线观看| 青青草原综合久久大伊人精品优势| 日本 国产 欧美色综合| 国产麻豆精品在线观看| 成人高清伦理免费影院在线观看| 91麻豆精品在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 99在线精品观看| 91福利精品视频| 欧美一级免费大片| 国产欧美一二三区| 亚洲精品国产视频| 老司机精品视频线观看86| 国产成人精品免费看| 91女人视频在线观看| 欧美久久久久久久久久| 国产偷国产偷精品高清尤物| 亚洲精品国产精品乱码不99| 麻豆高清免费国产一区| 成人激情小说网站| 欧美一级片在线看| 日韩码欧中文字| 黑人精品欧美一区二区蜜桃 | 色8久久精品久久久久久蜜| 精品国产a毛片| 亚洲综合激情网| 精品无人码麻豆乱码1区2区 | 亚洲一区免费视频| 国产91精品一区二区麻豆网站| 在线视频国内自拍亚洲视频| 26uuu精品一区二区在线观看| 一区二区三区四区av| 国产成人啪免费观看软件| 欧美人与性动xxxx| 国产精品久久久久久久久果冻传媒| 视频一区国产视频| 91精品办公室少妇高潮对白| 国产亚洲一区二区三区在线观看| 亚洲一区二区在线播放相泽| 成人爱爱电影网址| 久久天堂av综合合色蜜桃网| 日韩av电影天堂| 欧美三区在线视频| 免费观看在线综合色| 成人黄色软件下载| 国产欧美视频一区二区| 国产一区在线观看麻豆| 91精品一区二区三区在线观看| 亚洲少妇30p| 91免费精品国自产拍在线不卡 | 亚洲免费毛片网站| 成人美女在线视频| 国产三级一区二区| 国产综合色在线视频区| 日韩精品一区二区三区四区| 亚洲国产精品久久久久秋霞影院 | 亚洲专区一二三| 日本高清无吗v一区| 欧美韩国一区二区| 成人免费毛片嘿嘿连载视频| 国产亚洲女人久久久久毛片| 国产精品18久久久| 国产精品久久久久9999吃药| gogo大胆日本视频一区| 中文字幕va一区二区三区| 成人妖精视频yjsp地址| 国产欧美一区二区三区在线老狼| 国产一区二区成人久久免费影院| 精品国产一区二区三区久久久蜜月 | 欧美日韩在线观看一区二区| 亚洲一区中文在线| 欧美主播一区二区三区| 日韩av在线发布| 26uuu精品一区二区在线观看| 国产精品一二三四五| 国产欧美日韩另类一区| 99久久精品国产一区二区三区| 亚洲欧美在线aaa| 精品视频一区二区三区免费| 秋霞影院一区二区| 国产亚洲婷婷免费| av成人老司机| 午夜伦欧美伦电影理论片| 这里是久久伊人| 国产v综合v亚洲欧| 亚洲精品日韩一| 欧美一区二区免费| 国产精品一区在线观看你懂的| 欧美激情一二三区| 欧美三级电影网站| 国内精品视频666| 亚洲色图另类专区| 日韩欧美一区在线| 成人国产一区二区三区精品| 亚洲午夜久久久久久久久电影院 | 老汉av免费一区二区三区| 久久亚洲二区三区| 欧美一区二区三区在线观看| 国产91丝袜在线播放0| 亚洲第一综合色| 337p粉嫩大胆噜噜噜噜噜91av| 99精品一区二区三区| 天天综合色天天| 国产精品久久国产精麻豆99网站| 欧美一区二区黄| 在线影院国内精品| 岛国精品在线播放| 三级久久三级久久| 亚洲色图第一区| 久久久久国产成人精品亚洲午夜| 欧洲激情一区二区| 国产成人精品一区二区三区四区 | 欧美疯狂做受xxxx富婆| 粉嫩一区二区三区性色av| 日本一区中文字幕| 一区二区三区久久| 国产精品久久久久久久久久久免费看| 日韩一区二区中文字幕| 色妞www精品视频| 丰满岳乱妇一区二区三区| 美国欧美日韩国产在线播放| 亚洲免费成人av| 欧美国产一区视频在线观看| 日韩精品专区在线| 欧美美女直播网站| 欧美色涩在线第一页| 99re热这里只有精品视频| 国内不卡的二区三区中文字幕| 亚洲成人精品一区| 17c精品麻豆一区二区免费| 久久久综合精品| 91精品国产综合久久精品| 在线免费观看成人短视频| 成人aa视频在线观看| 极品美女销魂一区二区三区| 美女一区二区视频| 免费观看一级特黄欧美大片| 日韩av不卡在线观看| 午夜精品福利一区二区三区蜜桃| 樱花影视一区二区| 一区二区三区在线不卡| 亚洲乱码日产精品bd| 亚洲欧美激情插| 亚洲裸体xxx| 一二三四社区欧美黄| 17c精品麻豆一区二区免费| 国产精品毛片无遮挡高清| 中文字幕一区免费在线观看| 国产欧美综合在线观看第十页| 国产日产亚洲精品系列| 国产精品色婷婷| 伊人色综合久久天天人手人婷| 国产欧美一区二区精品秋霞影院| 国产精品毛片久久久久久| 日韩一区欧美一区| 亚洲在线免费播放| 日韩影院在线观看| 国产一区二区成人久久免费影院| 国产成人免费av在线| 99天天综合性|