------------------------------------------------------
1. EDB数据库的结构
------------------------------------------------------
EDB数据库的基本单位是Volume,也就是卷,通常存在于一个磁盘文件中,例如:pim.vol等等。
在卷中包含若干数据库,可以由数据库名称或者OID(对象编号)来访问他们,例如:pim.vol中包含名为“Appointments Database”的数据库,其OID为1077960704。
而每个数据库包含很多记录,可以通过OID或者在数据库中的排序标号来访问每个记录。
每个记录又包含很多属性,记录属性==记录数据。记录的属性由CEPROPVAL类型的结构来存储,每个记录存储一个CEPROPVAL类型的数组,数组大小就是属性数量。
每个记录的属性由CEPROPVAL::propid来标识。propid是一个双字类型(DWORD)的数据,高位字定义的是属性名称ID,低位字代表 数据库中记录的属性数据的类型,如:LPWSTR,UI4等等。其中PIM.VOL中的属性ID定义在"pimstore.h"中。
属性的数据则存储在CEVALUNION类型的联合(union)中,CEVALUNION的定义如下:
typedef union _CEVALUNION {
short iVal; //@field CEVT_I2
USHORT uiVal; //@field CEVT_UI2
long lVal; //@field CEVT_I4
ULONG ulVal; //@field CEVT_UI4
//@field CEVT_AUTO_I4_
FILETIME filetime; //@field CEVT_FILETIME
LPWSTR lpwstr; //@field CEVT_LPWSTR - Ptr to null terminated string
CEBLOB blob; //@field CEVT_BLOB - DWORD count, and Ptr to bytes
//@field CEVT_AUTO_I8
//@field CEVT_RECID
//@field CEVT_STREAM
BOOL
1. EDB数据库的结构
------------------------------------------------------