Исходя из моего последнего вопроса о реализации интерфейсов отладчика Microsoft Active Script на 64-битных windows. Я столкнулся с еще одной неразрешимой проблемой.
На этот раз это с IActiveScriptDebug, который, похоже, не работает в своем 64-битном воплощении.
Код, о котором идет речь, при попытке установить точки останова с помощью код из примера кода отладчика MS (преобразован в Delphi).
Href:=FEngine.QueryInterface(IID_IActiveScriptDebug,FdebugEngine);
Href:=FdebugEngine.EnumCodeContextsOfPosition(0,Line,LineLen,edcc);
if IEnumDebugCodeContexts(edcc).Next(1,dcc,numFetched) = S_OK then
Href:=dcc.SetBreakPoint(BREAKPOINT_ENABLED);
Где Fengine - это механизм языка IactiveScript, а FdebugEngine - возвращенный объект IActiveScriptDebug, а ed cc - это IEnumDebugCodeContexts;
IID_IActiveScriptDebug установлен в GUID IID_IActiveScriptDebug64 для 64-битного windows и IID_IActiveScriptDebug32 для 32-битного windows. В обоих случаях возвращается действительный механизм отладки.
Скомпилировано для 32 windows, этот код работает нормально. Я могу установить точки останова и получить обратные вызовы на перерывах.
Скомпилированный для 64 бит, FdebugEngine.EnumCodeContextsOfPosition возвращает "Catastrophi c fail" Hresult.
Любые идеи, почему 64 битный код выдает эту ошибку?