summaryrefslogtreecommitdiff
path: root/src/inc/xcordebug.idl
blob: 646c2069eab207c13f7fe9d426f53bfc829491b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
/*****************************************************************************
 **                                                                         **
 ** XCordebug.idl - Experimental (undocumented) Debugging interfaces.       **
 **                                                                         **
 *****************************************************************************/


/* ------------------------------------------------------------------------- *
 * Imported types
 * ------------------------------------------------------------------------- */

import "cordebug.idl";




// @dbgtodo : proper API docs here.  
// - include failure semantics of Filter.  What does failure mean?
// 
/* Comments to add to ICorDebugDataTarget docs:
 * Whenever the target process changes, the debugger client must
 * call ICorDebugProcess4::ProcessStateChanged before issuing any other 
 * ICorDebug API calls.
*/
[
    object,
    local,
    uuid(E930C679-78AF-4953-8AB7-B0AABF0F9F80),
    pointer_default(unique)
]
interface ICorDebugProcess4 : IUnknown
{
    /*
     * Process native debug events. 
     */
    HRESULT Filter(
        [in, length_is(countBytes), size_is(countBytes)]  const BYTE pRecord[],
        [in] DWORD countBytes,
        [in] CorDebugRecordFormat format,
        [in] DWORD dwFlags, 
        [in] DWORD dwThreadId, 
        [in] ICorDebugManagedCallback * pCallback,
        [in, out] CORDB_CONTINUE_STATUS * pContinueStatus);

    /*
     * Debugger calls this to notify ICorDebug that the process is running.
     * 
     * Notes:
     *   ProcessStateChanged(PROCESS_RUNNING) has similar semantics to ICorDebugProcess::Continue();
     */
    HRESULT ProcessStateChanged([in] CorDebugStateChange eChange);

};

#ifdef FEATURE_LEGACYNETCF_DBG_HOST_CONTROL

/* A private API for use on Windows phone to invoke CLR hosting
 * callbacks on IHostNetCFDebugControlManager. This allows the
 * host's UI thread to be suspended and resumed on demand.
 *
 * This API should not be used for anything other than the 
 * Windows Phone scenario, it should never be made public,
 * and as soon as we support mixed-mode debugging it should
 * be retired by removing the interface and failing any
 * QueryInterface call for it.
*/
[
    object,
    local,
    uuid(34B27FB0-A318-450D-A0DD-11B70B21F41D),
    pointer_default(unique)
]
interface ICorDebugLegacyNetCFHostCallbackInvoker_PrivateWindowsPhoneOnly : IUnknown
{
    // Invokes IHostNetCFDebugControlManager::NotifyPause() on the debuggee's host
    HRESULT InvokePauseCallback();

    // Invokes IHostNetCFDebugControlManager::NotifyResume() on the debuggee's host
    HRESULT InvokeResumeCallback();
};

#endif