// msdbg178.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 // Indicates that the property result is a truncated string, and the value returned via // GetPropertyInfo in the bstrValue field does not represent the full string in the // target. IDebugProperty::GetStringCharLength and GetStringChars can be used to obtain // the full string for string visualizers. Note that engines should generally impose a // maximum length of even the "full" string, so for very large strings, the result from // GetStringCharLength + GetStringChars may still be truncated. // NOTE: DBG_EXATTRIB_TRUNCATED_STRING is defined as the same value as DBG_EXATTRIB_CAN_EVALUATE_WITHOUT_OPTIMIZATION. // To differentiate them, DBG_EXATTRIB_TRUNCATED_STRING should never be used with DBG_ATTRIB_VALUE_ERROR. cpp_quote("#define DBG_EXATTRIB_TRUNCATED_STRING 0x0000000000000100") enum _DotnetVisualizerStyle { ModalDialog = 0x0000, ToolWindow = 0x0001 }; typedef DWORD DotnetVisualizerStyle; [ local, object, uuid(6184BE5C-3CB1-4B98-A610-4F61764483F1), pointer_default(unique) ] interface IDebugVisualizerExtensionListItem : IUnknown { HRESULT GetInfo( [out, annotation("_Out_")] GUID* pId, [out, annotation("_Out_")] BSTR* pDisplayName, [out, annotation("_Out_")] BSTR* pTargetTypeFullName, [out, annotation("_Out_")] BSTR* pTargetTypeAssemblyFullName, [out, annotation("_Out_")] BSTR* pDebuggeeSideVisualizerTypeFullName, [out, annotation("_Out_")] BSTR* pDebuggeeSideVisualizerTypeAssemblyFullName, [out, annotation("_Out_")] BSTR* pInstallDirectory, [out, annotation("_Out_")] DotnetVisualizerStyle* pStyle); }; // ------------------------------------------------------------------ // Represents a list of VS 17.8 IDebugVisualizerExtensionListItems that can be indexed like an array. // // 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(FFA6CA0A-9CDE-4F48-BFD3-3E02FE316D1D), pointer_default(unique) ] interface IDebugVisualizerExtensionList178 : IUnknown { [propget] HRESULT Count([out, retval, annotation("_Out_")] XINT32* pCount); [propget, id(DISPID_VALUE), helpstring("Item")] HRESULT Item([in] XINT32 index, [out, retval, annotation("_Outptr_")] IDebugVisualizerExtensionListItem** ppItem); HRESULT GetItems( [in] XINT32 index, [in] XINT32 count, [out, size_is(count), length_is(*pCountReturned), annotation("_Out_writes_to_(count, *pCountReturned)")] IDebugVisualizerExtensionListItem** ppItemsArray, [in, out, annotation("_Out_")] XINT32* pCountReturned); }; // Optional interface implemented by debug engines and the SDM [ local, object, uuid(36CD3D35-790A-45FC-8B4B-62D056C838A9), pointer_default(unique) ] interface IDebugVisualizerExtensionReceiver178 : IUnknown { // Called on startup and also when the visualizer collection changes. HRESULT SetVisualizerExtensions([in] IDebugVisualizerExtensionList178* collection); }; [ local, object, uuid(f48e9dae-f61d-4fa6-9396-eee7b269bbbf), pointer_default(unique) ] interface IDebugDefaultPort178 : IUnknown { /// /// Default transport supports different underlying channels, and each channel has a different port supplier id, /// this method returns this value. /// /// guidLocalPortSupplier for local debugging or remote with Windows authentication, /// guidNativePortSupplier for no-authentication or any other value for a custom channel /// S_OK on success HRESULT GetChannelPortSupplierId([out, retval, annotation("_Out_")] GUID* pId); }; /// /// Optional interface that a debug engine can implement on their IDebugExceptionEvent2 implementations /// to provide additional properties to the UI. /// [ local, object, uuid(2bf9dac6-eb17-42d9-90eb-4e23e3dbd997), pointer_default(unique) ] interface IDebugExceptionEvent178 : IUnknown { /// /// If the exception is being raised by an API in the target engine's base framework /// (example: the .NET Runtime/Base Class Library when debugging .NET), this method /// returns the name of the API being called. /// /// qualified method name (ex: System.String.Format) for the API /// being called or nullptr if this exception is not being throw by an API. /// S_OK if a method was returned, otherwise S_FALSE or a failure code HRESULT GetFrameworkAPIMethodName([out, annotation("_Deref_out_opt_")] BSTR* methodName); /// /// If the exception is being raised by an API in the target engine's base framework /// (example: the .NET Runtime/Base Class Library when debugging .NET), this method /// returns the framework portion of the call stack. In other words, the top frames /// of the call stack that are not part of the user's code. /// /// Newline-delimited framework call stack, or nullptr /// if this exception is not being throw by an API. /// S_OK if a method was returned, otherwise S_FALSE or a failure code HRESULT GetFrameworkAPIStack([out, annotation("_Deref_out_opt_")] BSTR* callStack); };