Пытаясь использовать IActiveScriptProfilerControl::StartProfiling
из моего кода на С#, я создал это определение интерфейса:
[ComImport]
[Guid(@"784b5ff0-69b0-47d1-a7dc-2518f4230e90")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IActiveScriptProfilerControl
{
void StartProfiling(
ref Guid clsidProfilerObject,
ProfilerEventMask eventMask,
uint dwContext);
// ...
}
Скорее всего, я верю в .NET.
Первоначальный первый параметр определяется как
[in] REFCLSID clsidProfilerObject
С этими определениями:
typedef GUID CLSID;
typedef CLSID *REFCLSID;
Я также могу создать экземпляр объекта Microsoft JQueryScriptEngine
и запрос для IActiveScriptProfilerControl
.
В настоящее время я не могу понять, как использовать функцию StartProfiling
для использования моего объекта IActiveScriptProfilerCallback
.
Мой вопрос:
Как подключить мой собственный класс обратного вызова профилировщика с активным интерфейсом управления профилировщиком script через вызов IActiveScriptProfilerControl::StartProfiling
?
В идеале я хотел бы сделать это без необходимости RegAsm моего класса.
Обновление 1:
Я изменил первый параметр определения интерфейса на:
[ComImport]
[Guid(@"784b5ff0-69b0-47d1-a7dc-2518f4230e90")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IActiveScriptProfilerControl
{
void StartProfiling(
IActiveScriptProfilerCallback clsidProfilerObject, // <-- changed.
ProfilerEventMask eventMask,
uint dwContext);
// ...
}
и попытался вызвать эту функцию, передав экземпляр моего класса IActiveScriptProfilerCallback
-derived.
Тем не менее, я получаю сообщение об ошибке:
Класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))