久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久


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


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

主題:wince驅(qū)動開發(fā)3

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


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

6、驅(qū)動中注意的要點

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

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

 

2:MDD與PDD
一個驅(qū)動程序通常會被分成硬件相關(guān)(PDD)與硬件無關(guān)(MDD)層兩部分。
當然,這種分層不是必須的,只是采用這種分層以后可以少寫很多代碼,因為微軟提供了很多驅(qū)動程序的MDD。即使CE中沒有我們所寫的驅(qū)動程序的樣例,采用這種結(jié)構(gòu)以后,當需要寫第二個程序時,就可以重用它的代碼,就可以提高開發(fā)效率。

 

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

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

 

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

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

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

 

在ship build 時,RETAILMSG 和DEBUGMSG都無效。

 

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

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

 

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

 

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

 

調(diào)試區(qū)的定義,聲明,注冊及使用。
在程序中使用調(diào)試區(qū)之前必須先定義它們,一個程序的16個調(diào)試區(qū)編號分別為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)試信息即不再輸出。
在程序中,除了以上的定義以外,還要聲明幾個專用的調(diào)試信息輸出函數(shù),這些函數(shù)與OutputDebugString函數(shù)的區(qū)別就在于在調(diào)用時需要指定對應(yīng)的調(diào)試區(qū),這些函數(shù)以及以上用到的DEBUGZONE宏的定義都在DbgApi.h頭文件中,因此只要在源程序中包含此頭文件即可。除此以外,還需要一個全局的DEBPARAM類型的變量命名為dpCurSettings,以供集成開發(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ū)作為默認被開發(fā)人員選中的調(diào)試區(qū)。
要想使用調(diào)試區(qū),還需要做的最后一件準備的事情就是在程序中進行注冊,也就是在程序啟動時通知集成開發(fā)環(huán)境本程序中要使用調(diào)試區(qū),這個注冊很簡單,只要在程序的入口處使用DEBUGREGISTER宏即可,樣例如下:
DllEntry (
HANDLE hinstDLL,
DWORD Op,
LPVOID lpvReserved
)
{
switch (Op) {

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

 


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

返回版面帖子列表

wince驅(qū)動開發(fā)3








簽名
主站蜘蛛池模板: 二区视频在线 | 香港aa三级久久三级 | 国产精品毛片久久久久久久 | 欧洲成人在线 | 国产成人福利免费观看 | 在线不卡亚洲 | 欧美成人做性视频在线播放 | 欧美成人性色大片在线观看 | 久久精品一区二区国产 | 欧美成人老熟妇暴潮毛片 | 亚洲国产激情 | 国产欧美曰韩一区二区三区 | 国产精品久久久99 | 纯欧美一级毛片_免费 | 一区二区三区四区在线视频 | 日韩一区国产二区欧美三区 | 在线步兵区| 久久国产亚洲欧美日韩精品 | 欧美日韩一区二区三区久久 | 最近手机中文字幕1 | 无内丝袜透明在线播放 | 亚州视频一区二区 | 波多野结衣视频在线观看 | 日本久久久久久久久久 | 亚洲国产精品综合久久久 | 国产高清自拍 | 久久国产国内精品对话对白 | 亚洲国产最新在线一区二区 | 日韩三级视频 | 在线国产网站 | 黄色美女网站免费看 | 最新三级网址 | 国产手机在线国内精品 | 国产超清在线观看 | 国产日韩久久久久69影院 | 日本加勒比系列 | 亚洲免费网 | 嫩草影院在线观看网站成人 | 国内精品久久久久久野外 | 国产精品免费aⅴ片在线观看 | 亚洲欧美日韩成人一区在线 |