所有规范的com系统接口都以-0000-0000-c000-000000000046结尾吗?

时间:2018-08-30 18:41:32

标签: windows winapi com

所有规范的com系统接口都以-0000-0000-c000-000000000046结尾吗?

应该随机生成向导,但浏览注册表时应使用规范的COM系统接口,例如IUnknown {00000000-0000-0000-c000-000000000046},IClassFactory {00000001-0000-0000-c000-000000000046},IDispatch { 00020400-0000-0000-c000-000000000046}有一个模式。

是否有一个名为IsSystemInterface()的API函数或我可以调用进行测试的东西。还是我应该比较一下尾巴?

编辑:关于用例,这些规范接口将没有类型库,因此需要将它们筛选掉。

2 个答案:

答案 0 :(得分:0)

没有保证。

一堆原始的系统COM接口确实具有这种形式,但是大多数(如果不是全部)新的都没有。

例如原始的IShellFolder

DEFINE_GUID(IID_IShellFolder, 0x000214E6L, 0, 0, 0xC0,0,0,0,0,0,0,0x46);

后来的扩展接口IShellFolder2

DEFINE_GUID(IID_IShellFolder2, 0x93f2f68c, 0x1d1b, 0x11d3, 0xa3, 0xe, 0x0, 0xc0, 0x4f, 0x79, 0xab, 0xd1);

答案 1 :(得分:0)

C++ code行的第89-210行显示了可能的优化,因为这些接口共享相同的后缀。

// 
// the first dword of GUIDs for most of the interesting interfaces.  these are
// used by speed critical versions of QueryInterface 
//
#define Data1_IAdviseSink                  0x0000010f
#define Data1_IAdviseSink2                 0x00000125
#define Data1_IAdviseSinkEx                0x3af24290
...