// msdbg174.idl
/********************************************************
* *
* Copyright (C) Microsoft. All rights reserved. *
* *
*********************************************************/
cpp_quote("/********************************************************")
cpp_quote("* *")
cpp_quote("* Copyright (C) Microsoft. All rights reserved. *")
cpp_quote("* *")
cpp_quote("*********************************************************/")
import "oaidl.idl";
import "ocidl.idl";
#ifndef DEBUGGER_PIA_BUILD
import "msdbg.idl";
#endif
#ifdef DEBUGGER_PIA_BUILD
#define XINT32 int
#else
#define XINT32 ULONG32
#endif
enum ModuleSymbolLoadFlags
{
SymbolLoadFlags_None = 0x00000000,
// Indicates that only local symbol sources should be considered.
SymbolLoadFlags_LocalSourcesOnly = 0x00000001,
// Indicates that the user should not be prompted to locate symbols if they cannot be found automatically.
SymbolLoadFlags_NoPrompt = 0x00000002
};
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(ModuleSymbolLoadFlags)")
//----------------------------------------------------------------------------
// IDebugModule174
// Optional interface that can be implemented by objects that also implement
// IDebugModule2 in order to allow the IDE to provide additional options when
// loading symbols.
//----------------------------------------------------------------------------
[
local,
object,
uuid(D74EB328-F42B-4F4C-A87B-AF66247B2FCE),
pointer_default(unique)
]
interface IDebugModule174 : IUnknown
{
// Loads symbols for the current module with flags to control the load behavior.
HRESULT LoadSymbols(
[in] enum ModuleSymbolLoadFlags flags
);
};
typedef enum _BreakpointSuggestedFix
{
// Indicates that no suggested fix is available or necessary.
BPSF_None = 0,
// Indicates that this breakpoint might bind successfully if Just My Code is disabled.
BPSF_DisableJMC = 1,
// Indicates that this breakpoint might bind successfully if optimizations applied to managed code are disabled.
BPSF_DisableManagedOptimizations = 2
} BreakpointSuggestedFix;
enum _BPERESI_FIELDS174
{
// VS 8.0 values
BPERESI174_BPRESLOCATION = 0x0001,
BPERESI174_PROGRAM = 0x0002,
BPERESI174_THREAD = 0x0004,
BPERESI174_MESSAGE = 0x0008,
BPERESI174_TYPE = 0x0010,
BPERESI174_ALLFIELDS = 0xffffffff,
// Values added in VS 17.4
BPERESI174_SUGGESTEDFIX = 0x0020
};
cpp_quote("#if 0")
// We need this typedef in the IDL so MIDL will generate managed interop using the actual enum type, but
// we want to treat it as a DWORD in native to simplify conversion from the old interface.
typedef enum _BPERESI_FIELDS174 BPERESI_FIELDS174;
cpp_quote("#endif")
cpp_quote("typedef DWORD BPERESI_FIELDS174;")
typedef struct _BP_ERROR_RESOLUTION_INFO174
{
// VS 8.0 fields
BPERESI_FIELDS174 dwFields;
BP_RESOLUTION_LOCATION bpResLocation;
IDebugProgram2* pProgram;
IDebugThread2* pThread;
BSTR bstrMessage;
BP_ERROR_TYPE dwType;
// Fields added in VS 17.4
BreakpointSuggestedFix suggestedFix;
} BP_ERROR_RESOLUTION_INFO174;
//----------------------------------------------------------------------------
// IDebugErrorBreakpointResolution174
// Optional interface that can be implemented by objects that also implement
// IDebugErrorBreakpoint2 in order to provide hints to the IDE regarding potential
// fixes for breakpoints that fail to bind.
//----------------------------------------------------------------------------
[
local,
object,
uuid(2A318B44-3878-4015-ACCF-E8323F5B4A73),
pointer_default(unique)
]
interface IDebugErrorBreakpointResolution174 : IUnknown
{
HRESULT GetResolutionInfo174(
[in] BPERESI_FIELDS174 dwFields,
[out] BP_ERROR_RESOLUTION_INFO174* pErrorResolutionInfo
);
};
//----------------------------------------------------------------------------
// IDebugPendingBreakpoint174
// Optional interface that can be implemented by objects that also implement
// IDebugPendingBreakpoint2 in order to provide additional information to the
// IDE when breakpoints fail to bind, including suggested fixes.
//----------------------------------------------------------------------------
[
local,
object,
uuid(78DD0597-1BE1-4EA7-96AE-5FA787E929D4),
pointer_default(unique)
]
interface IDebugPendingBreakpoint174 : IUnknown
{
HRESULT GetErrorResolutionInfo174(
[in] BPERESI_FIELDS174 dwFields,
[out] BP_ERROR_RESOLUTION_INFO174* pErrorResolutionInfo);
};
///
/// Provides information about the source non-debugged process for a debug event.
///
[
object,
uuid(17e698af-e905-4e9f-b8a6-80da45382ee1),
pointer_default(unique)
]
interface IDebugNonDebugProcessInfo174 : IUnknown
{
///
/// Gets the name of the process from the 'bstrExe' argument of the VsDebugTargetInfo4, or
/// from a IDebugProcessInfoUpdatedEvent158 event.
///
/// The name of the process
/// S_OK on success
HRESULT GetName([out] BSTR* name);
///
/// Gets the process id of the non-debug process, if it is available.
///
/// The process id, or zero if it isn't available yet.
/// S_OK if the system process id is available, or E_PENDING if a IDebugProcessInfoUpdatedEvent158 has not been sent yet.
HRESULT GetSystemProcessId([out] DWORD* processId);
///
/// Gets the IVsHierachy of the launching project, if available
///
///
/// S_OK if the project was returned, otherwise a failure code.
HRESULT GetLaunchProject([out] IUnknown** project);
};
///
/// Interface that can optionally be implemented on debug events sent for scenarios where
/// a debug engine is launching a process without debugging. This is implemented for
/// IDebugOutputStringEvent2 events starting in VS 17.4, and for INonDebugProcessExitedEvent168
/// events starting in VS 17.7.
///
[
object,
uuid(5ab6da30-aaa2-4227-b509-cf9e801c4f29),
pointer_default(unique)
]
interface IDebugNonDebugEvent174 : IUnknown
{
///
/// Provides access to the non-debug process info object.
///
/// Returned process info object
HRESULT GetNonDebugProcess([out] IDebugNonDebugProcessInfo174** process);
};
enum enum_LAUNCH_FLAGS174
{
/**************************************
LAUNCH_DEBUG = 0x0000, // Launch the process for debugging
LAUNCH_NODEBUG = 0x0001, // Launch the process without debugging it
LAUNCH_ENABLE_ENC = 0x0002, // Launch the process with EnC enabled.
LAUNCH_MERGE_ENV = 0x0004, // Launch the process and merge the environment
LAUNCH_WAIT_FOR_EVENT = 0x0008
LAUNCH_ALLOW_EVENTS_AFTER_STOPPED = 0x0010, // Allow stopping events in break-mode
LAUNCH_FORCE_32BIT_DEBUG = 0x0020, // Force use of the 32-bit debugger
LAUNCH_FORCE_64BIT_DEBUG = 0x0040 // Force use of the 64-bit debugger
LAUNCH_PROFILING = 0x0080 // Launch the process for profiling
LAUNCH_STDIO_TO_OUTPUT_WINDOW = 0x0100
LAUNCH_FORCE_PSEUDO_REMOTE_DEBUG = 0x0200, // Force pseudoremote debugging
LAUNCH_INTEGRATED_CONSOLE = 0x400
LAUNCH_SINGLE_USE_INTEGRATED_CONSOLE = 0x800
***************************************/
LAUNCH_INTEGRATED_CONSOLE_SERVICE = 0x1000
};
typedef DWORD LAUNCH_FLAGS174;