使用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 | 描述数组每维的数组结构,该数组的大小是可变的 |
| 元素 | celements | ilbound |
| rgsabound[0] | 3 | 0 |
| rgsabound[1] | 4 | 0 |
| rgsabound[2] | 5 | 0 |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器