[PSDK]
[reactos.git] / include / psdk / activdbg.idl
index a572a51..54170e6 100644 (file)
-/*\r
- * Copyright 2008 Jacek Caban for CodeWeavers\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA\r
- */\r
-\r
-import "ocidl.idl";\r
-import "activscp.idl";\r
-/* import "dbgprop.idl"; */\r
-\r
-interface IDebugDocumentContext;\r
-interface IRemoteDebugApplication;\r
-\r
-/* FIXME: */\r
-interface IEnumDebugStackFrames;\r
-interface IDebugStackFrame;\r
-interface IApplicationDebugger;\r
-interface IEnumRemoteDebugApplicationThreads;\r
-interface IDebugApplicationNode;\r
-interface IEnumDebugExpressionContexts;\r
-interface IDebugApplicationThread;\r
-interface IDebugSyncOperation;\r
-interface IDebugAsyncOperation;\r
-interface IDebugStackFrameSniffer;\r
-interface IDebugThreadCall32;\r
-interface IActiveScriptErrorDebug;\r
-interface IProvideExpressionContexts;\r
-\r
-typedef enum tagBREAKPOINT_STATE {\r
-    BREAKPOINT_DELETED,\r
-    BREAKPOINT_DISABLED,\r
-    BREAKPOINT_ENABLED\r
-} BREAKPOINT_STATE;\r
-\r
-typedef DWORD APPBREAKFLAGS;\r
-\r
-typedef enum tagBREAKREASON {\r
-    BREAKREASON_STEP,\r
-    BREAKREASON_BREAKPOINT,\r
-    BREAKREASON_DEBUGGER_BLOCK,\r
-    BREAKREASON_HOST_INITIATED,\r
-    BREAKREASON_LANGUAGE_INITIATED,\r
-    BREAKREASON_DEBUGGER_HALT,\r
-    BREAKREASON_ERROR,\r
-    BREAKREASON_JIT\r
-} BREAKREASON;\r
-\r
-typedef enum tagBREAKRESUME_ACTION {\r
-    BREAKRESUMEACTION_ABORT,\r
-    BREAKRESUMEACTION_CONTINUE,\r
-    BREAKRESUMEACTION_STEP_INTO,\r
-    BREAKRESUMEACTION_STEP_OVER,\r
-    BREAKRESUMEACTION_STEP_OUT,\r
-    BREAKRESUMEACTION_IGNORE\r
-} BREAKRESUMEACTION;\r
-\r
-typedef enum tagDOCUMENTNAMETYPE {\r
-    DOCUMENTNAMETYPE_APPNODE,\r
-    DOCUMENTNAMETYPE_TITLE,\r
-    DOCUMENTNAMETYPE_FILE_TAIL,\r
-    DOCUMENTNAMETYPE_URL\r
-} DOCUMENTNAMETYPE;\r
-\r
-typedef enum tagERRORRESUMEACTION {\r
-    ERRORRESUMEACTION_ReexecuteErrorStatement,\r
-    ERRORRESUMEACTION_AbortCallAndReturnErrorToCaller,\r
-    ERRORRESUMEACTION_SkipErrorStatement,\r
-} ERRORRESUMEACTION;\r
-\r
-/************************************************************\r
- *      interface IDebugDocumentInfo\r
- */\r
-[\r
-    object,\r
-    uuid(51973c1f-cb0c-11d0-b5c9-00a0244a0e7a),\r
-    pointer_default(unique)\r
-]\r
-interface IDebugDocumentInfo : IUnknown\r
-{\r
-    HRESULT GetName(\r
-            [in]  DOCUMENTNAMETYPE dnt,\r
-            [out] BSTR *pbstrName);\r
-\r
-    HRESULT GetDocumentClassId(\r
-            [out] CLSID *pclsidDocument);\r
-}\r
-\r
-/************************************************************\r
- *      interface IDebugDocument\r
- */\r
-[\r
-    object,\r
-    uuid(51973c21-cb0c-11d0-b5c9-00a0244a0e7a),\r
-    pointer_default(unique)\r
-]\r
-interface IDebugDocument : IDebugDocumentInfo\r
-{\r
-}\r
-\r
-/************************************************************\r
- *      interface IDebugCodeContext\r
- */\r
-[\r
-    object,\r
-    uuid(51973c13-cb0c-11d0-b5c9-00a0244a0e7a),\r
-    pointer_default(unique)\r
-]\r
-interface IDebugCodeContext : IUnknown\r
-{\r
-    HRESULT GetDocumentContext(\r
-            [out] IDebugDocumentContext **ppsc);\r
-\r
-    HRESULT SetBreakPoint(\r
-            [in]  BREAKPOINT_STATE bps);\r
-}\r
-\r
-/************************************************************\r
- *      interface IEnumDebugCodeContexts\r
- */\r
-[\r
-    object,\r
-    uuid(51973c1d-cb0c-11d0-b5c9-00a0244a0e7a),\r
-    pointer_default(unique)\r
-]\r
-interface IEnumDebugCodeContexts : IUnknown\r
-{\r
-    HRESULT Next(\r
-            [in]  ULONG celt,\r
-            [out] IDebugCodeContext **pscc,\r
-            [out] ULONG *pceltFetched);\r
-\r
-    HRESULT Skip(\r
-            [in]  ULONG celt);\r
-\r
-    HRESULT Reset();\r
-\r
-    HRESULT Clone(\r
-            [out] IEnumDebugCodeContexts **ppescc);\r
-}\r
-\r
-/************************************************************\r
- *      interface IDebugDocumentContext\r
- */\r
-[\r
-    object,\r
-    uuid(51973c28-cb0c-11d0-b5c9-00a0244a0e7a),\r
-    pointer_default(unique)\r
-]\r
-interface IDebugDocumentContext : IUnknown\r
-{\r
-    HRESULT GetDocument(\r
-            [out] IDebugDocument **ppsd);\r
-\r
-    HRESULT EnumCodeContexts(\r
-            [out] IEnumDebugCodeContexts **ppescc);\r
-}\r
-\r
-/************************************************************\r
- *      interface IRemoteDebugApplicationThread\r
- */\r
-[\r
-    object,\r
-    uuid(51973c37-cb0c-11d0-b5c9-00a0244a0e7a),\r
-    pointer_default(unique)\r
-]\r
-interface IRemoteDebugApplicationThread : IUnknown\r
-{\r
-    HRESULT GetSystemThreadId(\r
-            [out] DWORD *dwThreadId);\r
-\r
-    HRESULT GetApplication(\r
-            [out] IRemoteDebugApplication **pprda);\r
-\r
-    HRESULT EnumStackFrames(\r
-            [out] IEnumDebugStackFrames **ppedsf);\r
-\r
-    HRESULT GetDescription(\r
-            [out] BSTR *pbstrDescription,\r
-            [out] BSTR *pbstrState);\r
-\r
-    HRESULT SetNextStatement(\r
-            [in]  IDebugStackFrame *pStackFrame,\r
-            [in]  IDebugCodeContext *pCodeContext);\r
-\r
-    HRESULT GetState(\r
-            [out] DWORD *pState);\r
-\r
-    HRESULT Suspend(\r
-            [out] DWORD *pdwCount);\r
-\r
-    HRESULT Resume(\r
-            [out] DWORD *pdwCount);\r
-\r
-    HRESULT GetSuspendCount(\r
-            [out] DWORD *pdwCount);\r
-}\r
-\r
-/************************************************************\r
- *      interface IRemoteDebugApplication\r
- */\r
-[\r
-    object,\r
-    uuid(51973c30-cb0c-11d0-b5c9-00a0244Aae7a),\r
-    pointer_default(unique)\r
-]\r
-interface IRemoteDebugApplication : IUnknown\r
-{\r
-    HRESULT ResumeFromBreakPoint(\r
-            [in]  IRemoteDebugApplicationThread *prptFocus,\r
-            [in]  BREAKRESUMEACTION bra,\r
-            [in]  ERRORRESUMEACTION era);\r
-\r
-    HRESULT CauseBreak();\r
-\r
-    HRESULT ConnectDebugger(\r
-            [in]  IApplicationDebugger *pad);\r
-\r
-    HRESULT DisconnectDebugger();\r
-\r
-    HRESULT GetDebugger(\r
-            [out] IApplicationDebugger **pad);\r
-\r
-    HRESULT CreateInstanceAtApplication(\r
-            [in]  REFCLSID rclsid,\r
-            [in]  IUnknown *pUnkOuter,\r
-            [in]  DWORD dwClsContext,\r
-            [in]  REFIID riid,\r
-            [out, iid_is(riid)] IUnknown **ppvObject);\r
-\r
-    HRESULT QueryAlive();\r
-\r
-    HRESULT EnumThreads(\r
-            [out] IEnumRemoteDebugApplicationThreads **pperdat);\r
-\r
-    HRESULT GetName(\r
-            [out] BSTR *pbstrName);\r
-\r
-    HRESULT GetRootNode(\r
-            [out] IDebugApplicationNode **ppdanRoot);\r
-\r
-    HRESULT EnumGlobalExpressionContexts(\r
-            [out] IEnumDebugExpressionContexts **ppedec);\r
-}\r
-\r
-/************************************************************\r
- *      interface IDebugApplication32\r
- */\r
-[\r
-    object,\r
-    uuid(51973c32-cb0c-11d0-b5c9-00a0244a0e7a),\r
-    pointer_default(unique),\r
-    local\r
-]\r
-interface IDebugApplication32 : IRemoteDebugApplication\r
-{\r
-    HRESULT SetName(\r
-            [in] LPCOLESTR pstrName);\r
-\r
-    HRESULT StepOutComplete();\r
-\r
-    HRESULT DebugOutput(\r
-            [in] LPCOLESTR pstr);\r
-\r
-    HRESULT StartDebugSession();\r
-\r
-    HRESULT HandleBreakPoint(\r
-            [in]  BREAKREASON br,\r
-            [out] BREAKRESUMEACTION *pbra);\r
-\r
-    HRESULT Close();\r
-\r
-    HRESULT GetBreakFlags(\r
-            [out] APPBREAKFLAGS *pabf,\r
-            [out] IRemoteDebugApplicationThread **pprdatSteppingThread);\r
-\r
-    HRESULT GetCurrentThread(\r
-            [out] IDebugApplicationThread **pat);\r
-\r
-    HRESULT CreateAsyncDebugOperation(\r
-            [in]  IDebugSyncOperation *psdo,\r
-            [out] IDebugAsyncOperation **ppado);\r
-\r
-    HRESULT AddStackFrameSniffer(\r
-            [in]  IDebugStackFrameSniffer *pdsfs,\r
-            [out] DWORD *pdwCookie);\r
-\r
-    HRESULT RemoveStackFrameSniffer(\r
-            [in]  DWORD dwCookie);\r
-\r
-    HRESULT QueryCurrentThreadIsDebuggerThread();\r
-\r
-    HRESULT SynchronousCallInDebuggerThread(\r
-            [in]  IDebugThreadCall32 *pptc,\r
-            [in]  DWORD dwParam1,\r
-            [in]  DWORD dwParam2,\r
-            [in]  DWORD dwParam3);\r
-\r
-    HRESULT CreateApplicationNode(\r
-            [out] IDebugApplicationNode **ppdanNew);\r
-\r
-    HRESULT FireDebuggerEvent(\r
-            [in]  REFGUID riid,\r
-            [in]  IUnknown *punk);\r
-\r
-    HRESULT HandleRuntimeError(\r
-            [in]  IActiveScriptErrorDebug *pErrorDebug,\r
-            [in]  IActiveScriptSite *pScriptSite,\r
-            [out] BREAKRESUMEACTION *pbra,\r
-            [out] ERRORRESUMEACTION *perra,\r
-            [out] BOOL *pfCallOnScriptError);\r
-\r
-    BOOL FCanJitDebug();\r
-\r
-    BOOL FIsAutoJitDebugEnabled();\r
-\r
-    HRESULT AddGlobalExpressionContextProvider(\r
-            [in]  IProvideExpressionContexts *pdsfs,\r
-            [out] DWORD *pdwCookie);\r
-\r
-    HRESULT RemoveGlobalExpressionContextProvider(\r
-            [in]  DWORD dwCookie);\r
-}\r
-\r
-/************************************************************\r
- *      interface IActiveScriptSiteDebug32\r
- */\r
-[\r
-    object,\r
-    uuid(51973c11-cb0c-11d0-b5c9-00a0244a0e7a),\r
-    pointer_default(unique),\r
-    local\r
-]\r
-interface IActiveScriptSiteDebug32 : IUnknown\r
-{\r
-    HRESULT GetDocumentContextFromPosition(\r
-            [in]  DWORD dwSourceContext,\r
-            [in]  ULONG uCharacterOffset,\r
-            [in]  ULONG uNumChars,\r
-            [out] IDebugDocumentContext **ppsc);\r
-\r
-    HRESULT GetApplication(\r
-            [out] IDebugApplication32 **ppda);\r
-\r
-    HRESULT GetRootApplicationNode(\r
-            [out] IDebugApplicationNode **ppdanRoot);\r
-\r
-    HRESULT OnScriptErrorDebug(\r
-            [in]  IActiveScriptErrorDebug *pErrorDebug,\r
-            [out] BOOL *pfEnterDebugger,\r
-            [out] BOOL *pfCallOnScriptErrorWhenContinuing);\r
-}\r
-\r
-cpp_quote("#ifndef DISABLE_ACTIVDBG_INTERFACE_WRAPPERS")\r
-cpp_quote("#ifdef _WIN64")\r
-\r
-cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug64")\r
-cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug64")\r
-\r
-cpp_quote("#define IDebugApplication IDebugApplication64")\r
-cpp_quote("#define IID_IDebugApplication IID_IDebugApplication64")\r
-\r
-cpp_quote("#else")\r
-\r
-cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug32")\r
-cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug32")\r
-\r
-cpp_quote("#define IDebugApplication IDebugApplication32")\r
-cpp_quote("#define IID_IDebugApplication IID_IDebugApplication32")\r
-\r
-cpp_quote("#endif")\r
-cpp_quote("#endif")\r
+/*
+ * Copyright 2008 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "ocidl.idl";
+import "activscp.idl";
+/* import "dbgprop.idl"; */
+
+interface IDebugDocumentContext;
+interface IRemoteDebugApplication;
+interface IEnumDebugCodeContexts;
+
+/* FIXME: */
+interface IEnumDebugStackFrames;
+interface IDebugStackFrame;
+interface IApplicationDebugger;
+interface IEnumRemoteDebugApplicationThreads;
+interface IDebugApplicationNode;
+interface IEnumDebugExpressionContexts;
+interface IDebugApplicationThread;
+interface IDebugSyncOperation;
+interface IDebugAsyncOperation;
+interface IDebugStackFrameSniffer;
+interface IDebugThreadCall32;
+interface IActiveScriptErrorDebug;
+interface IProvideExpressionContexts;
+
+typedef enum tagBREAKPOINT_STATE {
+    BREAKPOINT_DELETED,
+    BREAKPOINT_DISABLED,
+    BREAKPOINT_ENABLED
+} BREAKPOINT_STATE;
+
+typedef DWORD APPBREAKFLAGS;
+
+typedef enum tagBREAKREASON {
+    BREAKREASON_STEP,
+    BREAKREASON_BREAKPOINT,
+    BREAKREASON_DEBUGGER_BLOCK,
+    BREAKREASON_HOST_INITIATED,
+    BREAKREASON_LANGUAGE_INITIATED,
+    BREAKREASON_DEBUGGER_HALT,
+    BREAKREASON_ERROR,
+    BREAKREASON_JIT
+} BREAKREASON;
+
+typedef enum tagBREAKRESUME_ACTION {
+    BREAKRESUMEACTION_ABORT,
+    BREAKRESUMEACTION_CONTINUE,
+    BREAKRESUMEACTION_STEP_INTO,
+    BREAKRESUMEACTION_STEP_OVER,
+    BREAKRESUMEACTION_STEP_OUT,
+    BREAKRESUMEACTION_IGNORE
+} BREAKRESUMEACTION;
+
+typedef enum tagDOCUMENTNAMETYPE {
+    DOCUMENTNAMETYPE_APPNODE,
+    DOCUMENTNAMETYPE_TITLE,
+    DOCUMENTNAMETYPE_FILE_TAIL,
+    DOCUMENTNAMETYPE_URL
+} DOCUMENTNAMETYPE;
+
+typedef enum tagERRORRESUMEACTION {
+    ERRORRESUMEACTION_ReexecuteErrorStatement,
+    ERRORRESUMEACTION_AbortCallAndReturnErrorToCaller,
+    ERRORRESUMEACTION_SkipErrorStatement,
+} ERRORRESUMEACTION;
+
+typedef WORD SOURCE_TEXT_ATTR;
+
+#ifdef INTEROPLIB
+enum enum_SOURCE_TEXT_ATTR
+{
+    SOURCETEXT_ATTR_KEYWORD        = 0x01,
+    SOURCETEXT_ATTR_COMMENT        = 0x02,
+    SOURCETEXT_ATTR_NONSOURCE      = 0x04,
+    SOURCETEXT_ATTR_OPERATOR       = 0x08,
+    SOURCETEXT_ATTR_NUMBER         = 0x10,
+    SOURCETEXT_ATTR_STRING         = 0x20,
+    SOURCETEXT_ATTR_FUNCTION_START = 0x40
+};
+#endif
+
+const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_KEYWORD         = 0x01;
+const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_COMMENT         = 0x02;
+const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_NONSOURCE       = 0x04;
+const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_OPERATOR        = 0x08;
+const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_NUMBER          = 0x10;
+const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_STRING          = 0x20;
+const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_FUNCTION_START  = 0x40;
+
+/************************************************************
+ *      interface IActiveScriptDebug32
+ */
+[
+    object,
+    uuid(51973c10-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IActiveScriptDebug32 : IUnknown
+{
+    HRESULT GetScriptTextAttributes(
+            [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
+            [in] ULONG uNumCodeChars,
+            [in] LPCOLESTR pstrDelimiter,
+            [in] DWORD dwFlags,
+            [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
+
+    HRESULT GetScriptletTextAttributes(
+            [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
+            [in] ULONG uNumCodeChars,
+            [in] LPCOLESTR pstrDelimiter,
+            [in] DWORD dwFlags,
+            [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
+
+    HRESULT EnumCodeContextsOfPosition(
+            [in] DWORD dwSourceContext,
+            [in] ULONG uCharacterOffset,
+            [in] ULONG uNumChars,
+            [out] IEnumDebugCodeContexts **ppescc);
+}
+
+[
+    object,
+    uuid(bc437e23-f5b8-47f4-bb79-7d1ce5483b86),
+    pointer_default(unique)
+]
+interface IActiveScriptDebug64 : IUnknown
+{
+    HRESULT GetScriptTextAttributes(
+            [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
+            [in] ULONG uNumCodeChars,
+            [in] LPCOLESTR pstrDelimiter,
+            [in] DWORD dwFlags,
+            [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
+
+    HRESULT GetScriptletTextAttributes(
+            [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
+            [in] ULONG uNumCodeChars,
+            [in] LPCOLESTR pstrDelimiter,
+            [in] DWORD dwFlags,
+            [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
+
+    HRESULT EnumCodeContextsOfPosition(
+           [in] DWORDLONG dwSourceContext,
+           [in] ULONG uCharacterOffset,
+           [in] ULONG uNumChars,
+           [out] IEnumDebugCodeContexts **ppescc);
+}
+
+/************************************************************
+ *      interface IDebugDocumentInfo
+ */
+[
+    object,
+    uuid(51973c1f-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IDebugDocumentInfo : IUnknown
+{
+    HRESULT GetName(
+            [in]  DOCUMENTNAMETYPE dnt,
+            [out] BSTR *pbstrName);
+
+    HRESULT GetDocumentClassId(
+            [out] CLSID *pclsidDocument);
+}
+
+/************************************************************
+ *      interface IDebugDocument
+ */
+[
+    object,
+    uuid(51973c21-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IDebugDocument : IDebugDocumentInfo
+{
+}
+
+/************************************************************
+ *      interface IDebugCodeContext
+ */
+[
+    object,
+    uuid(51973c13-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IDebugCodeContext : IUnknown
+{
+    HRESULT GetDocumentContext(
+            [out] IDebugDocumentContext **ppsc);
+
+    HRESULT SetBreakPoint(
+            [in]  BREAKPOINT_STATE bps);
+}
+
+/************************************************************
+ *      interface IEnumDebugCodeContexts
+ */
+[
+    object,
+    uuid(51973c1d-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IEnumDebugCodeContexts : IUnknown
+{
+    HRESULT Next(
+            [in]  ULONG celt,
+            [out] IDebugCodeContext **pscc,
+            [out] ULONG *pceltFetched);
+
+    HRESULT Skip(
+            [in]  ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+            [out] IEnumDebugCodeContexts **ppescc);
+}
+
+/************************************************************
+ *      interface IDebugDocumentContext
+ */
+[
+    object,
+    uuid(51973c28-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IDebugDocumentContext : IUnknown
+{
+    HRESULT GetDocument(
+            [out] IDebugDocument **ppsd);
+
+    HRESULT EnumCodeContexts(
+            [out] IEnumDebugCodeContexts **ppescc);
+}
+
+/************************************************************
+ *      interface IRemoteDebugApplicationThread
+ */
+[
+    object,
+    uuid(51973c37-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IRemoteDebugApplicationThread : IUnknown
+{
+    HRESULT GetSystemThreadId(
+            [out] DWORD *dwThreadId);
+
+    HRESULT GetApplication(
+            [out] IRemoteDebugApplication **pprda);
+
+    HRESULT EnumStackFrames(
+            [out] IEnumDebugStackFrames **ppedsf);
+
+    HRESULT GetDescription(
+            [out] BSTR *pbstrDescription,
+            [out] BSTR *pbstrState);
+
+    HRESULT SetNextStatement(
+            [in]  IDebugStackFrame *pStackFrame,
+            [in]  IDebugCodeContext *pCodeContext);
+
+    HRESULT GetState(
+            [out] DWORD *pState);
+
+    HRESULT Suspend(
+            [out] DWORD *pdwCount);
+
+    HRESULT Resume(
+            [out] DWORD *pdwCount);
+
+    HRESULT GetSuspendCount(
+            [out] DWORD *pdwCount);
+}
+
+/************************************************************
+ *      interface IRemoteDebugApplication
+ */
+[
+    object,
+    uuid(51973c30-cb0c-11d0-b5c9-00a0244Aae7a),
+    pointer_default(unique)
+]
+interface IRemoteDebugApplication : IUnknown
+{
+    HRESULT ResumeFromBreakPoint(
+            [in]  IRemoteDebugApplicationThread *prptFocus,
+            [in]  BREAKRESUMEACTION bra,
+            [in]  ERRORRESUMEACTION era);
+
+    HRESULT CauseBreak();
+
+    HRESULT ConnectDebugger(
+            [in]  IApplicationDebugger *pad);
+
+    HRESULT DisconnectDebugger();
+
+    HRESULT GetDebugger(
+            [out] IApplicationDebugger **pad);
+
+    HRESULT CreateInstanceAtApplication(
+            [in]  REFCLSID rclsid,
+            [in]  IUnknown *pUnkOuter,
+            [in]  DWORD dwClsContext,
+            [in]  REFIID riid,
+            [out, iid_is(riid)] IUnknown **ppvObject);
+
+    HRESULT QueryAlive();
+
+    HRESULT EnumThreads(
+            [out] IEnumRemoteDebugApplicationThreads **pperdat);
+
+    HRESULT GetName(
+            [out] BSTR *pbstrName);
+
+    HRESULT GetRootNode(
+            [out] IDebugApplicationNode **ppdanRoot);
+
+    HRESULT EnumGlobalExpressionContexts(
+            [out] IEnumDebugExpressionContexts **ppedec);
+}
+
+/************************************************************
+ *      interface IDebugApplication32
+ */
+[
+    object,
+    uuid(51973c32-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique),
+    local
+]
+interface IDebugApplication32 : IRemoteDebugApplication
+{
+    HRESULT SetName(
+            [in] LPCOLESTR pstrName);
+
+    HRESULT StepOutComplete();
+
+    HRESULT DebugOutput(
+            [in] LPCOLESTR pstr);
+
+    HRESULT StartDebugSession();
+
+    HRESULT HandleBreakPoint(
+            [in]  BREAKREASON br,
+            [out] BREAKRESUMEACTION *pbra);
+
+    HRESULT Close();
+
+    HRESULT GetBreakFlags(
+            [out] APPBREAKFLAGS *pabf,
+            [out] IRemoteDebugApplicationThread **pprdatSteppingThread);
+
+    HRESULT GetCurrentThread(
+            [out] IDebugApplicationThread **pat);
+
+    HRESULT CreateAsyncDebugOperation(
+            [in]  IDebugSyncOperation *psdo,
+            [out] IDebugAsyncOperation **ppado);
+
+    HRESULT AddStackFrameSniffer(
+            [in]  IDebugStackFrameSniffer *pdsfs,
+            [out] DWORD *pdwCookie);
+
+    HRESULT RemoveStackFrameSniffer(
+            [in]  DWORD dwCookie);
+
+    HRESULT QueryCurrentThreadIsDebuggerThread();
+
+    HRESULT SynchronousCallInDebuggerThread(
+            [in]  IDebugThreadCall32 *pptc,
+            [in]  DWORD dwParam1,
+            [in]  DWORD dwParam2,
+            [in]  DWORD dwParam3);
+
+    HRESULT CreateApplicationNode(
+            [out] IDebugApplicationNode **ppdanNew);
+
+    HRESULT FireDebuggerEvent(
+            [in]  REFGUID riid,
+            [in]  IUnknown *punk);
+
+    HRESULT HandleRuntimeError(
+            [in]  IActiveScriptErrorDebug *pErrorDebug,
+            [in]  IActiveScriptSite *pScriptSite,
+            [out] BREAKRESUMEACTION *pbra,
+            [out] ERRORRESUMEACTION *perra,
+            [out] BOOL *pfCallOnScriptError);
+
+    BOOL FCanJitDebug();
+
+    BOOL FIsAutoJitDebugEnabled();
+
+    HRESULT AddGlobalExpressionContextProvider(
+            [in]  IProvideExpressionContexts *pdsfs,
+            [out] DWORD *pdwCookie);
+
+    HRESULT RemoveGlobalExpressionContextProvider(
+            [in]  DWORD dwCookie);
+}
+
+/************************************************************
+ *      interface IDebugApplication64
+ */
+[
+    object,
+    uuid(4dedc754-04c7-4f10-9e60-16a390fe6e62),
+    pointer_default(unique),
+    local
+]
+interface IDebugApplication64 : IRemoteDebugApplication
+{
+    HRESULT SetName(
+            [in] LPCOLESTR pstrName);
+
+    HRESULT StepOutComplete();
+
+    HRESULT DebugOutput(
+            [in] LPCOLESTR pstr);
+
+    HRESULT StartDebugSession();
+
+    HRESULT HandleBreakPoint(
+            [in]  BREAKREASON br,
+            [out] BREAKRESUMEACTION *pbra);
+
+    HRESULT Close();
+
+    HRESULT GetBreakFlags(
+            [out] APPBREAKFLAGS *pabf,
+            [out] IRemoteDebugApplicationThread **pprdatSteppingThread);
+
+    HRESULT GetCurrentThread(
+            [out] IDebugApplicationThread **pat);
+
+    HRESULT CreateAsyncDebugOperation(
+            [in]  IDebugSyncOperation *psdo,
+            [out] IDebugAsyncOperation **ppado);
+
+    HRESULT AddStackFrameSniffer(
+            [in]  IDebugStackFrameSniffer *pdsfs,
+            [out] DWORD *pdwCookie);
+
+    HRESULT RemoveStackFrameSniffer(
+            [in]  DWORD dwCookie);
+
+    HRESULT QueryCurrentThreadIsDebuggerThread();
+
+    HRESULT SynchronousCallInDebuggerThread(
+            [in]  IDebugThreadCall32 *pptc,
+            [in]  DWORDLONG dwParam1,
+            [in]  DWORDLONG dwParam2,
+            [in]  DWORDLONG dwParam3);
+
+    HRESULT CreateApplicationNode(
+            [out] IDebugApplicationNode **ppdanNew);
+
+    HRESULT FireDebuggerEvent(
+            [in]  REFGUID riid,
+            [in]  IUnknown *punk);
+
+    HRESULT HandleRuntimeError(
+            [in]  IActiveScriptErrorDebug *pErrorDebug,
+            [in]  IActiveScriptSite *pScriptSite,
+            [out] BREAKRESUMEACTION *pbra,
+            [out] ERRORRESUMEACTION *perra,
+            [out] BOOL *pfCallOnScriptError);
+
+    BOOL FCanJitDebug();
+
+    BOOL FIsAutoJitDebugEnabled();
+
+    HRESULT AddGlobalExpressionContextProvider(
+            [in]  IProvideExpressionContexts *pdsfs,
+            [out] DWORDLONG *pdwCookie);
+
+    HRESULT RemoveGlobalExpressionContextProvider(
+            [in]  DWORDLONG dwCookie);
+}
+
+/************************************************************
+ *      interface IActiveScriptSiteDebug32
+ */
+[
+    object,
+    uuid(51973c11-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique),
+    local
+]
+interface IActiveScriptSiteDebug32 : IUnknown
+{
+    HRESULT GetDocumentContextFromPosition(
+            [in]  DWORD dwSourceContext,
+            [in]  ULONG uCharacterOffset,
+            [in]  ULONG uNumChars,
+            [out] IDebugDocumentContext **ppsc);
+
+    HRESULT GetApplication(
+            [out] IDebugApplication32 **ppda);
+
+    HRESULT GetRootApplicationNode(
+            [out] IDebugApplicationNode **ppdanRoot);
+
+    HRESULT OnScriptErrorDebug(
+            [in]  IActiveScriptErrorDebug *pErrorDebug,
+            [out] BOOL *pfEnterDebugger,
+            [out] BOOL *pfCallOnScriptErrorWhenContinuing);
+}
+
+/************************************************************
+ *      interface IActiveScriptSiteDebug64
+ */
+[
+    object,
+    uuid(d6b96b0a-7463-402c-92ac-89984226942f),
+    pointer_default(unique),
+    local
+]
+interface IActiveScriptSiteDebug64 : IUnknown
+{
+    HRESULT GetDocumentContextFromPosition(
+            [in]  DWORDLONG dwSourceContext,
+            [in]  ULONG uCharacterOffset,
+            [in]  ULONG uNumChars,
+            [out] IDebugDocumentContext **ppsc);
+
+    HRESULT GetApplication(
+            [out] IDebugApplication64 **ppda);
+
+    HRESULT GetRootApplicationNode(
+            [out] IDebugApplicationNode **ppdanRoot);
+
+    HRESULT OnScriptErrorDebug(
+            [in]  IActiveScriptErrorDebug *pErrorDebug,
+            [out] BOOL *pfEnterDebugger,
+            [out] BOOL *pfCallOnScriptErrorWhenContinuing);
+}
+
+[
+    object,
+    uuid(51973C17-CB0C-11d0-B5C9-00A0244A0E7A),
+    pointer_default(unique)
+]
+interface IDebugStackFrame : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973C1e-CB0C-11d0-B5C9-00A0244A0E7A),
+    pointer_default(unique)
+]
+interface IEnumDebugStackFrames : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973C2a-CB0C-11d0-B5C9-00A0244A0E7A),
+    pointer_default(unique)
+]
+interface IApplicationDebugger : IUnknown
+{
+    /* FIXME: fill me! */
+};
+
+[
+    object,
+    uuid(51973C3c-CB0C-11d0-B5C9-00A0244A0E7A),
+    pointer_default(unique)
+]
+interface IEnumRemoteDebugApplicationThreads : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973C34-CB0C-11d0-B5C9-00A0244A0E7A),
+    pointer_default(unique)
+]
+interface IDebugApplicationNode : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973C40-CB0C-11d0-B5C9-00A0244A0E7A),
+    pointer_default(unique)
+]
+interface IEnumDebugExpressionContexts : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973c38-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique),
+    local
+]
+interface IDebugApplicationThread : IRemoteDebugApplicationThread
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973C1a-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique),
+    local
+]
+interface IDebugSyncOperation : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973c1b-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique),
+    local
+]
+interface IDebugAsyncOperation : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973c18-cb0c-11d0-b5c9-00a0244a0e7a),
+    pointer_default(unique)
+]
+interface IDebugStackFrameSniffer : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973C36-CB0C-11d0-B5C9-00A0244A0E7A),
+    pointer_default(unique),
+    local
+]
+interface IDebugThreadCall32 : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973C12-CB0C-11d0-B5C9-00A0244A0E7A),
+    pointer_default(unique)
+]
+interface IActiveScriptErrorDebug : IActiveScriptError
+{
+    /* FIXME: fill me! */
+}
+
+[
+    object,
+    uuid(51973C41-CB0C-11d0-B5C9-00A0244A0E7A),
+    pointer_default(unique)
+]
+interface IProvideExpressionContexts : IUnknown
+{
+    /* FIXME: fill me! */
+}
+
+cpp_quote("#ifndef DISABLE_ACTIVDBG_INTERFACE_WRAPPERS")
+cpp_quote("#ifdef _WIN64")
+
+cpp_quote("#define IActiveScriptDebug IActiveScriptDebug64")
+cpp_quote("#define IID_IActiveScriptDebug IID_IActiveScriptDebug64")
+
+cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug64")
+cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug64")
+
+cpp_quote("#define IDebugApplication IDebugApplication64")
+cpp_quote("#define IID_IDebugApplication IID_IDebugApplication64")
+
+cpp_quote("#else")
+
+cpp_quote("#define IActiveScriptDebug IActiveScriptDebug32")
+cpp_quote("#define IID_IActiveScriptDebug IID_IActiveScriptDebug32")
+
+cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug32")
+cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug32")
+
+cpp_quote("#define IDebugApplication IDebugApplication32")
+cpp_quote("#define IID_IDebugApplication IID_IDebugApplication32")
+
+cpp_quote("#endif")
+cpp_quote("#endif")