ntdll: Use a monotonic time counter to implement NtQueryPerformanceCounter.
[wine] / include / activdbg.idl
1 /*
2  * Copyright 2008 Jacek Caban for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 import "ocidl.idl";
20 import "activscp.idl";
21 /* import "dbgprop.idl"; */
22
23 interface IDebugDocumentContext;
24 interface IRemoteDebugApplication;
25 interface IEnumDebugCodeContexts;
26
27 /* FIXME: */
28 interface IEnumDebugStackFrames;
29 interface IDebugStackFrame;
30 interface IApplicationDebugger;
31 interface IEnumRemoteDebugApplicationThreads;
32 interface IDebugApplicationNode;
33 interface IEnumDebugExpressionContexts;
34 interface IDebugApplicationThread;
35 interface IDebugSyncOperation;
36 interface IDebugAsyncOperation;
37 interface IDebugStackFrameSniffer;
38 interface IDebugThreadCall32;
39 interface IActiveScriptErrorDebug;
40 interface IProvideExpressionContexts;
41
42 typedef enum tagBREAKPOINT_STATE {
43     BREAKPOINT_DELETED,
44     BREAKPOINT_DISABLED,
45     BREAKPOINT_ENABLED
46 } BREAKPOINT_STATE;
47
48 typedef DWORD APPBREAKFLAGS;
49
50 typedef enum tagBREAKREASON {
51     BREAKREASON_STEP,
52     BREAKREASON_BREAKPOINT,
53     BREAKREASON_DEBUGGER_BLOCK,
54     BREAKREASON_HOST_INITIATED,
55     BREAKREASON_LANGUAGE_INITIATED,
56     BREAKREASON_DEBUGGER_HALT,
57     BREAKREASON_ERROR,
58     BREAKREASON_JIT
59 } BREAKREASON;
60
61 typedef enum tagBREAKRESUME_ACTION {
62     BREAKRESUMEACTION_ABORT,
63     BREAKRESUMEACTION_CONTINUE,
64     BREAKRESUMEACTION_STEP_INTO,
65     BREAKRESUMEACTION_STEP_OVER,
66     BREAKRESUMEACTION_STEP_OUT,
67     BREAKRESUMEACTION_IGNORE
68 } BREAKRESUMEACTION;
69
70 typedef enum tagDOCUMENTNAMETYPE {
71     DOCUMENTNAMETYPE_APPNODE,
72     DOCUMENTNAMETYPE_TITLE,
73     DOCUMENTNAMETYPE_FILE_TAIL,
74     DOCUMENTNAMETYPE_URL
75 } DOCUMENTNAMETYPE;
76
77 typedef enum tagERRORRESUMEACTION {
78     ERRORRESUMEACTION_ReexecuteErrorStatement,
79     ERRORRESUMEACTION_AbortCallAndReturnErrorToCaller,
80     ERRORRESUMEACTION_SkipErrorStatement,
81 } ERRORRESUMEACTION;
82
83 typedef WORD SOURCE_TEXT_ATTR;
84
85 #ifdef INTEROPLIB
86 enum enum_SOURCE_TEXT_ATTR
87 {
88     SOURCETEXT_ATTR_KEYWORD        = 0x01,
89     SOURCETEXT_ATTR_COMMENT        = 0x02,
90     SOURCETEXT_ATTR_NONSOURCE      = 0x04,
91     SOURCETEXT_ATTR_OPERATOR       = 0x08,
92     SOURCETEXT_ATTR_NUMBER         = 0x10,
93     SOURCETEXT_ATTR_STRING         = 0x20,
94     SOURCETEXT_ATTR_FUNCTION_START = 0x40
95 };
96 #endif
97
98 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_KEYWORD         = 0x01;
99 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_COMMENT         = 0x02;
100 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_NONSOURCE       = 0x04;
101 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_OPERATOR        = 0x08;
102 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_NUMBER          = 0x10;
103 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_STRING          = 0x20;
104 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_FUNCTION_START  = 0x40;
105
106 /************************************************************
107  *      interface IActiveScriptDebug32
108  */
109 [
110     object,
111     uuid(51973c10-cb0c-11d0-b5c9-00a0244a0e7a),
112     pointer_default(unique)
113 ]
114 interface IActiveScriptDebug32 : IUnknown
115 {
116     HRESULT GetScriptTextAttributes(
117             [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
118             [in] ULONG uNumCodeChars,
119             [in] LPCOLESTR pstrDelimiter,
120             [in] DWORD dwFlags,
121             [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
122
123     HRESULT GetScriptletTextAttributes(
124             [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
125             [in] ULONG uNumCodeChars,
126             [in] LPCOLESTR pstrDelimiter,
127             [in] DWORD dwFlags,
128             [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
129
130     HRESULT EnumCodeContextsOfPosition(
131             [in] DWORD dwSourceContext,
132             [in] ULONG uCharacterOffset,
133             [in] ULONG uNumChars,
134             [out] IEnumDebugCodeContexts **ppescc);
135 }
136
137 [
138     object,
139     uuid(bc437e23-f5b8-47f4-bb79-7d1ce5483b86),
140     pointer_default(unique)
141 ]
142 interface IActiveScriptDebug64 : IUnknown
143 {
144     HRESULT GetScriptTextAttributes(
145             [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
146             [in] ULONG uNumCodeChars,
147             [in] LPCOLESTR pstrDelimiter,
148             [in] DWORD dwFlags,
149             [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
150
151     HRESULT GetScriptletTextAttributes(
152             [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
153             [in] ULONG uNumCodeChars,
154             [in] LPCOLESTR pstrDelimiter,
155             [in] DWORD dwFlags,
156             [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
157
158     HRESULT EnumCodeContextsOfPosition(
159            [in] DWORDLONG dwSourceContext,
160            [in] ULONG uCharacterOffset,
161            [in] ULONG uNumChars,
162            [out] IEnumDebugCodeContexts **ppescc);
163 }
164
165 /************************************************************
166  *      interface IDebugDocumentInfo
167  */
168 [
169     object,
170     uuid(51973c1f-cb0c-11d0-b5c9-00a0244a0e7a),
171     pointer_default(unique)
172 ]
173 interface IDebugDocumentInfo : IUnknown
174 {
175     HRESULT GetName(
176             [in]  DOCUMENTNAMETYPE dnt,
177             [out] BSTR *pbstrName);
178
179     HRESULT GetDocumentClassId(
180             [out] CLSID *pclsidDocument);
181 }
182
183 /************************************************************
184  *      interface IDebugDocument
185  */
186 [
187     object,
188     uuid(51973c21-cb0c-11d0-b5c9-00a0244a0e7a),
189     pointer_default(unique)
190 ]
191 interface IDebugDocument : IDebugDocumentInfo
192 {
193 }
194
195 /************************************************************
196  *      interface IDebugCodeContext
197  */
198 [
199     object,
200     uuid(51973c13-cb0c-11d0-b5c9-00a0244a0e7a),
201     pointer_default(unique)
202 ]
203 interface IDebugCodeContext : IUnknown
204 {
205     HRESULT GetDocumentContext(
206             [out] IDebugDocumentContext **ppsc);
207
208     HRESULT SetBreakPoint(
209             [in]  BREAKPOINT_STATE bps);
210 }
211
212 /************************************************************
213  *      interface IEnumDebugCodeContexts
214  */
215 [
216     object,
217     uuid(51973c1d-cb0c-11d0-b5c9-00a0244a0e7a),
218     pointer_default(unique)
219 ]
220 interface IEnumDebugCodeContexts : IUnknown
221 {
222     HRESULT Next(
223             [in]  ULONG celt,
224             [out] IDebugCodeContext **pscc,
225             [out] ULONG *pceltFetched);
226
227     HRESULT Skip(
228             [in]  ULONG celt);
229
230     HRESULT Reset();
231
232     HRESULT Clone(
233             [out] IEnumDebugCodeContexts **ppescc);
234 }
235
236 /************************************************************
237  *      interface IDebugDocumentContext
238  */
239 [
240     object,
241     uuid(51973c28-cb0c-11d0-b5c9-00a0244a0e7a),
242     pointer_default(unique)
243 ]
244 interface IDebugDocumentContext : IUnknown
245 {
246     HRESULT GetDocument(
247             [out] IDebugDocument **ppsd);
248
249     HRESULT EnumCodeContexts(
250             [out] IEnumDebugCodeContexts **ppescc);
251 }
252
253 /************************************************************
254  *      interface IRemoteDebugApplicationThread
255  */
256 [
257     object,
258     uuid(51973c37-cb0c-11d0-b5c9-00a0244a0e7a),
259     pointer_default(unique)
260 ]
261 interface IRemoteDebugApplicationThread : IUnknown
262 {
263     HRESULT GetSystemThreadId(
264             [out] DWORD *dwThreadId);
265
266     HRESULT GetApplication(
267             [out] IRemoteDebugApplication **pprda);
268
269     HRESULT EnumStackFrames(
270             [out] IEnumDebugStackFrames **ppedsf);
271
272     HRESULT GetDescription(
273             [out] BSTR *pbstrDescription,
274             [out] BSTR *pbstrState);
275
276     HRESULT SetNextStatement(
277             [in]  IDebugStackFrame *pStackFrame,
278             [in]  IDebugCodeContext *pCodeContext);
279
280     HRESULT GetState(
281             [out] DWORD *pState);
282
283     HRESULT Suspend(
284             [out] DWORD *pdwCount);
285
286     HRESULT Resume(
287             [out] DWORD *pdwCount);
288
289     HRESULT GetSuspendCount(
290             [out] DWORD *pdwCount);
291 }
292
293 /************************************************************
294  *      interface IRemoteDebugApplication
295  */
296 [
297     object,
298     uuid(51973c30-cb0c-11d0-b5c9-00a0244Aae7a),
299     pointer_default(unique)
300 ]
301 interface IRemoteDebugApplication : IUnknown
302 {
303     HRESULT ResumeFromBreakPoint(
304             [in]  IRemoteDebugApplicationThread *prptFocus,
305             [in]  BREAKRESUMEACTION bra,
306             [in]  ERRORRESUMEACTION era);
307
308     HRESULT CauseBreak();
309
310     HRESULT ConnectDebugger(
311             [in]  IApplicationDebugger *pad);
312
313     HRESULT DisconnectDebugger();
314
315     HRESULT GetDebugger(
316             [out] IApplicationDebugger **pad);
317
318     HRESULT CreateInstanceAtApplication(
319             [in]  REFCLSID rclsid,
320             [in]  IUnknown *pUnkOuter,
321             [in]  DWORD dwClsContext,
322             [in]  REFIID riid,
323             [out, iid_is(riid)] IUnknown **ppvObject);
324
325     HRESULT QueryAlive();
326
327     HRESULT EnumThreads(
328             [out] IEnumRemoteDebugApplicationThreads **pperdat);
329
330     HRESULT GetName(
331             [out] BSTR *pbstrName);
332
333     HRESULT GetRootNode(
334             [out] IDebugApplicationNode **ppdanRoot);
335
336     HRESULT EnumGlobalExpressionContexts(
337             [out] IEnumDebugExpressionContexts **ppedec);
338 }
339
340 /************************************************************
341  *      interface IDebugApplication32
342  */
343 [
344     object,
345     uuid(51973c32-cb0c-11d0-b5c9-00a0244a0e7a),
346     pointer_default(unique),
347     local
348 ]
349 interface IDebugApplication32 : IRemoteDebugApplication
350 {
351     HRESULT SetName(
352             [in] LPCOLESTR pstrName);
353
354     HRESULT StepOutComplete();
355
356     HRESULT DebugOutput(
357             [in] LPCOLESTR pstr);
358
359     HRESULT StartDebugSession();
360
361     HRESULT HandleBreakPoint(
362             [in]  BREAKREASON br,
363             [out] BREAKRESUMEACTION *pbra);
364
365     HRESULT Close();
366
367     HRESULT GetBreakFlags(
368             [out] APPBREAKFLAGS *pabf,
369             [out] IRemoteDebugApplicationThread **pprdatSteppingThread);
370
371     cpp_quote("#undef GetCurrentThread")
372     HRESULT GetCurrentThread(
373             [out] IDebugApplicationThread **pat);
374
375     HRESULT CreateAsyncDebugOperation(
376             [in]  IDebugSyncOperation *psdo,
377             [out] IDebugAsyncOperation **ppado);
378
379     HRESULT AddStackFrameSniffer(
380             [in]  IDebugStackFrameSniffer *pdsfs,
381             [out] DWORD *pdwCookie);
382
383     HRESULT RemoveStackFrameSniffer(
384             [in]  DWORD dwCookie);
385
386     HRESULT QueryCurrentThreadIsDebuggerThread();
387
388     HRESULT SynchronousCallInDebuggerThread(
389             [in]  IDebugThreadCall32 *pptc,
390             [in]  DWORD dwParam1,
391             [in]  DWORD dwParam2,
392             [in]  DWORD dwParam3);
393
394     HRESULT CreateApplicationNode(
395             [out] IDebugApplicationNode **ppdanNew);
396
397     HRESULT FireDebuggerEvent(
398             [in]  REFGUID riid,
399             [in]  IUnknown *punk);
400
401     HRESULT HandleRuntimeError(
402             [in]  IActiveScriptErrorDebug *pErrorDebug,
403             [in]  IActiveScriptSite *pScriptSite,
404             [out] BREAKRESUMEACTION *pbra,
405             [out] ERRORRESUMEACTION *perra,
406             [out] BOOL *pfCallOnScriptError);
407
408     BOOL FCanJitDebug();
409
410     BOOL FIsAutoJitDebugEnabled();
411
412     HRESULT AddGlobalExpressionContextProvider(
413             [in]  IProvideExpressionContexts *pdsfs,
414             [out] DWORD *pdwCookie);
415
416     HRESULT RemoveGlobalExpressionContextProvider(
417             [in]  DWORD dwCookie);
418 }
419
420 /************************************************************
421  *      interface IDebugApplication64
422  */
423 [
424     object,
425     uuid(4dedc754-04c7-4f10-9e60-16a390fe6e62),
426     pointer_default(unique),
427     local
428 ]
429 interface IDebugApplication64 : IRemoteDebugApplication
430 {
431     HRESULT SetName(
432             [in] LPCOLESTR pstrName);
433
434     HRESULT StepOutComplete();
435
436     HRESULT DebugOutput(
437             [in] LPCOLESTR pstr);
438
439     HRESULT StartDebugSession();
440
441     HRESULT HandleBreakPoint(
442             [in]  BREAKREASON br,
443             [out] BREAKRESUMEACTION *pbra);
444
445     HRESULT Close();
446
447     HRESULT GetBreakFlags(
448             [out] APPBREAKFLAGS *pabf,
449             [out] IRemoteDebugApplicationThread **pprdatSteppingThread);
450
451     HRESULT GetCurrentThread(
452             [out] IDebugApplicationThread **pat);
453
454     HRESULT CreateAsyncDebugOperation(
455             [in]  IDebugSyncOperation *psdo,
456             [out] IDebugAsyncOperation **ppado);
457
458     HRESULT AddStackFrameSniffer(
459             [in]  IDebugStackFrameSniffer *pdsfs,
460             [out] DWORD *pdwCookie);
461
462     HRESULT RemoveStackFrameSniffer(
463             [in]  DWORD dwCookie);
464
465     HRESULT QueryCurrentThreadIsDebuggerThread();
466
467     HRESULT SynchronousCallInDebuggerThread(
468             [in]  IDebugThreadCall32 *pptc,
469             [in]  DWORDLONG dwParam1,
470             [in]  DWORDLONG dwParam2,
471             [in]  DWORDLONG dwParam3);
472
473     HRESULT CreateApplicationNode(
474             [out] IDebugApplicationNode **ppdanNew);
475
476     HRESULT FireDebuggerEvent(
477             [in]  REFGUID riid,
478             [in]  IUnknown *punk);
479
480     HRESULT HandleRuntimeError(
481             [in]  IActiveScriptErrorDebug *pErrorDebug,
482             [in]  IActiveScriptSite *pScriptSite,
483             [out] BREAKRESUMEACTION *pbra,
484             [out] ERRORRESUMEACTION *perra,
485             [out] BOOL *pfCallOnScriptError);
486
487     BOOL FCanJitDebug();
488
489     BOOL FIsAutoJitDebugEnabled();
490
491     HRESULT AddGlobalExpressionContextProvider(
492             [in]  IProvideExpressionContexts *pdsfs,
493             [out] DWORDLONG *pdwCookie);
494
495     HRESULT RemoveGlobalExpressionContextProvider(
496             [in]  DWORDLONG dwCookie);
497 }
498
499 /************************************************************
500  *      interface IActiveScriptSiteDebug32
501  */
502 [
503     object,
504     uuid(51973c11-cb0c-11d0-b5c9-00a0244a0e7a),
505     pointer_default(unique),
506     local
507 ]
508 interface IActiveScriptSiteDebug32 : IUnknown
509 {
510     HRESULT GetDocumentContextFromPosition(
511             [in]  DWORD dwSourceContext,
512             [in]  ULONG uCharacterOffset,
513             [in]  ULONG uNumChars,
514             [out] IDebugDocumentContext **ppsc);
515
516     HRESULT GetApplication(
517             [out] IDebugApplication32 **ppda);
518
519     HRESULT GetRootApplicationNode(
520             [out] IDebugApplicationNode **ppdanRoot);
521
522     HRESULT OnScriptErrorDebug(
523             [in]  IActiveScriptErrorDebug *pErrorDebug,
524             [out] BOOL *pfEnterDebugger,
525             [out] BOOL *pfCallOnScriptErrorWhenContinuing);
526 }
527
528 /************************************************************
529  *      interface IActiveScriptSiteDebug64
530  */
531 [
532     object,
533     uuid(d6b96b0a-7463-402c-92ac-89984226942f),
534     pointer_default(unique),
535     local
536 ]
537 interface IActiveScriptSiteDebug64 : IUnknown
538 {
539     HRESULT GetDocumentContextFromPosition(
540             [in]  DWORDLONG dwSourceContext,
541             [in]  ULONG uCharacterOffset,
542             [in]  ULONG uNumChars,
543             [out] IDebugDocumentContext **ppsc);
544
545     HRESULT GetApplication(
546             [out] IDebugApplication64 **ppda);
547
548     HRESULT GetRootApplicationNode(
549             [out] IDebugApplicationNode **ppdanRoot);
550
551     HRESULT OnScriptErrorDebug(
552             [in]  IActiveScriptErrorDebug *pErrorDebug,
553             [out] BOOL *pfEnterDebugger,
554             [out] BOOL *pfCallOnScriptErrorWhenContinuing);
555 }
556
557 cpp_quote("#ifndef DISABLE_ACTIVDBG_INTERFACE_WRAPPERS")
558 cpp_quote("#ifdef _WIN64")
559
560 cpp_quote("#define IActiveScriptDebug IActiveScriptDebug64")
561 cpp_quote("#define IID_IActiveScriptDebug IID_IActiveScriptDebug64")
562
563 cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug64")
564 cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug64")
565
566 cpp_quote("#define IDebugApplication IDebugApplication64")
567 cpp_quote("#define IID_IDebugApplication IID_IDebugApplication64")
568
569 cpp_quote("#else")
570
571 cpp_quote("#define IActiveScriptDebug IActiveScriptDebug32")
572 cpp_quote("#define IID_IActiveScriptDebug IID_IActiveScriptDebug32")
573
574 cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug32")
575 cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug32")
576
577 cpp_quote("#define IDebugApplication IDebugApplication32")
578 cpp_quote("#define IID_IDebugApplication IID_IDebugApplication32")
579
580 cpp_quote("#endif")
581 cpp_quote("#endif")