Как вызвать ICorDebug
В проектах "MDbg Sample.zip" вызовите функцию из COM-модуля как: [ComImport, Guid("3D6F5F61-7538-11D3-8D5B-00104B35E7EF"), InterfaceType((short) 1)] открытый интерфейс ICorDebug { ... } Вопрос в том, где найти Guid ("3D6F5F61-7538-11D3-8D5B-00104B35E7EF"), я не могу найти его в regedit, но как подключить интерфейс ICoreDebug к COM-модулю?
1 ответ
Это не в реестре. Этот идентификатор является IID, ICorDebug не поддерживает удаленный доступ, поэтому нет причин регистрировать заглушку / прокси на интерфейсе.
То, как вы получите экземпляр, зависит от того, какие версии среды выполнения установлены, но в наши дни "у всех" установлен CLRv4, поэтому вы получаете доступ через ICLRMetaHost.
- Используйте CLRCreateInstance, чтобы получить реализацию ICLRMetaHost
- Используйте ICLRMetaHost, чтобы найти ICLRRuntimeInfo для требуемой версии среды выполнения.
- Используйте ICLRRuntimeInfo.GetInterface, чтобы запросить реализацию ICorDebug с помощью CLSID_CLRDebuggingLegacy.