Guid интерфейса COM

Я не очень разбираюсь в COM-интерфейсах, поэтому у меня есть небольшой вопрос, скажем, у меня есть этот код:

[Guid("148BD528-A2AB-11CE-B11F-00AA00530503"), 
 InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IEnumWorkItems {
    [PreserveSig()]
    int Next([In] uint RequestCount, [Out] out System.IntPtr Names, 
                       [Out] out uint Fetched);
    void Skip([In] uint Count);
    void Reset();
    void Clone([Out, MarshalAs(UnmanagedType.Interface)] 
                          out IEnumWorkItems EnumWorkItems);
}

Как узнать, что" 148BD528-A2AB-11CE-B11F-00AA00530503 " соответствует IEnumWorkItems:http://msdn.microsoft.com/en-us/library/aa380706 (VS.85).aspx

например, если я хочу знать GUID этого интерфейса:http://msdn.microsoft.com/en-us/library/aa381811 (VS.85).aspx где я могу найти его?

2 ответов


Я никогда не сталкивался с формальной документацией - однако есть несколько способов ее поиска:

  • откройте тип lib (обычно сам сервер DLL) в Ole Viewer (входит в visual studio tools)
  • поиск в SDK .идл-х / .Н
  • напишите короткую программу VC++ и используйте __uuidof (IInterface)
  • поиск его под HKCR\Interface (хотя не все интерфейсы должны быть зарегистрированы там)

в реестре выполните поиск имени класса в HKEY_CLASSES_ROOT, вы найдете GUID