zoukankan      html  css  js  c++  java
  • COM笔记关于GUID

    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.hGUDIS.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

     

    本文地址:http://www.cnblogs.com/fangyukuan/archive/2010/06/10/1755916.html 


  • 相关阅读:
    好玩的贪吃蛇小游戏,有趣极了!
    vue的多选框存储值操作
    vue和jquery嵌套实现异步ajax通信
    vue的组件学习———做一个简易机器人
    vue监听属性完成首字母大小写转换
    Vue多选框的绑定
    Vue.js的简介、属性
    MySQL数据库(5)
    DRF的json web token方式完成用户认证
    DRF跨域问题
  • 原文地址:https://www.cnblogs.com/fangyukuan/p/1755916.html
Copyright © 2011-2022 走看看