Руководство по интерфейсу 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, где его найти?
Ответы
Ответ 1
Я никогда не сталкивался с официальной документацией. Однако есть несколько способов поиска:
- Откройте тип lib (обычно сам сервер DLL) в OLE Viewer (входит в инструменты визуальной студии)
- поиск в SDK.idl/.h's
- напишите короткую программу VС++ и используйте __uuidof (IInterface)
- Поиск его под HKCR\Interface (хотя не все интерфейсы должны регистрироваться там)
Ответ 2
В реестре выполните поиск имени класса в HKEY_CLASSES_ROOT
, вы найдете GUID