В проектах «MDbg Sample.zip» вызовите функцию из COM-модуля как: [ComImport, Guid («3D6F5F61-7538-11D3-8D5B-00104B35E7EF»), InterfaceType ((short) 1) ] public interface ICorDebug {...} Вопрос в том, где найти Guid («3D6F5F61-7538-11D3-8D5B-00104B35E7EF»), я не могу найти его в regedit, но как подключить интерфейс ICoreDebug к COM модуль?Как вызвать ICorDebug
-1
A
ответ
1
Это не в реестре. Это руководство является IID, ICorDebug не поддерживает удаленный доступ, поэтому нет причин регистрировать заглушку/прокси-сервер в отношении интерфейса.
Как вы получаете экземпляр, зависит от того, какие версии среды выполнения установлены, но в наши дни у «всех» установлен CLRv4, поэтому вы получаете доступ через ICLRMetaHost.
- Используйте CLRCreateInstance, чтобы получить реализацию ICLRMetaHost
- Использование ICLRMetaHost найти ICLRRuntimeInfo для нужной версии среды выполнения.
- Используйте ICLRRuntimeInfo.GetInterface, чтобы запросить реализацию ICorDebug, используя CLSID_CLRDebuggingLegacy.
Большое спасибо! –
Здравствуйте @Brian Reichle, я запрограммировал в соответствии с вашими запросами: hr = pRuntimeInfo-> GetInterface (CLSID_CLRRuntimeHost, IID_PPV_ARGS (& pRuntimeHost)); hr = pRuntimeInfo-> GetInterface (CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (LPVOID *) & pRuntimeHost); Но когда я отлаживаю код, появляется уведомление как: в файле символов для файла нет информации о типе. Вы знаете, как решить эту проблему? Большое спасибо. –
Я не совсем уверен, что вы имеете в виду, но 'CLSID_CLRRuntimeHost' выглядит неуместным. (ICLRRuntimeHost - это то, что вы используете для размещения времени выполнения в вашем процессе, обычно не используется для создания ICorDebug) –