您的位置是: 软件 > 开发者网络 > 技术跟踪 > 技术理论 > 正文 查cseek报价

使用SAFEARRAY传送对象
2001-03-21作者: QQ新人类出处: yesky
我对此感兴趣
订阅电子杂志
发表评论
advertisement
热点推荐
· 群雄逐鹿 十四种Java开发工具点评
· 网文快捕,将网络资源搬回家
· Windows系统瘦身计划
· PS多媒体教程带你享受快乐学习
· 网络游戏外挂设计深度探索
· 武装你的桌面,桌面工具大阅兵
天极搜索引擎服务
资讯  产品  经销商  下载  社区

1 2 3  下一页



  使用SAFEARRAY

  我们将使用SAFEARRAY来通过COM传送串行化的对象。这部分将介绍如何建立和使用SAFEARRAY类型。

  SAFEARRAY是数据结构的一种。这种结构也没有什么特别的,你只需要正确地设置它,当然你要知道其中一些颇为复杂的规定。为了确保SAFEARRAY被正确地使用,它有一系列用作管理的API函数。这些API的函数负责创建、调整大小和删除SAFEARRAY。不幸的是,有关这些API函数的文档是相当少的。

  对于SAFEARRAY的内部结构我们并不关心,但了解一下是值得的。以下就是SAFEARRAY的Win32定义:

  typedef struct tagSAFEARRAY

   {

    unsigned short cDims;

    unsigned short fFeatures;

    unsigned long cbElements;

    unsigned long cLocks;

    void * pvData;

    SAFEARRAYBOUND rgsabound[ 1 ];

   } SAFEARRAY;

  这个结构的成员(cDims,cLocks等)是通过API函数来设置和管理的。真正的数据存放在pvData成员中,而SAFEARRAYBOUND结构定义该数组结构的细节。以下就是该结构成员的简要描述:


成员 描述
cDims 数组的维数
fFeatures 用来描述数组如何分配和如何被释放的标志
cbElements 数组元素的大小
cLocks 一个计数器,用来跟踪该数组被锁定的次数
pvData 指向数据缓冲的指针
rgsabound 描述数组每维的数组结构,该数组的大小是可变的

  rgsabound是一个有趣的成员,它的结构不太直观。它是数据范围的数组。该数组的大小依safe array维数的不同而有所区别。rgsabound成员是一个SAFEARRAYBOUND结构的数组--每个元素代表SAFEARRAY的一个维。

  typedef struct tagSAFEARRAYBOUND

   {

    unsigned long cElements;

    unsigned long lLbound;

   } SAFEARRAYBOUND;

  维数被定义在cDims成员中。例如,一个'C'类数组的维数可以是[3][4][5]-一个三维的数组。如果我们使用一个SAFEARRAY来表示这个结构,我们定义一个有三个元素的rgsabound数组--一个代表一维。

  cDims = 3;


    ...


  SAFEARRAYBOUND rgsabound[ 3 ];

  rgsabound[0]元素定义第一维。在这个例子中ILBOUND元素为0,是数组的下界。cElements成员的值等于三。数组的第二维([4])可以被rgsabound结构的第二个元素定义。下界也可以是0,元素的个数是4,第三维也是这样。要注意,由于这是一个"C"数组,因此由0开始,对于其它语言,例如Visual Basic,或者使用一个不同的开始。该数组的详细情况如下所示:


元素 cElements ILbound
rgsabound[0] 3 0
rgsabound[1] 4 0
rgsabound[2] 5 0


  关于SAFEARRAYBOUND结构其实还有很多没说的。我们将要使用的SAFEARRAY只是一个简单的单维字节数组。我们通过API函数创建数组的时候,SAFEARRAYBOUND将会被自动设置。只有在你需要使用复杂的多维数组的时候,你才需要操作这个结构。

  还有一个名字为cLocks的成员变量。很明显,它与时间没有任何的关系--它是一个锁的计数器。该参数是用来控制访问数组数据的。在你访问它之前,你必须锁定数据。通过跟踪该计数器,系统可以在不需要该数组时安全地删除它。

1 2 3  下一页


【责任编辑:】
推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志发表评论

天极商业街
·激情美女让你想入非非
·图铃梦工厂下载无限!
·找寻童真,卡通专题
·夏日激情交友社区!
·星座运程,预测人生
CSEEK搜索
相关内容阅读排行榜
  • 忍一时风平浪静 退一步海阔天空
  • 《育成足球04》金手指(PS2)
  • 《异域传说二部曲》金手指(PS2)
  • 等待是一种美丽
  • 半兽人的神话
  • 微软认为XBOX2没必要兼容XBOX
  • 日本发行新型限定版GameCube
  • 图谋低端市场 Sempron一门三杰再续辉煌

  • advertisement

     短信乐园
    好名好运 每日运程 姓名配对 情侣缘分 生命曲线 三生三世 自我认知 前世今生
    游戏嘉年华 爱情宝石 魔法水晶 麻辣竞猜 魔法占卜 暗恋表白 星座运程 浮生记


    · 至少还有你-林忆莲
    · 东风破-周杰伦
    · 什么都不怕-杨千桦
    · 下一站天后-Twins
    · 不羁的风-张国荣
    · 帅哥接电话
    · 严守一标准铃声
    · 0.01公分
    · 下雨收衣服啦
    · 快点接我电话吧

    欲望都市 成人笑话 图铃包月 天气预报 麻辣生活 都市报
    体育新闻 娱乐新闻 点歌祝福 情人悄悄话