COM笔记-关于GUID
2010-06-10 22:14
225 查看
GUID
它实际上是组件和接口的标识号static const IID IID_IX = {
0x1ee235bd, 0x2e73, 0x49c2, 0xa5, 0x7c, 0x8b, 0xe5, 0x96, 0x92, 0x7e, 0xa2};
实际上IID是一个128比特(16字节)的一个GUID结构。GUID是英文Globally Unique Identifier(全局唯一标识符)的首字母缩写.
GUID 的声明和定义
之前是两个文件(Iface.h和GUDIS.cpp)来声明和定义GUID的。若希望用一条语句来声明并定义GUID,可以用使用OBJBASE.H中的定义的DEFINE_GUID宏。如下:
//
{6EF6377B-6150-462e-84FF-5B3FD43A9954}
DEFINE_GUID(IID_IX,
0x6ef6377b,
0x6150, 0x462e, 0x84, 0xff, 0x5b, 0x3f,
0xd4, 0x3a, 0x99,
0x54);
在文件guiddef.h可以看到这样一个定义:
#ifdef INITGUID
#define
DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C const GUID DECLSPEC_SELECTANY name \
= { l, w1, w2, { b1, b2,
b3, b4, b5,
b6, b7, b8 } }
#else
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C
const GUID FAR name
#endif // INITGUID
可以看出如果定义了INITGUID。 DEFINE_GUID 将是一个定义,否则只是声明。
或者直接包含 #include <InitGuid.h> 它的主要内容是:
#define INITGUID #include <guiddef.h>
将GUID作为组件标识符
CoCreateInstance将使用一个GUID而不是一个串来标识组件。在COM中用以标识组件的GUID被称作是类标识符。为将类标识符同IID区别开来,与类标识符相应的类型为 。通过引用传递GUID值
若不想输入const IID&则可以使用等价的REFIID。类似地,在传递类标识符时,可以使用REFCLSID,而在传递GUID值时,可以使用REFGUID本文地址:/article/5259715.html
相关文章推荐
- COM笔记-关于GUID
- COM技术内幕--关于HRESULT、GUID、注册表及其他细节
- COM技术内幕第六章笔记-HRESULT、GUID、注册表及其他
- COM笔记-关于HRESULT
- com关于GUID
- COM笔记-关于HRESULT
- 【hadoop】Hadoop学习笔记(五):一些关于HDFS的基本知识
- 关于部署好tomcat的环境下 jsp文件在eclipse中能运行,但是在浏览器打开时显示404错误的个人笔记
- COM笔记(QueryInterface接口查询)
- 关于原生js中ajax部分的学习笔记
- 关于GUID
- 关于SSL/TLS中AES安全性|BEAST攻击的详细步骤以及RC4强度的一些笔记
- java笔记--关于多线程状态的理解和应用
- 基于MT7688模块的开发笔记1——关于Ubuntu版本
- 关于Agile Scrum的笔记
- 关于ExtJS3.0组件连接http://extjs.com/s.gif的问题
- 关于ARP欺骗与MITM(中间人攻击)的一些笔记(一)
- 关于正则表达式的一些个人笔记
- 关于并查集的笔记
- 关于mybatis的一些学习笔记