COM全局唯一标识符GUID
2022-02-07
108
0
COM规范采用了128位全局唯一标识符GUID来标识对象和接口,这是一个随机数,并不需要专门机构进行分配和管理。因为GUID是个随机数,所以并不绝对保证唯一性,但发生标识符相重的可能性非常小。从理论上讲,如果一台机器每秒产生10000000个GUID,则可保证(概率意义上)的3240年不重复)。GUID在C/C++中可用这样的结构来描述:
typedef struct{
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} GUID;
例:{64BF4372-1007-B0AA-444553540000}可如下定义一个GUID:
extern "C" const GUID CLSID_MYSPELLCHECKER ={
0x54BF0093,0x1048,0x399D,{ 0xB0,0xA3,0x45,0x33,0x43,0x90,0x47,0x47}
};
VC++提供了2个生成GUID的程序:UUIDGen.exe(命令行)和GUIDGen.exe(对话框)。
COM库也提供了生成GUID的函数:HRESULT CoCreateGuid(GUID *pguid)
;