是在浏览器项目中的IDispatch调用QueryInterface( [in] REFIID riid, [out] void **ppvObject);
认识的REFIID,由于看声明说riid唯一的标识了一个COM接口,然后ppvObject就接受该接口类的对象指针,所以我想弄明白REFIID的含义。
typedef const IID& REFIID;
REFIID = Reference of IIDIID = GUID
其中,GUID定义如下:
typedef struct _GUID { DWORD Data1; WORD Data2; WORD Data3; BYTE Data4[8]; } GUID;
GUID; 共有16个字节,所以不宜传变量进去,最好是传指针或引用。但是出于指针的危险性,所以使用常量的引用。这个GUID唯一的标识了一个接口类。所以现在明白了IUnkonwn接口里函数QueryInterface里的意义了。