Реализация отладчика VBScript - IActiveScriptDebug "Ошибка Catastrophi c" на 64-разрядной Windows - PullRequest
0 голосов
/ 05 марта 2020

Исходя из моего последнего вопроса о реализации интерфейсов отладчика 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 битный код выдает эту ошибку?

1 Ответ

0 голосов
/ 16 марта 2020

Итак, после долгих поисков своего хвоста и отсутствия ответов на этом форуме, я пришел к выводу, что 64-разрядная версия активного отладчика сценариев не работает, и нет никаких шансов, что она будет исправлена, как кажется. устарела.

Поэтому я оставляю это здесь как предупреждение для тех, кто хочет реализовать эту функцию, и даю им знать, чтобы они не тратили свое время.

...