// 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;