// msdbg150.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 interface IEnumDebugTelemetryProperty150; // Used to override value type ptr as array params and add nopreservesig #define uuid_CustomIdlAttrib C55B1915-3245-4FD4-B0C1-BDCD5396F7D4 // ------------------------------------------------------------------ // IDebugExceptionCondition [ object, uuid(FBFD0196-B9A4-48FC-AB5E-77E4A2EFD887), pointer_default(unique) ] interface IDebugExceptionCondition : IUnknown { // Must be up to date with debugger/concord/dispatcher/Managed/ExceptionConditions.cs cpp_quote("#ifndef _MSC_VER") cpp_quote("typedef enum EXCEPTION_CONDITION_TYPE : unsigned int") cpp_quote("{") cpp_quote(" ModuleName,") cpp_quote(" FunctionName") cpp_quote("} EXCEPTION_CONDITION_TYPE;") cpp_quote("#else") typedef enum EXCEPTION_CONDITION_TYPE { ModuleName, FunctionName } EXCEPTION_CONDITION_TYPE; cpp_quote("#endif") // Must be up to date with debugger/concord/dispatcher/Managed/ExceptionConditions.cs cpp_quote("#ifndef _MSC_VER") cpp_quote("typedef enum EXCEPTION_CONDITION_CALLSTACK_BEHAVIOR : unsigned int") cpp_quote("{") cpp_quote(" TopFrameOnly,") cpp_quote(" Full") cpp_quote("} EXCEPTION_CONDITION_CALLSTACK_BEHAVIOR;") cpp_quote("#else") typedef enum EXCEPTION_CONDITION_CALLSTACK_BEHAVIOR { TopFrameOnly, Full } EXCEPTION_CONDITION_CALLSTACK_BEHAVIOR; cpp_quote("#endif") // Must be up to date with debugger/concord/dispatcher/Managed/ExceptionConditions.cs cpp_quote("#ifndef _MSC_VER") cpp_quote("typedef enum EXCEPTION_CONDITION_OPERATOR : unsigned int") cpp_quote("{") cpp_quote(" Equals,") cpp_quote(" NotEquals") cpp_quote("} EXCEPTION_CONDITION_OPERATOR;") cpp_quote("#else") typedef enum EXCEPTION_CONDITION_OPERATOR { Equals, NotEquals } EXCEPTION_CONDITION_OPERATOR; cpp_quote("#endif") [propget] HRESULT Type([out, retval] EXCEPTION_CONDITION_TYPE* pVal); [propget] HRESULT CallStackBehavior([out, retval] EXCEPTION_CONDITION_CALLSTACK_BEHAVIOR* pVal); [propget] HRESULT Operator([out, retval] EXCEPTION_CONDITION_OPERATOR* pVal); [propget] HRESULT Value([out, retval] BSTR* pVal); }; // ------------------------------------------------------------------ // IDebugExceptionConditionList [ object, uuid(14FB02FF-2D1B-496A-96C7-2F565BBFCEA4), pointer_default(unique) ] interface IDebugExceptionConditionList : IUnknown { [propget] HRESULT Count([out, retval] long* pVal); [ propget, id(DISPID_VALUE), helpstring("property Item") ] HRESULT Item( [in] long lIndex, [out, retval] IDebugExceptionCondition** ppVal ); } interface IEnumDebugExceptionInfo150; // ------------------------------------------------------------------ // IDebugSession150 [ object, uuid(6B762667-EB09-4B7E-AC1A-5BAABCCC412A), pointer_default(unique) ] interface IDebugSession150 : IUnknown { // ------------------------------------------------------------------ // EXCEPTION_INFO150 typedef struct tagEXCEPTION_INFO150 { // Original EXCEPTION_INFO fields IDebugProgram2* pProgram; BSTR bstrProgramName; BSTR bstrExceptionName; DWORD dwCode; EXCEPTION_STATE dwState; // Either guidLang or guidEng GUID guidType; // Additional fields (extended in v150) IDebugExceptionConditionList* pConditions; } EXCEPTION_INFO150; HRESULT SetExceptions([in] IEnumDebugExceptionInfo150* pExceptionList); HRESULT RemoveSetExceptions([in] IEnumDebugExceptionInfo150* pExceptionList); HRESULT EnumDefaultExceptions( [in, ptr] EXCEPTION_INFO150* pParentException, [out] IEnumDebugExceptionInfo150** ppEnum ); HRESULT EnumSetExceptions( [in] REFGUID guidType, // Either guidLang or guidEng [out] IEnumDebugExceptionInfo150** ppEnum ); } // ------------------------------------------------------------------ // IEnumDebugExceptionInfo150 [ object, uuid(418C94A5-23B8-461E-A117-69543CE0DB36), pointer_default(unique) ] interface IEnumDebugExceptionInfo150 : IUnknown { HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] EXCEPTION_INFO150* rgelt, [in, out] ULONG *pceltFetched ); HRESULT Skip([in] ULONG celt); HRESULT Reset(void); HRESULT Clone([out] IEnumDebugExceptionInfo150** ppEnum); HRESULT GetCount([out] ULONG* pcelt); }; // ------------------------------------------------------------------ // IDebugExceptionDetails [ local, object, uuid(15030210-D2C0-410D-9044-9F8091B992D8), pointer_default(unique) ] interface IDebugExceptionDetails : IUnknown { // Get the formatted description of the exception that can be shown the UI. // The current stack frame can be passed in for context. HRESULT GetFormattedDescription([in, annotation("_In_opt_")] IDebugStackFrame2* pStackFrameContext, [out] BSTR* pbstrDescription); HRESULT GetExceptionMessage([out] BSTR* pbstrMessage); HRESULT GetTypeName([in] BOOL fFullName, [out] BSTR* pbstrTypeName); HRESULT GetSource([out] BSTR* pbstrSource); HRESULT GetHResult([out] DWORD* pHResult); HRESULT GetInnerExceptionDetails([out] IDebugExceptionDetails** ppDetails); HRESULT GetStackTrace([out] BSTR* pbstrMessage); HRESULT GetExceptionObjectExpression([out] BSTR* pbstrExceptionObjectExpression); }; // ------------------------------------------------------------------ // IDebugExceptionEvent150 [ local, object, uuid(A91AD17C-1174-4563-9C1E-56C837C2ADEE), pointer_default(unique) ] interface IDebugExceptionEvent150 : IUnknown { HRESULT GetExceptionDetails([out] IDebugExceptionDetails** ppDetails); HRESULT GetException([out] EXCEPTION_INFO150* pExceptionInfo); }; // ------------------------------------------------------------------ // IDebugExceptionSettingsChangeNotification150 [ local, object, uuid(ACC93823-3CB2-421E-AF29-272777AE8180), pointer_default(unique) ] [custom(uuid_CustomIdlAttrib, "nopreservesig")] interface IDebugExceptionSettingsChangeNotification150 : IUnknown { HRESULT OnExceptionSettingChanged( [in, ptr, custom(uuid_CustomIdlAttrib,"preservevaluetyperefparam")] EXCEPTION_INFO150* pExceptionInfo ); HRESULT OnExceptionSettingRemoved( [in, ptr, custom(uuid_CustomIdlAttrib,"preservevaluetyperefparam")] EXCEPTION_INFO150* pExceptionInfo ); HRESULT OnAllExceptionSettingsChanged([in] REFGUID guidType); HRESULT OnAllExceptionSettingsRemoved([in] REFGUID guidType); }; // ------------------------------------------------------------------ // IDebugExceptionSettingsManager150 // Interface used to provide notifications when changes are made to the exception settings. // The SDM will implement this interface from the debug manager object (IVsDebugger). [ object, uuid(791019DE-09C3-4438-9A74-078511727A09), pointer_default(unique) ] interface IDebugExceptionSettingsManager150 : IUnknown { HRESULT AdviseExceptionSettingsEvents([in] IDebugExceptionSettingsChangeNotification150* pEventSink); HRESULT UnadviseExceptionSettingsEvents([in] IDebugExceptionSettingsChangeNotification150* pEventSink); }; // ------------------------------------------------------------------ // IDebugEngine150 [ object, uuid(0C6C8422-1241-4FB1-8106-5762C7E27E59), pointer_default(unique) ] interface IDebugEngine150 : IUnknown { HRESULT SetExceptions([in] IEnumDebugExceptionInfo150* pExceptionList); HRESULT RemoveSetExceptions([in] IEnumDebugExceptionInfo150* pExceptionList); } typedef struct tagPROCESS_PERFORMANCE_COUNTERS { UINT32 StartStopCounter; UINT64 SystemTime; UINT64 UserTime; UINT64 KernelTime; UINT64 RuntimeOverhead; UINT64 OSOverhead; UINT64 TotalOverhead; UINT64 Id; } PROCESS_PERFORMANCE_COUNTERS; typedef struct tagQUERY_PROCESS_PERFORMANCE_COUNTERS_RESULT { HRESULT ErrorCode; PROCESS_PERFORMANCE_COUNTERS Counters; } QUERY_PROCESS_PERFORMANCE_COUNTERS_RESULT; //---------------------------------------------------------------------------- // IDebugQueryPerformanceCountersCompletionRoutine150 //---------------------------------------------------------------------------- [ uuid(442FBF28-FA75-4697-AA4F-41DC1E9B7777), version(1.0), pointer_default(unique) ] interface IDebugQueryPerformanceCountersCompletionRoutine150 : IUnknown { HRESULT QueryPerformanceCountersOnComplete([in] QUERY_PROCESS_PERFORMANCE_COUNTERS_RESULT* pResult); }; //---------------------------------------------------------------------------- // IDebugProgram150 //---------------------------------------------------------------------------- [ uuid(6EC6F085-FFBE-41B8-979F-F885A86EA181), version(1.0), pointer_default(unique) ] interface IDebugProgram150 : IUnknown { HRESULT QueryPerformanceCounters([in] IDebugQueryPerformanceCountersCompletionRoutine150* pCallback); }; // IVsDebuggerScriptInstallCheck // Interface used to determine whether or not script debugging has been installed // Implemented by the debugger and can be obtained from the SID_SVsDebuggerScriptInstallCheck // visual studio service. This should only be called from the main thread. [ local, uuid("0F6A40B8-D6B5-44B9-86E9-1D6B1B208E3F"), pointer_default(unique) ] interface IVsDebuggerScriptInstallCheck : IUnknown { HRESULT CheckScriptDebuggerInstalled([out, retval] VARIANT_BOOL* isInstalled); } cpp_quote("#define SID_SVsDebuggerScriptInstallCheck __uuidof(IVsDebuggerScriptInstallCheck") typedef struct tagCONTEXT_INFO_RESULT { HRESULT ErrorCode; CONTEXT_INFO ContextInfo; } CONTEXT_INFO_RESULT; /* IDebugMemoryContextInfoCompletionRoutine150 : indicates that the memory context info requested in an asynchronous request is complete and included with the event object. */ [ uuid("BF4CD6E7-7AD0-45A4-B1BF-D94BBBF0B0E5"), pointer_default(unique) ] interface IDebugCodeContextInfoCompletionRoutine150 : IUnknown { HRESULT OnCodeContextInfoComplete([in] CONTEXT_INFO_RESULT *pResult); } /* IDebugMemoryContext150 : ad7 interface which adds an asynchronous method for getting memory context information. */ [ object, uuid(0EB39B6B-8EFF-4B9D-8CBD-EDA45D5C588F), pointer_default(unique) ] interface IDebugCodeContext150 : IUnknown { HRESULT GetInfoAsync( [in] CONTEXT_INFO_FIELDS dwRequestedFields, [in] IDebugCodeContextInfoCompletionRoutine150 *pCompletionRoutine ); }; enum enum_EVALFLAGS150 { // --------------------------------------------------------------------- // VS 8.0 values // the return value is interesting EVAL150_RETURNVALUE = 0x0002, // Same as EVAL_RETURNVALUE // don't allow side effects EVAL150_NOSIDEEFFECTS = 0x0004, // Same as EVAL_NOSIDEEFFECTS // stop on breakpoints EVAL150_ALLOWBPS = 0x0008, // Same as EVAL_ALLOWBPS // allow error reporting to the host EVAL150_ALLOWERRORREPORT = 0x0010, // Same as EVAL_ALLOWERRORREPORT // evaluate any functions as address (instead of invoking the function) EVAL150_FUNCTION_AS_ADDRESS = 0x0040, // Same as EVAL_FUNCTION_AS_ADDRESS // don't allow function/property evaluation EVAL150_NOFUNCEVAL = 0x0080, // Same as EVAL_NOFUNCEVAL // don't allow events EVAL150_NOEVENTS = 0x1000, // Same as EVAL_NOEVENTS // design-time expression evaluation EVAL150_DESIGN_TIME_EXPR_EVAL = 0x2000, // Same as EVAL_DESIGN_TIME_EXPR_EVAL // Allow implicit variable creation EVAL150_ALLOW_IMPLICIT_VARS = 0x4000, // Same as EVAL_ALLOW_IMPLICIT_VARS // --------------------------------------------------------------------- // Values added in VS 9.0 // Force eval to occur now. Somebody is requesting it (like the user) EVAL150_FORCE_EVALUATION_NOW = 0x8000, // --------------------------------------------------------------------- // Values added in VS 10.0 //Disable use of the IL interpreter. DO NOT USE THIS FLAG. USE EVAL150_ENABLE_ILINTERPRETER instead. EVAL150_NO_IL_INTERPRETER_DEPRECATED = 0x10000, // Force the EE to allow func-evals (not just ToString() or property getters) even if EVAL100_NOSIDEEFFECTS is present. EVAL150_ALLOW_FUNC_EVALS_EVEN_IF_NO_SIDE_EFFECTS = 0x20000, // Allow threads to slip during funceval. EVAL150_ALLOW_THREADSLIPPING = 0x40000, // --------------------------------------------------------------------- // Values added in VS 11.0 EVAL150_SHOW_VALUERAW = 0x80000, // All function evaluations should actually execute inside the debuggee, as opposed // to being interpreted through the IL interpreter. EVAL150_FORCE_REAL_FUNCEVAL = 0x100000, //Indicates that the IL interpreter is being used for the evaluation. This includes real-func eval //cases where the EE is talking to vil. The only time this is cleared is when the interpreter is completely //disabled (as in the C# EE talks directly to vil). This flag is cleared in all non-Concord scenarios. EVAL150_ILINTERPRETER_BEING_USED = 0x200000, // --------------------------------------------------------------------- // Values added in VS 15.0 // Eval flag to permit less-obvious side effects, such as func-evals from natvis expressions. // Currently, this flag is respected only by the native C++ EE in Concord. EVAL150_ALLOW_EXTENDED_SIDE_EFFECTS = 0x400000, }; // Tell the UI always show the refresh button allowing the user to retry the current evaluation. By default, // the UI only shows the refresh button if the evalutation is an error and it's either a root node or CDebuggerOptions::AllowImplicitFuncEval is off. cpp_quote("#define DBG_ATTRIB_CANEVALUATENOW 0x0400000000000000") // DBG_ATTRIB_NEED_REFRESH_FOR_EXTENDED_SIDE_EFFECTS is set by the engine in cases where we want to enable "extended" side effects when the property // is re-evaluated as a result of the user clicking the refresh button. It is set by the C++ EE when the formatting of a value involves // expressions that contain func-eval. By default, we don't do these func-evals, but the option to click the refresh button to enable them exists. // // This flag should be combined with DBG_ATTRIB_CANEVALUATENOW. However, DBG_ATTRIB_CANEVALUATENOW can appear without DBG_ATTRIB_NEED_REFRESH_FOR_EXTENDED_SIDE_EFFECTS // if the intention of the EE is to just enable the refresh button, without enabling extended side effects when the refresh button is clicked. // // As of Visual Studio 15, managed debugging does not use or set this flag; the managed EE's enable "extended" side effects whenever ordinary side effects/func-eval is enabled. cpp_quote("#define DBG_ATTRIB_NEED_REFRESH_FOR_EXTENDED_SIDE_EFFECTS 0x0800000000000000") [ object, uuid(6f4e34da-6b2b-4624-93c5-93a058cd95de), pointer_default(unique) ] interface IDebugProperty150 : IUnknown { // Called when the DBG_ATTRIB_CANEVALUATENOW is set. Returns some additional information for the refresh button, // including what tooltip to display when the refresh button is clicked, and which additional evaluation flags (if any) // should be enabled when the expression is re-evaluated when the refresh button is clicked. HRESULT GetRefreshButtonText([out] BSTR* bstrRefreshButtonText); }; [ object, uuid(6a31f3f2-bf97-452d-888b-cd526d1e9d80), pointer_default(unique) ] interface IDebugSourceLinkInfo150 : IUnknown { HRESULT GetUrl([out] BSTR* pbstrUrl); HRESULT GetRelativeFilePath([out] BSTR* pbstrRelativeFilePath); } [ object, uuid(667f17de-b438-4ada-a1e5-5517db9f6533), pointer_default(unique) ] interface IDebugSourceLinkDocumentContext150 : IUnknown { HRESULT GetSourceLinkInfo([out] IDebugSourceLinkInfo150** ppSourceLinkInfo); } [ object, uuid(3cfd5762-425b-4a0b-a962-3a6cacbcaef5), pointer_default(unique) ] interface IDebugDocumentContext150 : IUnknown { // The Debugger will include the default source search directories by default. Implement this and return false to opt out. HRESULT UseDefaultSourceSearchDirectories([out] BOOL* pfUseDefaultSourceSearchDirectories); } // Optional event that a debug engine can send to provide additional telemetry details // for a scenario that the debugger UI is about to record telemetry about. For example, // during a launch, an engine could send an event to add details of various parts of its // internal launch processing. [ object, uuid(8F2652B2-CD3C-4AED-A946-A3DB6F379412), pointer_default(unique) ] interface IDebugTelemetryDetailsEvent150 : IUnknown { // Obtains the payload of the event. // // The event name should be set to the telemetry event that the engine would like to // extend. Currently the only supported value is "VS/Diagnostics/Debugger/LaunchComplete". // // The propertiesEnum contains the new properties to add. HRESULT GetInfo( [out] BSTR* eventName, [out] IEnumDebugTelemetryProperty150** propertyEnum); }; // Enumerator of telemetry properties. Note that this interface doesn't have a proxy/stub, // so any implementation must either be from Visual Studio's main STA or must be a // thread-agile object. This is true for any managed implementation by default, but native // implementations may need to take care to do this. [ local, object, uuid(161EA122-D0A3-47A8-9063-F6878E0F5F9B), pointer_default(unique) ] interface IEnumDebugTelemetryProperty150 : IUnknown { HRESULT Next( [in] ULONG requestCount, [out, size_is(requestCount), length_is(*returnCount), annotation("__RPC__out_ecount_part(requestCount, *returnCount)")] BSTR* nameArray, [out, size_is(requestCount), length_is(*returnCount), annotation("__RPC__out_ecount_part(requestCount, *returnCount)")] VARIANT* valueArray, [out, annotation("_Out_")] ULONG* returnCount); HRESULT GetCount( [out, annotation("_Out_")] ULONG* result); }; enum enum_LAUNCH_FLAGS150 { /************************************** 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 }; typedef DWORD LAUNCH_FLAGS150; enum enum_SYMBOL_PATH_TYPE { // Regular local, UNC, http symbol path Normal, // VSTS symbol server path VSTS }; typedef DWORD SYMBOL_PATH_TYPE; typedef struct SymbolPath { // Type of symbol path SYMBOL_PATH_TYPE Type; // The symbol path url, can be local, unc, or an http location // Valid for both normal and VSTS symbol paths BSTR Url; // Valid for VSTS symbol server path. Used for authenticating with VSTS. BSTR AccountId; // Valid for VSTS symbol server path. Used for authenticating with VSTS. BSTR AccountProviderId; // Valid for VSTS symbol server path. Used for authenticating with VSTS. BSTR TenantId; // Describes how the path will be shown in the UI. BSTR DisplayName; } SymbolPath; enum enum_DEBUGPROP_INFO_FLAGS150 { // --------------------------------------------------------------------- // VS 8.0 values DEBUGPROP150_INFO_FULLNAME = 0x00000001, DEBUGPROP150_INFO_NAME = 0x00000002, DEBUGPROP150_INFO_TYPE = 0x00000004, DEBUGPROP150_INFO_VALUE = 0x00000008, DEBUGPROP150_INFO_ATTRIB = 0x00000010, DEBUGPROP150_INFO_PROP = 0x00000020, DEBUGPROP150_INFO_VALUE_AUTOEXPAND = 0x00010000, DEBUGPROP150_INFO_NOFUNCEVAL = 0x00020000, // Tell EE not to perform ANY type of func-eval. DEBUGPROP150_INFO_VALUE_RAW = 0x00040000, // Tell EE not to return any beautified values or members. DEBUGPROP150_INFO_VALUE_NO_TOSTRING = 0x00080000, // Tell EE not to return any special synthesized values (ToString() for instance). DEBUGPROP150_INFO_NO_NONPUBLIC_MEMBERS = 0x00100000, // Tell EE to return non-public members for non-user objects. DEBUGPROP150_INFO_NONE = 0x00000000, DEBUGPROP150_INFO_STANDARD = DEBUGPROP150_INFO_ATTRIB | DEBUGPROP150_INFO_NAME | DEBUGPROP150_INFO_TYPE | DEBUGPROP150_INFO_VALUE, DEBUGPROP150_INFO_ALL = 0xffffffff, // --------------------------------------------------------------------- // VS 9.0 values DEBUGPROP150_INFO_NOSIDEEFFECTS = 0x00200000, // Tell EE not to perform any eval that has side effects // --------------------------------------------------------------------- // VS 10.0 values //Disable use of the IL interpreter. DEBUGPROP150_INFO_NO_IL_INTERPRETER = 0x00400000, // Force the EE to allow func-evals (not just ToString() or property getters) even if EVAL100_NOSIDEEFFECTS is present. DEBUGPROP150_INFO_ALLOW_FUNC_EVALS_EVEN_IF_NO_SIDE_EFFECTS = 0x00800000, DEBUGPROP150_INFO_ALLOW_THREADSLIPPING = 0x01000000, // Tell EE that slipping threads during funcevals is ok // This flag says to use real funceval for evaluation when interpreted evalutaion is being used. DEBUGPROP150_INFO_FORCE_REAL_FUNCEVAL = 0x02000000, //Indicates that the IL interpreter is being used for the evaluation. This includes real-func eval //cases where the EE is talking to vil. The only time this is cleared is when the interpreter is completely //disabled (as in the C# EE talks directly to vil). This flag is cleared in all non-Concord scenarios. DEBUGPROP150_INFO_ILINTERPRETER_BEING_USED = 0x04000000, // VS 15.0 DEBUGPROP150_INFO_FORCE_EVALUATION_NOW_WITH_EXT_SIDE_EFFECTS = 0x08000000 // To force evaluation now, same as EVAL90_FORCE_EVALUATION_NOW | EVAL150_ALLOW_EXTENDED_SIDE_EFFECTS. }; typedef DWORD DEBUGPROP150_INFO_FLAGS; typedef struct SymbolPathOption { SymbolPath Path; VARIANT_BOOL IsEnabled; } SymbolPathOption; [ uuid(bd717aa1-85b7-49c1-ab11-9c524c873647), version(1.0), pointer_default(unique), local ] interface ISymbolPathOptionList150 : IUnknown { // Returns the number of options in the list [propget, custom(uuid_CustomIdlAttrib, "nopreservesig")] HRESULT Count([out, retval] long *pVal); // Retrieves the option item with the given index. [propget, id(DISPID_VALUE), helpstring("property Item"), custom(uuid_CustomIdlAttrib, "nopreservesig")] HRESULT Item([in] long lIndex, [out, retval] SymbolPathOption *pVal); // Adds a new option to the list HRESULT Add([in] SymbolPath path, VARIANT_BOOL isEnabled); // Removes all options from the list HRESULT Clear(); // Creates a copy of this option list interface which can be used for storing existing option list [custom(uuid_CustomIdlAttrib, "nopreservesig")] HRESULT Clone([out, retval] ISymbolPathOptionList150** ppSymbolPathOptionList); // Removes option(s) with the given name HRESULT Remove([in] LPCOLESTR name); // Searches for an entry that matches the given name starting at the given index // Set useWildcard to true to use wildcard matching when searching for the entry // Returns the index of the matched item, -1 if not found [custom(uuid_CustomIdlAttrib, "nopreservesig")] HRESULT Find([in] long lStartIndex, [in] LPCOLESTR name, VARIANT_BOOL useWildcard, [out, retval] long* plIndex); }; [ uuid(d4cea00d-f3ed-49c9-9513-bc4fec8c6a98), version(1.0), pointer_default(unique), local ] interface IVsDebuggerSymbolSettings150 : IUnknown { // The list of 'user specified' symbol paths in the debugger. // Excludes built-in paths such as _NT_SYMBOL_PATH or Microsoft public symbol servers. [propget] HRESULT ExtendedSymbolPaths([out, retval] ISymbolPathOptionList150** ppSymbolPaths); }; enum enum_EXCEPTION_STATE150 { /************************************** EXCEPTION_NONE = 0x0000, EXCEPTION_STOP_FIRST_CHANCE = 0x0001, EXCEPTION_STOP_SECOND_CHANCE = 0x0002, EXCEPTION_STOP_USER_FIRST_CHANCE = 0x0010, EXCEPTION_STOP_USER_UNCAUGHT = 0x0020, EXCEPTION_STOP_ALL = 0x00FF, EXCEPTION_CANNOT_BE_CONTINUED = 0x0100, EXCEPTION_CODE_SUPPORTED = 0x1000, EXCEPTION_CODE_DISPLAY_IN_HEX = 0x2000, EXCEPTION_JUST_MY_CODE_SUPPORTED = 0x4000, EXCEPTION_MANAGED_DEBUG_ASSISTANT = 0x8000, ***************************************/ // Indicates that the exception category represents a set of VSCode exception filters. EXCEPTION_IS_VSCODE_FILTER = 0x10000, }; typedef DWORD EXCEPTION_STATE; // ------------------------------------------------------------------ // IDebugLostBreakStateEvent150 // A debug engine can send this event if it is forced out of break state for some reason. For // example, when debugging Javascript in a web browser, this event could be raised if the // browser is refreshed while the debugger is stopped at a breakpoint. [ object, uuid(33B3C3D1-9A81-4D9A-AD69-14D66148D818), pointer_default(unique) ] interface IDebugLostBreakStateEvent150 : IUnknown { };