在CE串口驱动中有这么一段非常重要的代码:
const
HW_VTBL IoVTbl = {
SerInitSerial,
SL_PostInit,
SerDeinit,
SerOpen,
..........
};
extern const HW_VTBL SerCardIoVTbl;
const
HW_VTBL IrVTbl = {
SerInitIR,
SL_PostInit,
SerDeinit,
SerOpen,
........
};
extern const HW_VTBL SerCardIrVTbl;
const HWOBJ IoObj = {
THREAD_AT_INIT,
SYSINTR_SERIAL,
(PHW_VTBL) &IoVTbl
};
const HWOBJ IrObj = {
THREAD_AT_INIT,
SYSINTR_IR,
(PHW_VTBL) &IrVTbl
};
typedef HWOBJ const *PCHWOBJ;
const PCHWOBJ HWObjects[] = {
&IoObj,
&IrObj
};
PHWOBJ
GetSerialObject(
DWORD DeviceArrayIndex
)
{ PHWOBJ pSerObj;
RETAILMSG(DEBUGMODE,(TEXT("GetSerialObject : DeviceArrayIndex = %d\r\n"), DeviceArrayIndex));
// Now return this structure to the MDD.
if ( DeviceArrayIndex == 1 )
pSerObj = (PHWOBJ)(&IrObj);
else
pSerObj = (PHWOBJ)(&IoObj);
return (pSerObj);
}
请问各位高手::
1、 是不是在IrVTbl和IrVTbl中的代码就是在我需要实现的硬件相关的PDD层代码??
2、HW_VTBL IoVTbl
HW_VTBL IrVTbl
这两个中的函数是需要实现的硬件相关的函数
可是HW_VTBL是什么意思?怎么可以用HW_VTBL来定义IoVTbl和IrVTbl,我用source insight看没看到HW_VTBL 的宏定义;
3、const HWOBJ IoObj = {
THREAD_AT_INIT,
SYSINTR_SERIAL,
(PHW_VTBL) &IoVTbl
};
const HWOBJ IrObj = {
THREAD_AT_INIT,
SYSINTR_IR,
(PHW_VTBL) &IrVTbl
};
这两个的定义是什么意思呢??
4、typedef HWOBJ const *PCHWOBJ;
const PCHWOBJ HWObjects[] = {
&IoObj,
&IrObj
};
这是不是一个结构指针??
可以这样定义吗?
struct const *PCHWOBJ HWObjects[]={
&IoObj,
&IrObj
};
谢谢各位!!!
mark。学习下。
把一个声明从右向左读
typedef HWOBJ const *PCHWOBJ
应该读成指针型的结构体
3、就是初始化了两个const的变量
4、
typedef HWOBJ const *PCHWOBJ;
const PCHWOBJ HWObjects[] = {
&IoObj,
&IrObj
};
等于
HWOBJ const* const HWObjects[] = {
&IoObj,
&IrObj
};
HWObjects这个指针和指针的内容都是const的。
typedef HWOBJ const *PCHWOBJ;
const PCHWOBJ HWObjects[] = {
&IoObj,
&IrObj
};
这是一个HWOBJ类型的结构数组吧??
请问这个在整个程序中有什么作用呢???
我用source insight跟踪,在整个串口程序中,其他的地方并没有用到它!!!!