COM中的REFIID小解

 

      是在浏览器项目中的IDispatch调用QueryInterface( [in]   REFIID riid,  [out]  void **ppvObject);

认识的REFIID,由于看声明说riid唯一的标识了一个COM接口,然后ppvObject就接受该接口类的对象指针,所以我想弄明白REFIID的含义。

     typedef   const   IID&   REFIID;  

     REFIID = Reference of IID

     IID = GUID

     其中,GUID定义如下:

   
typedef   struct   _GUID   { 

        DWORD   Data1; 

        WORD       Data2; 

        WORD       Data3; 

        BYTE     Data4[8]; 

  }   GUID; 

 

   GUID;     共有16个字节,所以不宜传变量进去,最好是传指针或引用。但是出于指针的危险性,所以使用常量的引用。这个GUID唯一的标识了一个接口类。所以现在明白了IUnkonwn接口里函数QueryInterface里的意义了。

你可能感兴趣的:(com)