《COM原理与应用》笔记
客户程序通过一个全局唯一标识符进行COM对象的创建和初始化工作。COM规范采用了128位全局唯一标识符GUID。
下面是一个GUID的例子
{54BF6567-1007-11D1-B0AA-444553540000}
在C/C++中可以用这样的结构来描述:
typedef struct _GUID
{
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
}GUID;
前面的GUID例子可以定义为
extern "C" const GUID CLSID_MYSPELLCHECKER =
{ 0x54bf6567, 0x1007, 0x11d1,
{ 0xb0, 0xaa, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 }};
COM库提供了以下API函数可以产生GUID:
HRESULT CoCreateGuid(GUID *pguid);
如果创建GUID成功,函数返回S_OK,pguid指向得到的GUID值。
CLSID是用来标识COM对象的GUID,它在结构定义上与GUID一致。GUID并不是专门用来定义COM对象标识符的,它也用于定义其他实体的标识符,比如接口标识符。