百度 到WinCE中的Debug Zone调试 ,对下边提到的#define DBGZONE_ERROR 1在哪里定义比较疑惑。
本人用的是CE6。
在WinCE的开发环境中支持Debug Zones功能,通常也被称为调试域,通过它可以控制打印信息。当某个调试域被打开以后,在这个域中的打印信息就会被打印出来,如果某个调试域被关闭了,那么这个域中的打印信息就会被关闭。调试域是基于模块的,也就是说一个模块,可能是在一个驱动或者一个应用中都可以定义一个调试域,用来调试该模块。一个调试域最多可以包括16个域,一般在每一个模块中都会有一个全局变量dpCurSettings,该变量用于描述调试域的相关信息,它由一个模块名字,16个域的名字和一个掩码组成。下面具个例子:
DBGPARAM dpCurSettings =
{
TEXT("PCIBUS"), {
TEXT("Errors"),TEXT("Warnings"),TEXT("Functions"),TEXT("Initialization"),
TEXT("Enumeration"),TEXT("Load Order"),TEXT("Resource"),TEXT("Undefined"),
TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),
TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined") },
0x20
};
先来解释一下DBGPARAM结构,该结构在Dbgapi.h中定义,所以在定义dpCurSettings的时候还需要包含这个头文件,该结构定义如下:
typedef struct _DBGPARAM {
WCHAR lpszName[32]; //模块的名字
WCHAR rglpszZones[16][32]; //调试域的名字
ULONG ulZoneMask; //调试域的掩码
}DBGPARAM, *LPDBGPARAM;
在上面的例子中可以看到,第一个是模块的名字,叫PCIBUS。而后定义了16个域的名字,其中只用到了7个域,剩下的都定义为Undefined了。最后一个数字为域的掩码,表示当前哪个域是被激活的,0x20表示只有第6个域是被激活的。从上面的例子还可以看出,前7个域是有意义的,而且按照顺序分别对应1到7。下面针对这些域需要定义相应Debug调试的宏定义:
#define DBGZONE_ERROR 1
#define DBGZONE_WARNING 2
#define DBGZONE_FUNCTION 3
#define DBGZONE_INIT 4
#define DBGZONE_ENUM 5
#define DBGZONE_LOADORDER 6
#define DBGZONE_RESOURCE 7
------解决方案--------------------
1.我不是版主,你看清楚了。91才是。
2.你在bsp里面找一下就可以看到很多类似的。
3.我说了,哪些宏定不定义关系不是特别大,定义成什么名字也很自由。你多找几个驱动看看。好些都有。