100分求助:关于CE下串口驱动流程---关于结构指针

94179411   2008-8-4 14:33 楼主
在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
                                  };
谢谢各位!!!

回复评论 (5)

mark。学习下。

把一个声明从右向左读

typedef HWOBJ const *PCHWOBJ

应该读成指针型的结构体
点赞  2008-8-4 15:36
3、就是初始化了两个const的变量
4、
typedef HWOBJ const *PCHWOBJ;
  const PCHWOBJ HWObjects[] = {
  &IoObj,
  &IrObj
  };

等于

HWOBJ const* const HWObjects[] = {
  &IoObj,
  &IrObj
  };

HWObjects这个指针和指针的内容都是const的。
点赞  2008-8-4 16:15
typedef HWOBJ const *PCHWOBJ;   
const PCHWOBJ HWObjects[] = {
  &IoObj,
  &IrObj
  };
这是一个HWOBJ类型的结构数组吧??
请问这个在整个程序中有什么作用呢???
我用source insight跟踪,在整个串口程序中,其他的地方并没有用到它!!!!
点赞  2008-8-4 16:19
顶!
点赞  2008-8-4 22:58
求高手帮忙!!
点赞  2008-8-5 09:35
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复