// msdbg1714.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";
import "msdbg174.idl";
#endif
#ifdef DEBUGGER_PIA_BUILD
#define XINT32 int
#else
#define XINT32 ULONG32
#endif
// Used to override value type ptr as array params and add nopreservesig.
// This can be used to prevent the PIA scripts from turning pointers into arrays in order to support optional arguments (see usage of preservevaluetyperefparam)
// It should never be used with `_Out_opt_` or `_In_opt_` structs.
#ifndef uuid_CustomIdlAttrib
#define uuid_CustomIdlAttrib C55B1915-3245-4FD4-B0C1-BDCD5396F7D4
#endif
enum enum_MODULE1714_FLAGS
{
//// ---------------------------------------------------------------------
//// VS 8.0 values
//MODULE100_FLAG_NONE = 0x0000,
//MODULE100_FLAG_SYSTEM = 0x0001,
//MODULE100_FLAG_SYMBOLS = 0x0002,
//MODULE100_FLAG_64BIT = 0x0004,
////
//// If the engine knows a module about optimizations it needs to set
//// either of these flags, if it does not the module window will assume
//// it does not
////
//MODULE100_FLAG_OPTIMIZED = 0x0008,
//MODULE100_FLAG_UNOPTIMIZED = 0x0010,
//// ---------------------------------------------------------------------
//// VS 9.0 values
//// ---------------------------------------------------------------------
//// VS 10.0 values
//MODULE100_FLAG_ENGINEWILLLOADSYMS = 0x0020,
//MODULE100_FLAG_SYMBOLSUNAVAILABLE = 0x0040, // The engine cannot load symbols at this time
//// ---------------------------------------------------------------------
//// VS 17.2 values
//MODULE172_FLAG_SYMBOLS_DECOMPILED = 0x0080, // the symbols are the result of a decompilation
//MODULE172_FLAG_SYMBOLS_RELOADABLE = 0x0100, // the symbols have the potential to be reloaded in favor of a higher fidelity symbol file, i.e. decompiled can be reloaded for the real symbols
//// ---------------------------------------------------------------------
//// VS 17.5 values
//MODULE175_FLAG_SYMBOLS_PARTIALLY_DECOMPILED = 0x0200, // The symbols are the result of partial decompilation.
//// ---------------------------------------------------------------------
//// VS 17.11 values
// The engine is capable of providing information about sources contained in the symbols associated for this module. If an
// engine does not return this flag, the absence of the various _AVAILABLE flags should NOT be interpreted to mean that
// source information is unavailable, and consumers should fall back to checking for source information by attempting
// to retrieve it directly (e.g. via IDebugSourceLinkModule.GetSourceLinkDataAsync)
//MODULE1711_FLAG_SYMBOLS_SOURCE_INFO_SUPPORTED = 0x0400,
//MODULE1711_FLAG_SYMBOLS_SOURCE_LINK_AVAILABLE = 0x0800, // The symbols for this module contain Source Link information
//MODULE1711_FLAG_SYMBOLS_SOURCE_SERVER_AVAILABLE = 0x1000, // The symbols for this module contain Source Server information
//MODULE1711_FLAG_SYMBOLS_EMBEDDED_SOURCE_AVAILABLE = 0x2000 // The symbols for this module contain embedded source documents
//// ---------------------------------------------------------------------
//// VS 17.14 values
MODULE1714_FLAG_CAN_DEOPTIMIZE= 0x4000, // The engine can trigger deoptimization of methods in this module
};
typedef DWORD MODULE1713_FLAGS;
// This enum extends enum_FRAMEINFO_FLAGS. enum_FRAMEINFO_FLAGS has exhausted all the possible bits of a 32-bit integer,
// so any new flags must use enum_FRAMEINFO_FLAGS_EXTENDED instead.
enum FRAMEINFO_FLAGS_EX1714
{
/******************************************
FIF_EX_INCLUDE_ASYNC_FRAMES = 0x1,
FIF_EX_SHOW_TASK_IDS = 0x2,
FIF_EX_FUNCNAME_HIDE_TEMPLATE_ARGS = 0x4, // Hide template arguments
FIF_EX_SHOW_CURRENT_TASK_ONLY = 0x8
******************************************/
FIF_EX_BINDABLE_NAME = 0x10,
FIF_EX_INCLUDE_STOPPED_EXCEPTION_FRAME = 0x20 // Include a frame indicating the exception on the thread
};
// ------------------------------------------------------------------
// IDebugBoundBreakpoint1714
//
///
/// Interface used to determine whether the breakpoints condition was met
/// when the breakpoint event was raised for conditions that were added
/// at a time when the breakpoint event may have been in flight.
///
[
local,
object,
uuid(9E165D0B-1F66-474E-BCAF-19716856807E),
pointer_default(unique)
]
interface IDebugBoundBreakpoint1714 : IUnknown
{
///
/// For a breakpoint that was reported through IDebugBreakpointEvent2, determines whether the current condition
/// was satisfied.
///
/// Whether the condition, if present, was met.
HRESULT WasConditionMet([out] BOOL* wasMet);
};
// Extended bit field to support more annotated frame types.
enum enum_FRAMEINFO_FLAGS_VALUES1714
{
// Existing flags:
// FIFV_ANNOTATEDFRAME = 0x00000001,
// FIFV_NON_USER_CODE = 0x00000002,
// FIFV_CANINTERCEPT_EXCEPTION = 0x00000004,
// FIFV_FUNCEVALFRAME = 0x00000008,
// FIFV_MAXFRAMES_EXCEEDED = 0x00000010,
// FIFV_ASYNC_FRAME = 0x00000020,
// FIFV_RETURN_STACK_FRAME = 0x00000040,
// FIFV_TASK_CREATION_STACK_FRAME = 0x00000080,
// FIFV_ASYNC_CALL_ANNOTATED_FRAME = 0x00000100,
// FIFV_ASYNC_CONTINUATION_ANNOTATED_FRAME = 0x00000200,
// FIFV_INLINE_FRAME = 0x00000400,
// FIFV_HIDDEN_FRAME = 0x00000800,
// FIFV_WARNING_FRAME = 0x00001000,
// FIFV_CRITICAL_FRAME = 0x00002000,
// FIFV_DEEMPHASIZED_FRAME = 0x00004000,
// Indicates that the frame contains information about the stopped exception.
// These frames are returned when FIF_EX_INCLUDE_STOPPED_EXCEPTION_FRAME filter option is set.
FIFV_STOPPED_EXCEPTION_FRAME = 0x00008000
};
// ------------------------------------------------------------------
// The following APIs and type definitions are used to get additional
// information of where a breakpoint that failed to bind was resolved to.
//
// Not all breakpoints that fail to bind will have this information.
// ------------------------------------------------------------------
// List of IDebugModule2 objects, following the IList pattern.
//
// NOTE: the implementation of this interface _MUST_ be thread agile. This is the
// default if implementing the interface in managed code. If implementing in native code,
// implementations should aggregate the free threaded marshaler.
[
local,
object,
uuid(58E35BF7-00B9-4E86-AE6D-561F18B8447C),
pointer_default(unique)
]
interface IListDebugModules : IUnknown
{
[propget]
HRESULT Count(
[out, retval, annotation("_Out_")] XINT32* result);
[propget, id(DISPID_VALUE), helpstring("property Item")]
HRESULT Item(
[in] XINT32 Index,
[out, retval, annotation("_Out_"), custom(uuid_CustomIdlAttrib, "preservevaluetyperefparam")] IDebugModule2** ppItem);
HRESULT GetItems(
[in] XINT32 index,
[in] XINT32 numItems,
[out, size_is(numItems), length_is(*pCountReturned), annotation("_Out_writes_to_(numItems, *pCountReturned)")] IDebugModule2** ppItemArray,
[in, out, annotation("_Out_")] XINT32* pCountReturned);
};
// Enables the debugger to get the symbol and module information
// out of an error breakpoint.
[
local,
object,
uuid(185B810E-6AC6-4091-A253-D7C39ADC1EB3),
pointer_default(unique)
]
interface IDebugErrorBreakpointResolution1714 : IUnknown
{
HRESULT GetDebugModules(
[out, annotation("_Outptr_")] IListDebugModules** ppDebugModuleList);
};
// List of MODULE_INFO objects, following the IList pattern.
//
// NOTE: the implementation of this interface _MUST_ be thread agile. This is the
// default if implementing the interface in managed code. If implementing in native code,
// implementations should aggregate the free threaded marshaler.
[
local,
object,
uuid(E26F64EF-A046-4069-BBBC-BB43A5771715),
pointer_default(unique)
]
interface IListModuleInfos : IUnknown
{
[propget]
HRESULT Count(
[out, retval, annotation("_Out_")] XINT32* result);
[propget, id(DISPID_VALUE), helpstring("property Item")]
HRESULT Item(
[in] XINT32 Index,
[out, retval, annotation("_Out_"), custom(uuid_CustomIdlAttrib, "preservevaluetyperefparam")] MODULE_INFO* pItem);
HRESULT GetItems(
[in] XINT32 index,
[in] XINT32 numItems,
[out, size_is(numItems), length_is(*pCountReturned), annotation("_Out_writes_to_(numItems, *pCountReturned)")] MODULE_INFO* pItemsArray,
[in, out, annotation("_Out_")] XINT32* pCountReturned);
};
// Extension of the IDebugPendingBreakpoint174 interface that provides
// the list of MODULE_INFO objects in addition to the other information
// related to a breakpoint that failed to bind.
//
// Only breakpoints that the symbol provider managed to resolve will
// have this information.
[
local,
object,
uuid(FE243399-05EF-4BC1-BD24-8725C4795B21),
pointer_default(unique)
]
interface IDebugPendingBreakpoint1714 : IUnknown
{
HRESULT GetErrorResolutionInfo1714(
[in] BPERESI_FIELDS174 dwFields,
[out] BP_ERROR_RESOLUTION_INFO174* pErrorResolutionInfo,
[out, optional, annotation("_Outptr_opt_")] IListModuleInfos** ppModuleInfoList);
};
typedef enum _BreakpointSuggestedFix1714
{
/***********************************************************************
// ---------------------------------------------------------------------
// VS 17.4 values
// 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
***********************************************************************/
// Indicates that the breakpoint is not binding because the debug engine is not supported in the current process.
// E.g. a .NET Core debug engine in a native process.
BPSF_EngineMismatch = 3
} BreakpointSuggestedFix1714;