_GUID(全球唯一标识符)学习

全局唯一标识符在学习COM是常常用到,很长的一段数据。虽然很多东西不需要自己去深入,但是混过眼熟总是很好的。每次看到这么一大串数字,心中无名火大。现在把它抓出来说一说,摆一摆。以后看见就会自然一点了。学习也就是先混眼熟,在心熟的过程吧。

关于_GUID有很多中的表示方法了。

typedef struct _GUID GUID;
typedef GUID IID;
typedef GUID CLSID;

 

在程序代码中常常都看到使用上面的其中一个。这个typedef 关键字啊,就被这些人拿去乱用,好好的一个_GUID和这个GUID有多大差别,硬是要搞来搞去的定义,没事找事干。说归说了,也可以自己定义自己的写法。但不管如何变,其本质就如下面一样:

 

#ifndef GUID_DEFINED
#define GUID_DEFINED
typedef struct _GUID
{
    unsigned long  Data1;//4个字节
    unsigned short Data2;//2个字节
    unsigned short Data3;//2个字节
    unsigned char  Data4[8];//8个字节
} GUID;
#endif /* GUID_DEFINED */

#ifndef __LPGUID_DEFINED__
#define __LPGUID_DEFINED__
typedef GUID *LPGUID;
#endif

 

如上面结构体所示,刚好16个字节,也就是128位。至于为什么说他是全球唯一标识符。我不去管它。我的目的就是要记住他是怎么写的。我怎么才能够看到他时,不那么陌生。会像看到老熟人一样就可以了。

根据其结构如果让我对他赋值。将会如下写:

_GUID myGuid =

{

   0x********,0x****,0x****,{0x**,0x**,0x**,0x**,0x**,0x**,0x**,0x**}

};

这样写很清晰,以后让我手动给一个_GUID值也能够简单的给出,当然实际中是不会要求自己写的。因为这样既无法保证唯一性,因为每个人对编号都有一定的习惯,这天手动写一个不会重复,写很多次后就不敢保证会不会重复了。哈哈。。。所以一般用程序生成了。

写成字符串也是××××××××-××××-××××-××××-××××××××××××。在注册表CLSID键下的项都是这样表示的 。

好了,收工了,看到这样的数字,不要想到是128位,而是想到是16个字节。不要想到是16个字节,要想到是4个字节+2个字节+2个字节+8个字节。就好了。不要想到他有多深奥,其实就是一堆烂数字,刚学COM时,总是看到这堆数字就头疼。今天终于把他拉出来鞭尸,以解心头之恨,痛快、痛快啊。。。。。。。。。。。。。。本文纯属胡编乱造,请读者胡编乱看即可,不必介意。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值