![d8a753ab09ed44ed89c841925ef11fd4.png](https://i-blog.csdnimg.cn/blog_migrate/de38bba0e5db414118d2ed397b12e1ae.jpeg)
关于全局唯一标识符
用几个世纪以来独一无二的标签命名你的接口
摘要
本文介绍全局唯一标识符(GUID:Globally Unique IDentifier ),并说明如何从您喜欢的工作站创建一个。它包括以下部分:
关于全局唯一标识符
如何获取全局唯一标识符
关于全局唯一标识符
全局唯一标识符 (GUID) 旨在在使用该接口的任何地点和任何时间唯一标识该接口。它以128位编码,并且在空间和时间上都是唯一的:
48位通过捕获运行创建GUID的命令的计算机上的网卡地址来确保这种在空间上的唯一性。此地址是唯一的,这保证了在给定计算机上生成的任何GUID与在另一台计算机上生成的任何其他GUID不同。
60位的时间戳可确保随时间推移的唯一性,这表示自1582年10月15日00:00:00.00以来的100纳秒间隔的计数。这为产生GUIDs留下了空间,直到大约公元3400年。
首先由开放软件基金会 (OSF:Open Software Foundation ) 为分布式计算环境 (DCE:Distributed Computing Environment ) 的远程过程调用 (RPC:Remote Procedure Calls ) 创建为通用唯一标识符的UUID 。这就是为什么您有时可以找到使用UUID而不是GUID的原因,例如在命令或实用程序中生成它们。
如何获取全局唯一标识符
您可以获取接口的GUID,如下所示:
在UNIX中,使用uuid_gen -C命令返回一个GUID,如下所示:
= { 0x7c7b3737,
0x5358,
0x0000,
0x02,
{0x80, 0x02, 0x0b, 0x3e, 0x00, 0x00, 0x00} };
要运行此命令,请输入:
/etc/ncs/uuid_gen -C with AIX
/usr/sbin/ncs/uuid_gen -C with HP-UX
Sun今天不提供任何生成GUID的方法
然后,当将其包含到接口IDL文件中时,您需要进行一些编辑以按如下方式对其进行转换:7c7b3737-5358-0000-0280020b3e000000
要将其包含到C++文件中,请按照以下方式对其进行转换:
= { 0x7c7b3737,
0x5358,
0x0000,
{0x02, 0x80, 0x02, 0x0b, 0x3e, 0x00, 0x00, 0x00} };
在Windows中,命令uuidgen -s返回全局唯一标识符,如下所示:
INTERFACENAME = { /* 7c7b3737-5358-0000-0280-020b3e000000 */
0x7c7b3737,
0x5358,
0x0000,
{0x02, 0x80, 0x02, 0x0b, 0x3e, 0x00, 0x00, 0x00}
};
对于IDL接口,复制第一行的注释值,粘贴它,然后删除最后一个连字符以获取7c7b3737-5358-0000-0280020b3e000000.
您也可以运行仅返回7c7b3737-5358-0000-0280-020b3e000000.的UUIDGEN.EXE。不要忘记删除最后一个连字符。
要将其包含到C++ 头文件中,可以按原样获取十六进制值。
= { 0x7c7b3737,
0x5358,
0x0000,
{0x02, 0x80, 0x02, 0x0b, 0x3e, 0x00, 0x00, 0x00}
};
注意: uuidgen通常位于C:Program FilesMicrosoft Visual StudioCommonTools