Microsoft.VisualStudio.Debugger.ComponentInterfaces Namespace

Interfaces

IDkmActiveScriptDebugMonitor

Interface implemented by the Script DM to provide direct access to the target script runtime.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmAfterSetNextStatementNotification

IDkmAfterSetNextStatementNotification implemented by components that wish to receive notification after a set next statement completed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmAppDomainCreatedNotification

IDkmAppDomainCreatedNotification is implemented by components that want to listen for the AppDomainCreated event. When this notification fires, the target process will be suspended and can be examined. AppDomainCreated is fired when an AppDomain is created by the target process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmAppDomainUnloadedNotification

IDkmAppDomainUnloadedNotification is implemented by components that want to listen for the AppDomainUnloaded event. When this notification fires, the target process will be suspended and can be examined. AppDomainUnloaded is fired when an AppDomain is unloaded by the target process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmAppPackageInfo

Interface to enumerate App Package information on the local or remote system.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: TransportKind.

IDkmAsyncBreak

This interface contains the API for performing an async-break on the debuggee process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmAsyncBreakCompleteNotification

IDkmAsyncBreakCompleteNotification is implemented by components that want to listen for the AsyncBreakComplete event. IDkmAsyncBreakCompleteNotification is invoked after all implementations of IDkmAsyncBreakCompleteReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Sent by a debug monitor after a request to async break the process has completed.

AsyncBreakComplete events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmAsyncBreakCompleteReceived

IDkmAsyncBreakCompleteReceived is implemented by components that want to listen for the AsyncBreakComplete event. IDkmAsyncBreakCompleteReceived is invoked before IDkmAsyncBreakCompleteNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Sent by a debug monitor after a request to async break the process has completed.

AsyncBreakComplete events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmAsyncStateMachineDecoder170
IDkmAsyncTaskDecoder

Walk async call stack and task creation stacks.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, RuntimeId, SymbolProviderId, TaskProviderId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmBaseFuncEvalService

Interface implemented by base debug monitors to allow resuming the process for a function evaluation. This interface contains the basic services utilized by 'ExecuteFuncEval'. Setup, cleanup, timeout handling, exception handling and completion detection are all handled by the higher-level debug monitors.

This interface is not provided for CLR v2 debugging.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmBaseNativeExecutionController

IDkmBaseNativeExecutionController is implemented by base debug monitors which support setting native breakpoints or single stepping over native instructions. It provides the advanced execution control primitives needed for CLR debugging.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmBeforeContinueExecutionNotification

Provides notification that the process is about to continue execution. This function is called before any relevant steppers are initialized, so func-evals can be executed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmBeforeStopDebuggingNotification

Provides notification that the process is about to be detached or terminated.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmBinaryLoadedNotification

IDkmBinaryLoadedNotification is implemented by components that want to listen for the BinaryLoaded event. When this notification fires, the target process will be suspended and can be examined. Indicates that we have successfully loaded the binary of a module in the minidump we are debugging.

BinaryLoaded events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmBinaryLocator

This interface contains methods implemented by the symbol provider to allow debug monitors to search for binaries on symbol servers and local disks. This is required because the symbol server APIs are not thread safe and the symbol provider owns access to them.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmBinaryLocator11a

Extends binary locator functionality.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1).

IDkmBinaryReloadOpportunityNotification

IDkmBinaryReloadOpportunityNotification is implemented by components that want to listen for the BinaryReloadOpportunity event. When this notification fires, the target process will be suspended and can be examined. While minidump debugging, raised by MinidumpBDM to relocate binary when user tries to manually load binary.

BinaryReloadOpportunity events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2).

IDkmBoundBreakpointHitNotification

IDkmBoundBreakpointHitNotification is implemented by components that want to listen for the BoundBreakpointHit event. IDkmBoundBreakpointHitNotification is invoked after all implementations of IDkmBoundBreakpointHitReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Provides notification that a bound breakpoint (DkmBoundBreakpoint) has been hit. Bound breakpoints are the high-level breakpoint objects. Notification for the low level breakpoints (DkmRuntimeBreakpoint) is obtained through the RuntimeBreakpoint event.

BoundBreakpointHit events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SourceId.

IDkmBoundBreakpointHitReceived

IDkmBoundBreakpointHitReceived is implemented by components that want to listen for the BoundBreakpointHit event. IDkmBoundBreakpointHitReceived is invoked before IDkmBoundBreakpointHitNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Provides notification that a bound breakpoint (DkmBoundBreakpoint) has been hit. Bound breakpoints are the high-level breakpoint objects. Notification for the low level breakpoints (DkmRuntimeBreakpoint) is obtained through the RuntimeBreakpoint event.

BoundBreakpointHit events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SourceId.

IDkmBreakpointConditionProcessor

Interface implemented on the target computer to handle evaluating breakpoint conditions and hit counts.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmBreakpointConditionProcessorClient

Implemented by callers of DkmRuntimeBreakpoint.SetCompiledConditionPending to provide compiled conditions when a breakpoint is hit.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmBreakpointConditionProcessorClient140

Implemented by callers of DkmRuntimeBreakpoint.SetCompiledConditionPending to provide compiled conditions when a breakpoint is hit.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmBreakpointConditionProcessorGpuExtension

Extension interface for GPU debugging, implemented on the target computer to handle evaluating breakpoint conditions.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmBreakpointConditionThreadSelectorForGpu

Interface implemented on the target computer to handle evaluating breakpoint conditions on all stopped threads and select the thread whose condition is true for GPU.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1).

IDkmBreakpointHitWithErrorNotification

IDkmBreakpointHitWithErrorNotification is implemented by components that want to listen for the BreakpointHitWithError event. IDkmBreakpointHitWithErrorNotification is invoked after all implementations of IDkmBreakpointHitWithErrorReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Provides a notification that a pending breakpoint was hit, but processing resulted in a non-recoverable error. The process is now stopped and the breakpoint is now in an error state and will not be hit again.

BreakpointHitWithError events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmBreakpointHitWithErrorReceived

IDkmBreakpointHitWithErrorReceived is implemented by components that want to listen for the BreakpointHitWithError event. IDkmBreakpointHitWithErrorReceived is invoked before IDkmBreakpointHitWithErrorNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Provides a notification that a pending breakpoint was hit, but processing resulted in a non-recoverable error. The process is now stopped and the breakpoint is now in an error state and will not be hit again.

BreakpointHitWithError events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmBreakpointManager

This interface is implemented by the Breakpoint Manager component to provide the default handling for breakpoints. Other components in the system may also implement this interface to remap the meaning of breakpoints for certain languages.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SourceId.

IDkmBreakpointManagerFileUpdate

Interface implemented by breakpoint managers which wish to receive notification when files are updated in the IDE.

Implementations of this interface are always called (no filtering is supported). To reduce memory impact, it is suggested that this interface be implemented in a small dll, or that the implementation is configured with 'CallOnlyWhenLoaded="true"'.

IDkmBreakpointManagerNotification

This interface is implemented by components that add breakpoints to the breakpoint manager (such as the AD7 AL). This allows a component to be notified when the breakpoint manager binds a breakpoint or detects a breakpoint error or warning.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SourceId.

IDkmCallStackFilter

Allows a component to add additional annotation to the call stack or remove physical frames from the call stack. For performance reasons, stack frame filters are invoked prior to evaluation by expression evaluators. One example stack frame filter is to hide external code in the call stack. Frame filters that add async stack walk contexts must have a priority of Normal or above.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TaskProviderId.

IDkmClrAppDomainNameChanged

Interface to update name of the AppDomain.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

IDkmClrCustomVisualizerObjectProvider

Instantiates the debuggee-side Custom Visualizer type in the debuggee and provides methods to access/modify the visualized object ('Visualizer Object').

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrCustomVisualizerObjectProvider1610
IDkmClrDebugMonitorExceptionCaughtNotification

IDkmClrDebugMonitorExceptionCaughtNotification is implemented by components that want to listen for the ClrDebugMonitorExceptionCaught event. When this notification fires, the target process will be suspended and can be examined. The 'ClrDebugMonitorExceptionCaught' event provides notification from the Managed Debug Monitor about a caught exception which occurred within the target process. This event is consumed by Diagnostic tools like IntelliTrace to be logged in their TraceDebugger.\n.

ClrDebugMonitorExceptionCaught events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmClrDecompiler

Provides Decompilation services for CLR types.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

IDkmClrDecompiler173
IDkmClrExceptionDetailsProvider

This interface allows debug monitors to provide additional information about CLR exceptions in the form of exception details.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, ExceptionCategory, RuntimeId.

This API was introduced in Visual Studio 15 Update 7 (DkmApiVersion.VS15Update7).

IDkmClrExpressionCompiler

Allows compilers for managed languages to compile expressions for use by the debugger to support expression evaluation and conditional breakpoints.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrExpressionCompilerCallback

Allows compilers for managed languages to compile expressions for use by the debugger to support expression evaluation. This interface contains methods that are called from the monitor.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrExpressionEvaluatorCallbackInternal

Internal methods used by the CLR Expression Evaluator to communicate between the monitor/IDE.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrFormatter

Formats values and type names of evaluation results into string appropriate for the language being debugged. Compiler vendors can implement this interface to customize value formatting for their language.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrFormatter2

Formats values of evaluation results into a string appropriate for the language being debugged. Compiler vendors can implement this interface to customize value formatting for their language. This interface is an addition to the IDkmClrFormatter interface.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmClrFrameGenericParameterProvider

Provides the ability to get the generic parameters for a stack frame.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrFrameTypesProvider

Used internally to query type information about a stack frame for Null Reference Exception information. This interface is subject to change in future versions of Visual Studio.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmClrFullNameProvider

Provides full names for certain expressions. Full names are used for the Add to Watch feature.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, RuntimeId.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmClrFullNameProvider2
IDkmClrInspectionQueryProcessor

Allows execution of queries that have been compiled to Managed IL.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, RuntimeId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrIntrinsicAssemblyProvider

Contains method to load the intrinsic methods assembly.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrMetaDataLoader

Methods to load metadata for modules that are not loaded in the debuggee process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrMetaDataProvider

Interface implemented by the managed DM to obtain the metadata from a given module.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmClrMetaDataProvider140

Added methods for accessing metadata that were added in VS14RTM.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrMetaDataProvider150

Added methods for accessing baseline (original) metadata.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5).

IDkmClrMethodSignatureHelper

Provides a method to get the signature token for a local variable signature given a method token. If the method has been modified via EnC, this method returns the latest blob token.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrModuleLookup

Obtains the DkmClrModuleInstance from an ICorDebugModule.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmClrNcInstructionAddressResolver

Interface for resolving type ref token to type def and the associated assembly.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

IDkmClrObjectFavoritesCacheCallback

Provides result formatters with object favorites information which is cached on the remote side.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 16 Update 4 (DkmApiVersion.VS16Update4).

IDkmClrPropertyInterpreter

Methods to evaluate property on ICorDebugValueHandles.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmClrPropertyInterpreter151

Methods to evaluate property on ICorDebugValueHandles.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3).

IDkmClrResultProvider

Provides DkmEvaluationResults given DkmClrValues. Compiler vendors can implement this interface to change the way values are expanded and presented to the user.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmClrRuntimeDebugMonitor

Interface implemented by the managed DM to obtain information about the current runtime state of the process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmClrRuntimeDebugMonitor150

Interface implemented by the managed DM to obtain information about the current runtime state of the process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5).

IDkmClrRuntimeDebugMonitorDirect

Interface implemented by the managed DM to provide expression evaluators and other components direct access to ICorDebug interfaces.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

IDkmClrSymbolCallback

This API allows an Expression Evaluator to obtain information contained within a CLR PDB File or CLR dynamic module symbol store.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SymbolProviderId.

IDkmClrSymbolCallback120

Enhancement to IDkmClrSymbolCallback to allow it to support ClrNc scenarios.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmClrSymbolCallback160

Symbol provider callback enhancements added for Visual Studio 2019.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

IDkmClrSymbolSignatureCallback

Provides APIs to expression evaluators to obtain the signature of local variables and constants.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SymbolProviderId.

IDkmClrSymUnmanagedReaderFactory

This API provides a partial implementation of ISymUnmanagedReader2 for a CLR module instance.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmClrTypeResolver

Interface for resolving types from strings into method id's or type id's.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmClrTypeRuntimeInfoProvider

Used internally to query ICorDebugType and size information from a DkmClrType. This interface is subject to change in future versions Visual Studio.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmClrUIVisualizerService

Implemented by expression evaluators which support the C# EE's method of custom viewers (i.e. IPropertyProxyEESide). This interface is subject to change in future releases.

Implementations of this interface are always called (no filtering is supported). To reduce memory impact, it is suggested that this interface be implemented in a small dll, or that the implementation is configured with 'CallOnlyWhenLoaded="true"'.

IDkmClrUIVisualizerService120

Implemented by expression evaluators which support the C# EE's method of custom viewers (i.e. IPropertyProxyEESide). This interface is subject to change in future releases.

Implementations of this interface are always called (no filtering is supported). To reduce memory impact, it is suggested that this interface be implemented in a small dll, or that the implementation is configured with 'CallOnlyWhenLoaded="true"'.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmClrValueInspectionCallback

Interface implemented to allow inspection of CLR values represented by DkmClrValues.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SymbolProviderId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmCompiledInspectionQueryProcessor

Provides execution of compiled inspection queries.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompiledInspectionQueryKind, CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmComputeKernelExitNotification

IDkmComputeKernelExitNotification is implemented by components that want to listen for the ComputeKernelExit event. The target process may continue to run during this notification. The event when a GPU compute kernel completes.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmContinueExecution

This interface contains the API for resuming execution after the engine has sent a stopping event to the Visual Studio debugger package. This interface should only be implemented by Base Debug Monitor components. Unlike nearly all other interfaces, one implementation of this interface may not chain to another implementation.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmCustomMessageCallbackReceiver

Implemented by components that wish to receive custom messages from another Concord component. This is interface is similar to IDkmCustomMessageForwardReceiver, except that this method requires that the caller be at a lower level in the component hierarchy than the component that receives the notification (ex: Base Debug Monitor -> AD7 AL). Implementers of this interface typically use a SourceId filter.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId, TransportKind.

IDkmCustomMessageForwardReceiver

Implemented by components that wish to receive custom messages from the IDE or from another Concord component. This is interface is similar to IDkmCustomMessageCallbackReceiver, except that this method requires that the caller be at a higher level in the component hierarchy than the component that receives the (ex: AD7 AL -> Base Debug Monitor). Implementers of this interface typically use a SourceId filter.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId, TransportKind.

IDkmCustomStopNotification

IDkmCustomStopNotification is implemented by components that want to listen for the CustomStop event. IDkmCustomStopNotification is invoked after all implementations of IDkmCustomStopReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

The CustomStop event allows a concord component to raise a stopping event to a custom UI component or to a higher level Concord component.

CustomStop events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId, TransportKind.

IDkmCustomStopReceived

IDkmCustomStopReceived is implemented by components that want to listen for the CustomStop event. IDkmCustomStopReceived is invoked before IDkmCustomStopNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

The CustomStop event allows a concord component to raise a stopping event to a custom UI component or to a higher level Concord component.

CustomStop events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId, TransportKind.

IDkmCustomVisualizer

This interface is implemented by custom expression evaluator visualizers in order to customize the view of an expression programmatically. This is normally done to support visualizations that are not possible using the native visualizer syntax or to enable visualization without full symbolic information. The visualizer can take complete control of the expression including expansion of children, or it can obtain the default expression from the expression evaluator, modify it slightly but defer other operations such as expansion back to the EE.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, RuntimeId, SourceId, SymbolProviderId, VisualizerId.

IDkmCustomVisualizerCallback

This interface is implemented the expression evaluator to allow an EE addin to callback to the expression evaluator.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, RuntimeId, SourceId, SymbolProviderId, VisualizerId.

IDkmDataBreakpointErrorInfoClient

Interface for data breakpoints failing after they have been bound.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmDataBreakpointHitNotification

IDkmDataBreakpointHitNotification is implemented by components that want to listen for the DataBreakpointHit event. IDkmDataBreakpointHitNotification is invoked after all implementations of IDkmDataBreakpointHitReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Provides a notification that a pending breakpoint was hit, with extra data breakpoint information. The process is now stopped with additional information.

DataBreakpointHit events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmDataBreakpointHitReceived

IDkmDataBreakpointHitReceived is implemented by components that want to listen for the DataBreakpointHit event. IDkmDataBreakpointHitReceived is invoked before IDkmDataBreakpointHitNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Provides a notification that a pending breakpoint was hit, with extra data breakpoint information. The process is now stopped with additional information.

DataBreakpointHit events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmDataBreakpointInfoProvider

Interface responsible for providing information relevant for a data breakpoint.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

IDkmDataBreakpointInfoProvider160

Extension to IDkmDataBreakpointInfoProvider to allow expression evaluators to provide a display name for data breakpoints.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmDebugMonitorExceptionNotification

IDkmDebugMonitorExceptionNotification is implemented by components that want to listen for the DebugMonitorException event. When this notification fires, the target process will be suspended and can be examined. The 'DebugMonitorException' event provides notification from debug monitors about exceptions which occur within the target process. This event notification is consumed by the exception manager, and by debug monitors operating at component levels above the debug monitor which detected the exception. Higher level components should use exception triggers instead. See DkmExceptionTrigger for more information.

If the exception is sent unhandled (DkmExceptionProcessingStage.Unhandled is set) then the IDE will stop. Other exceptions may stop depending on any DkmExceptionTriggers set by the AD7 AL or other components. The AD7 AL reads the default set of triggers from %VSRegistryRoot%\AD7Metrics\Exception%CategoryGuid%*.

DebugMonitorException events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId.

IDkmDeploymentCommandCallback

Callback interface implemented by callers of DkmDeploymentCommand.Start to receive notification of events in the deployment command.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SourceId, TransportKind.

IDkmDisassemblyFunctionLabelProvider

Provides symbols needed for formatting disassembly.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 16 Update 3 (DkmApiVersion.VS16Update3).

IDkmDisassemblyProvider

Used to disassemble instructions in the debuggee address space.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmDisassemblyRuntimeAddressResolver

Allows a runtime to provide address to symbol name resolution for use within the disassembly window.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 16 Update 7 (DkmApiVersion.VS16Update7).

IDkmDisassemblySymbolProvider

Provides symbols needed for formatting disassembly.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmDumpWriter

This interface contains the API for writing out a dump file of the debuggee process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmEditAndContinueService

Interface implemented by edit and continue engine to support status query service.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmEmbeddedBreakpointHitNotification

IDkmEmbeddedBreakpointHitNotification is implemented by components that want to listen for the EmbeddedBreakpointHit event. IDkmEmbeddedBreakpointHitNotification is invoked after all implementations of IDkmEmbeddedBreakpointHitReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Sent by the exception manager when an embedded breakpoint exception is encountered. Components beneath the exception manager must listen for the platform specific exception event instead.

EmbeddedBreakpointHit events can be suppressed. If this event reaches the AD7 layer, the debugger will enter break mode.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmEmbeddedBreakpointHitReceived

IDkmEmbeddedBreakpointHitReceived is implemented by components that want to listen for the EmbeddedBreakpointHit event. IDkmEmbeddedBreakpointHitReceived is invoked before IDkmEmbeddedBreakpointHitNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Sent by the exception manager when an embedded breakpoint exception is encountered. Components beneath the exception manager must listen for the platform specific exception event instead.

EmbeddedBreakpointHit events can be suppressed. If this event reaches the AD7 layer, the debugger will enter break mode.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmEmbeddedDocumentProvider

This API is used to retrieve source code documents that are embedded in a symbol file.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5).

IDkmEmbeddedDocumentProvider158

This API is used in vsdbg scenarios to determine if a given instruction is in an embedded document without obtaining the content of the document.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

IDkmEmbeddedDocumentProvider165

This API is used to check for the existence of embedded documents, enumerating embedded documents, and getting the document contents.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId.

This API was introduced in Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

IDkmEntryPointNotification

IDkmEntryPointNotification is implemented by components that want to listen for the EntryPoint event. IDkmEntryPointNotification is invoked after all implementations of IDkmEntryPointReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Fired from the breakpoint manager when the entry point breakpoint has been hit.

EntryPoint events cannot be suppressed. To override the entry point, implement IDkmEntryPointQuery.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmEntryPointReceived

IDkmEntryPointReceived is implemented by components that want to listen for the EntryPoint event. IDkmEntryPointReceived is invoked before IDkmEntryPointNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Fired from the breakpoint manager when the entry point breakpoint has been hit.

EntryPoint events cannot be suppressed. To override the entry point, implement IDkmEntryPointQuery.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmExceptionAnalyzer

Interface which allows a concord component to to analyze an exception and come up with an improved description of the problem.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId, SourceId.

This API was introduced in Visual Studio 14 Update 1 (DkmApiVersion.VS14Update1).

IDkmExceptionContinuedNotification

IDkmExceptionContinuedNotification is implemented by components that want to listen for the ExceptionContinued event. When this notification fires, the target process will be suspended and can be examined. ExceptionContinued is sent by a debug monitor when execution is resumed in the target process and the given exception has not been squashed. In other words, the target process will continue with its standard exception processing.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId.

IDkmExceptionController

IDkmExceptionController is implemented by runtime debug monitors which fire exception events (DkmExceptionInformation.OnDebugMonitorException()).

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId.

IDkmExceptionDetailsProvider

This interface allows debug monitors to provide additional information about exceptions in the form of exception details.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, ExceptionCategory, RuntimeId.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmExceptionDetailsProvider164

This interface allows for extended queries about an exception, specifically the original call stack.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, ExceptionCategory, RuntimeId.

This API was introduced in Visual Studio 16 Update 4 (DkmApiVersion.VS16Update4).

IDkmExceptionDetailsProvider173
IDkmExceptionFormatter

IDkmExceptionFormatter is implemented by runtime debug monitors which fire exception events. Unlike IDkmExceptionController, there is generally a single implementation of IDkmExceptionFormatter for each exception category. For example, while multiple base debug monitor implementations are able to detect Win32 exceptions, there only needs to be one formatter implementation.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId.

IDkmExceptionManager

Interface implemented by the exception manager component to allow exception triggers to be enabled or disabled.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmExceptionManager140

This is an updated version of IDkmExceptionManager, which was added for Visual Studio 14.0 to provide a means of removing exception triggers from the exception manager.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmExceptionStackTraceProvider

Allows a library that implements exception objects that maintain a captured stack trace to expose this stack trace to the debugger.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmExceptionTriggerHitNotification

IDkmExceptionTriggerHitNotification is implemented by components that want to listen for the ExceptionTriggerHit event. IDkmExceptionTriggerHitNotification is invoked after all implementations of IDkmExceptionTriggerHitReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

The 'ExceptionTriggerHit' event provides notification that a previously set DkmExceptionTrigger has been met.

ExceptionTriggerHit events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId, SourceId.

IDkmExceptionTriggerHitReceived

IDkmExceptionTriggerHitReceived is implemented by components that want to listen for the ExceptionTriggerHit event. IDkmExceptionTriggerHitReceived is invoked before IDkmExceptionTriggerHitNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

The 'ExceptionTriggerHit' event provides notification that a previously set DkmExceptionTrigger has been met.

ExceptionTriggerHit events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId, SourceId.

IDkmExceptionWinRTErrorExtractor

IDkmExceptionWinRTErrorExtractor is called by the exception manager to extract WinRT enhanced error info from a JavaScript/CLR/C++/etc exception.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId.

IDkmExtendedRegisters

Gets the extended registers from the thread context.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmFrameExceptionInterceptProvider

This interface is implemented by debug monitors that provide support for unwinding exceptions to a specific frame.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmFramePseudoLocalResultProvider

Allows providing additional nodes to be included in frame locals, identifiable by the pseudo register name.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

IDkmFuncEvalCompletedNotification

IDkmFuncEvalCompletedNotification is implemented by components that want to listen for the FuncEvalCompleted event. The target process may continue to run during this notification. The FuncEvalCompleted event is sent after a function evaluation has completed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmFuncEvalStartingNotification

IDkmFuncEvalStartingNotification is implemented by components that want to listen for the FuncEvalStarting event. The target process may continue to run during this notification. The FuncEvalStarting event is sent just before a function evaluation is started. In the case of nested break state, each new function evaluation will trigger another FuncEvalStarting event. In this scenario, the target stops, and a user performs an evaluation from the immediate window which triggers a FuncEvalStarting event. The user hits a breakpoint within their evaluated function, the user does a second evaluation from there which triggers a second FuncEvalStarting event. The user lets both evaluations complete and this triggers two FuncEvalCompleted events.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmFunctionTableProvider

Interface to provide access to the runtime function table of a process. A default implementation is provided by Microsoft's Native Debug Monitor which is able to find function tables in loaded Win32 modules and dynamic PData in live processes. This interface may be implemented by base debug monitors to provide runtime function table access for non-live processes (ex: minidumps).

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmGPUBreakpointBehaviorQuery

Interface for querying the GPU debugging breakpoint behavior.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmGPUComputeKernelOperation

Provides the compute kernel hierarchy, i.e., the thread group, compute vector and compute thread for view by the user.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmGPUDisassemblyQuery

Used to query raw disassembly in the GPU debuggee byte code.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmGPUEnvironmentFilter

Optional internal interface which can be implemented to customize the environment of the GPU target process before it is started. From the debug monitor side, this API, or IDkmGPUEnvironmentFilter, can be implemented.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId.

IDkmGPUMemoryOperation

Implemented by base debug monitors to provide access to the memory of the target GPU process. Base debug monitors are responsible for performing the memory I/O.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmGpuRaceHazardsAllowSameNotification

Interface to update components when 'IsGpuRaceHazardsAllowSameSettingEnabled' is enabled or disabled.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmGPURegisterOperation

Implemented by base debug monitors to provide access to the registers of the GPU compute thread.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmGPUSetMemoryAccessWarningOperation

IDkmGPUSetMemoryAccessWarningOperation is used to configure GPU memory access warnings on the debugged GPU device. It is implemented by base debug monitors which support reporting GPU Memory Access Exceptions.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmGPUSingleStepCompleteNotification

IDkmGPUSingleStepCompleteNotification is implemented by components that want to listen for the GPUSingleStepComplete event. IDkmGPUSingleStepCompleteNotification is invoked after all implementations of IDkmGPUSingleStepCompleteReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Sent when single stepping a GPU thread is complete. The event can be fired by a different thread from the request thread in the same warp.

GPUSingleStepComplete events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId.

IDkmGPUSingleStepCompleteReceived

IDkmGPUSingleStepCompleteReceived is implemented by components that want to listen for the GPUSingleStepComplete event. IDkmGPUSingleStepCompleteReceived is invoked before IDkmGPUSingleStepCompleteNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Sent when single stepping a GPU thread is complete. The event can be fired by a different thread from the request thread in the same warp.

GPUSingleStepComplete events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId.

IDkmGPUSymbolProviderCallback

Callback interface which is implemented by GPU symbol providers to provide information from the symbol store to base debug monitors.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SymbolProviderId.

IDkmGPUSymbolQuery

This API is used to read information about a symbol for DPC++.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

IDkmGPUSymbolQueryCallback

Allows remote components to obtain source position information for DPC++ when the symbol provider is on the VS machine.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

IDkmGPUTempBreakStepper

Interface implemented by GPU base debug monitors to enable temporary instruction breakpoints in stepping. The temporary instruction breakpoints are passed to ContinueDebugEvent.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId.

IDkmGroupCompiledInspectionQueryProcessor

Used to execute compiled group expression processing.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompiledInspectionQueryKind, CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmGroupLanguageExpressionEvaluator

This interface allows a language extension to provide the ability to evaluate expressions on a group of threads. It should generally be implemented by all language extensions.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmHeuristicStackWalker

IDkmHeuristicStackWalker is invoked by the stack provider. It is invoked when attempting to walk through frames without symbols.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmHiddenEntryPointNotification

IDkmHiddenEntryPointNotification is implemented by components that want to listen for the HiddenEntryPoint event. IDkmHiddenEntryPointNotification is invoked after all implementations of IDkmHiddenEntryPointReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Fired from the breakpoint manager when the entry point breakpoint has been hit in hidden code. The actual EntryPoint is delayed until we leave hidden code, and might not even be fired if we're unable to find an appropriate opening. The HiddenEntryPoint will be fired in addition for any behind-the-scenes work necessary.

HiddenEntryPoint events cannot be suppressed. To override the entry point, implement IDkmHiddenEntryPointQuery.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmHiddenEntryPointReceived

IDkmHiddenEntryPointReceived is implemented by components that want to listen for the HiddenEntryPoint event. IDkmHiddenEntryPointReceived is invoked before IDkmHiddenEntryPointNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Fired from the breakpoint manager when the entry point breakpoint has been hit in hidden code. The actual EntryPoint is delayed until we leave hidden code, and might not even be fired if we're unable to find an appropriate opening. The HiddenEntryPoint will be fired in addition for any behind-the-scenes work necessary.

HiddenEntryPoint events cannot be suppressed. To override the entry point, implement IDkmHiddenEntryPointQuery.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmHostingProcessShowNotification

Interface implemented by components that want to find out when active (non-hidden) debugging of a hosting process (ex: my_app.vshost.exe) begins.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmIISDebuggingServices

Interface to provide IIS debugging facilities to the SDM.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: TransportKind.

IDkmIISResolver

Interface to provide URL->Work process resolution on the Visual Studio computer.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: TransportKind.

IDkmIISResolver160

Interface to provide URL->Worker process resolution for profiling scenarios.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: TransportKind.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

IDkmIISResolver170
IDkmILFailureReasonResolver

Resolves a DkmILFailureReason into an error message.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompiledInspectionQueryKind, CompilerVendorId, EngineId, LanguageId, RuntimeId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmILInterpreter

Interface for interpreting IL.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmInlineFrameCount

This API is used to determine the number of inline frames at a location.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

IDkmInlineSourceSymbolQuery

This API is used to read inline symbol information.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmInstructionAddressOperator

Interface to provide runtime-specific operations for instruction addresses. For native and managed instructions, this service is provided by the symbol provider.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmInstructionAddressProvider

Interface to provide process specific instruction addresses.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmInstructionAddressResolver

Interface to provide runtime-specific CPU address resolution. This could be implemented either on server or client side (e.g. CLR native compilation).

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

IDkmInstructionPatchNotification

Interface implemented by components that wish to receive notification when the base debug monitor performs a memory write to the instruction stream. This interface may only be implemented in the monitor process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmInstructionStepper

Interface implemented by base debug monitors to provide instruction-level stepping primitives. This interface is consumed by runtime debug monitors to implement user-level execution control.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId.

IDkmInterceptExceptionCompletedNotification

IDkmInterceptExceptionCompletedNotification is implemented by components that want to listen for the InterceptExceptionCompleted event. IDkmInterceptExceptionCompletedNotification is invoked after all implementations of IDkmInterceptExceptionCompletedReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Sent by a debug monitor after an exception has been unwound to a specified frame.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmInterceptExceptionCompletedReceived

IDkmInterceptExceptionCompletedReceived is implemented by components that want to listen for the InterceptExceptionCompleted event. IDkmInterceptExceptionCompletedReceived is invoked before IDkmInterceptExceptionCompletedNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Sent by a debug monitor after an exception has been unwound to a specified frame.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmIntrinsicFunctionEvaluator

This interface allows an expression evaluator to specify intrinsic operations to be invoked through IL, which the EE is responsible for implementing.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: LanguageId, SourceId.

IDkmIntrinsicFunctionEvaluator140

This interface allows an expression evaluator to specify intrinsic operations to be invoked through IL, which the EE is responsible for implementing.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: LanguageId, SourceId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmJustMyCodeEnableNotification

Interface to update components when JustMyCode is enabled or disabled.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmJustMyCodeProvider

Interface to determine if a particular location is user code.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmLanguageAsyncStepper

This interface is implemented by languages to enable stepping behavior for async methods.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmLanguageConditionEvaluator

This interface is implemented by expression evaluators which live or the target computer and wish to support conditional breakpoints.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmLanguageExpressionCompiler

This interface allows a language extension to pre-compile breakpoint conditions so that the same expression may be quickly evaluated when the breakpoint is hit.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmLanguageExpressionEvaluator

This interface allows a language extension to provide the ability to evaluate expressions in the various data inspection windows of the debugger (watch, autos, immediate, memory, disassembly, etc). It should generally be implemented by all language extensions.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmLanguageFrameDecoder

This interface allows a language extension to format the display of function names in the call stack window.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmLanguageInstructionDecoder

This interface allows a language extension to format the display of the 'Function' column in the breakpoints window, and other places that attempt to format an instruction address.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmLanguageObjectIdProvider

This is an optional interface implemented by expression evaluators. It should be implemented by expression evaluators which return evaluation results with the 'CanHaveObjectId' flag.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId, SymbolProviderId.

IDkmLanguageReturnValueEvaluator

This interface allows a language extension to evaluate return values as collected by a runtime during stepping.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmLanguageReturnValueEvaluator2

This interface allows a language extension to evaluate return values as collected by a runtime during stepping. This is a replacement for IDkmLanguageReturnValueEvaluator that allows components to retrieve data items associated with the return value.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, RuntimeId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmLanguageStepIntoFilterCallback

This interface allows a language extension to affect the Step-Into behavior of the native runtime.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId.

IDkmLaunchResumeProcess

IDkmLaunchResumeProcess is used to launch and resume a process. It is called from the debug monitor in F5, and from the transport in Ctrl-F5.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmLaunchResumeProcess150

Extension to IDkmLaunchResumeProcess to support passing the created DkmProcess during resume.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3).

IDkmLoadCompleteNotification

IDkmLoadCompleteNotification is implemented by components that want to listen for the LoadComplete event. When this notification fires, the target process will be suspended and can be examined. LoadComplete is sent by the base debug monitor when launching or attaching to the process has completed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmManagedAsyncTaskDecoder

Obtains information to construct continuation frames of a managed task.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, SymbolProviderId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmManagedFuncEvalQuickAbortServices

Interface to support managed func-eval quick abort.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmManagedFuncEvalServices

Interface provided by the managed debug monitor to continue the process for a managed function evaluation.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmManagedFuncEvalServices150

Interface provided by the managed debug monitor to continue the process for a managed function evaluation.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmManagedHeapPathsToRootProvider
IDkmManagedHeapSampler

Interface implemented by sampler to obtain sampled managed heap.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, RuntimeId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmManagedHeapWalker

Interface implemented by managed dm to allow walking the managed heap.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, RuntimeId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmManagedReturnValueFetcher

Obtains managed return value information from ManagedDM for evaluation.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmManagedSteppingCodePathProvider

Used by ManagedDM to query code path info.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmManagedTaskServices

Provides services to task providers and to Debug Monitors for getting managed task information. This is implemented by the Shim Managed EE.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmManagedTaskServices158

Provides services to task providers and to Debug Monitors for getting managed task information. This is implemented by the CLR Inspector. This interface is subject to change in future releases.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, RuntimeId.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

IDkmManagedThreadProperties

Exposes properties of a managed thread such as Managed Thread ID.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmMCppSymbolProvider

Symbol provider for managed C++.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 14 Update 1 (DkmApiVersion.VS14Update1).

IDkmMemoryOperation

Implemented by base debug monitors to provide access to the memory of the target process. This interface is also implemented by higher level components to provide memory caching. Base debug monitors are responsible for performing the memory I/O, maintaining a table of invisible writes, and providing events when the invisible write table is updated (via DkmProcess.OnInstructionPatchInserted/Removed).

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmMergedMonitorStackWalk

IDkmMergedMonitorStackWalk is invoked by the stack provider. It will arbitrate between the various implementations of IDkmMonitorStackWalk to walk portions of the stack which should be walked inside the monitor (instead of walked inside the engine).

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmMergedMonitorStackWalk164

IDkmMergedMonitorStackWalk164 is invoked by the stack provider. It will arbitrate between the various implementations of IDkmMonitorStackWalk to walk portions of the stack which should be walked inside the monitor (instead of walked inside the engine).

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

This API was introduced in Visual Studio 16 Update 4 (DkmApiVersion.VS16Update4).

IDkmMinidumpQuery

Obtains information about the minidump being debugged.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmMinidumpQuery1610
IDkmMinidumpThreadInfo
IDkmModuleCreateNotification

IDkmModuleCreateNotification is implemented by components that want to listen for the ModuleCreate event. The target process may continue to run during this notification. ModuleCreate is sent when a symbol provider loads a new symbols, and thus a new DkmModule is created. A DkmModule will exist only for module instances that have symbols.

ModuleCreate events can be suppressed. In this case the module will be invisible to components above the level where the module was suppressed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

IDkmModuleInstanceDisabledNotification

Interface implemented by debug monitors to perform any updates when the 'Disabled' property of a module changed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmModuleInstanceLoadNotification

IDkmModuleInstanceLoadNotification is implemented by components that want to listen for the ModuleInstanceLoad event. When this notification fires, the target process will be suspended and can be examined. ModuleInstanceLoad is fired when a module is loaded by a target process. Among other things, this event is used for symbol providers to load symbols, and for the breakpoint manager to set breakpoints. ModuleInstanceLoad fires for all modules, even if there are no symbols loaded.

ModuleInstanceLoad events can be suppressed. In this case the module will be invisible to components above the level where the module was suppressed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmModuleInstanceUnloadNotification

IDkmModuleInstanceUnloadNotification is implemented by components that want to listen for the ModuleInstanceUnload event. When this notification fires, the target process will be suspended and can be examined. ModuleInstanceUnload is sent when the monitor detects that a module has unloaded from within the target process.

ModuleInstanceUnload events cannot be suppressed. However, if the ModuleLoad event was suppressed then ModuleUnload will stop processing at the level where ModuleLoad was suppressed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmModuleLocator

Interface implemented by debug monitors that support debugging dumps to allow the UI to search for binaries that were not found when the dump originally loaded. The symbol path is updated by the UI if the user chooses a path when searching for the binary.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmModuleMetadataStatusQuery

When managed minidump debugging, determines whether metadata is available for a given module instance.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmModuleModifiedNotification

Components should implement this interface to be informed of when a module changes due to EnC or dynamically emitted code.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmModuleSymbolsLoaded

Interface implemented by base debug monitors to fire a symbols loaded event.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmModuleSymbolsLoadedNotification

IDkmModuleSymbolsLoadedNotification is implemented by components that want to listen for the ModuleSymbolsLoaded event. When this notification fires, the target process will be suspended and can be examined. ModuleSymbolsLoaded is sent after symbols have been loaded for a particular module instance. This is sent either when symbols are loaded as a dll/exe loads in the target process, or after the user asks to reload symbols.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmModuleSymbolsReload

Allows a for replacing the symbol file underlying a DkmModule.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

IDkmModuleSymbolsReplacedNotification

IDkmModuleSymbolsReplacedNotification is implemented by components that want to listen for the ModuleSymbolsReplaced event. The target process may continue to run during this notification. ModuleSymbolsReplaced is fired when an module's symbols have been replaced. Typically, because of operations such as decompilation.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

IDkmModuleSymbolsUpdatedNotification

IDkmModuleSymbolsUpdatedNotification is implemented by components that want to listen for the ModuleSymbolsUpdated event. When this notification fires, the target process will be suspended and can be examined. ModuleSymbolsUpdated is sent by a debug monitor when dynamic code in the target process updates the symbol state.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmModuleUserCodeDeterminer

Interface implemented to provide Just-My-Code status for modules. To support the modules window, this interface should be implemented in an IDE component, but it can also be implemented on the monitor side if this is useful. Microsoft implements this interface on the monitor side for managed code, but not native.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmMonitorStackWalk

Examines the portion of the stack which is from a particular DkmRuntimeInstance and returns frames from this runtime. IDkmMonitorStackWalk is used to do this walking on the target computer, and generally does this walk without symbols. It should be noted that accurate monitor stack walk generally requires either: 1. The runtime monitor to fully understand the calling convention of its underlying runtime AND the runtime employs some mechanism so that it doesn't need code from other runtimes which are on the stack to be walked. For example, the CLR maintains stack ranges so when managed code calls off into native, the CLR can still find the managed code without needing to walk through native. -or- 2. A uniform calling convention that all code needs to follow. For example, all code must follow a uniform calling convention on x64 and IA-64 versions of Windows. Microsoft will provide five implementations of IDkmMonitorStackWalk: 1. An implementation for ICorDebug v2 2. An implementation for ICorDebug v4 3. An implementation for x64/ia64 PDATA walking. 4. An implementation for ActiveScript. 5. A default implementation that bundles together unknown regions to be walked in the engine process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

IDkmNameUndecorator

This API is used to undecorate symbol names. Microsoft provides an implementation of this to undecorate symbol names in PDBs.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

IDkmNativeCppEditAndContinueNotification

Interface implemented by components to listen to Native ENC notifications.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmNativeDebuggingEnableNotification

Interface to update components when native debugging is enabled or disabled for a particular process. Note that for Visual Studio 11, native debugging cannot be enabled/disabled on the fly, but future versions may support this functionality.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmNativeEditAndContinueUpdate

Interface implemented by native edit and continue engine to provide apply pending code change, validation and commit.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmNativeEditAndContinueUpdate140A

Interface implemented by native edit and continue engine to allow cancellation.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 14 Update 1 (DkmApiVersion.VS14Update1).

IDkmNativeExportsEnableNotification

Interface to update components when 'IsNativeExportsEnabled' is enabled or disabled.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmNativeExportTableDecoder

Provides decoding of export tables in Windows PE files.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmNativeExportTableDecoder150

Provides additional decoding of export tables in Windows PE files.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmNativeJustMyCodeProvider158

Interface to determine if a particular location is user code.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

IDkmNativeJustMyCodeSteppingEnableNotification

Interface to update components when native JustMyCode stepping is enabled or disabled.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

IDkmNativeStackCallback

Provides a mechanism for the Base Debug Monitor and Native Debug Monitor to obtain information about the stack frames that may require symbol support.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmNativeSteppingCallSiteProvider

Called by Native IDkmSteppingCodePathDecoder implementer to enumerate Native CodePaths.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmNativeSymbolProviderCallback

Callback interface which is implemented by the PDB symbol provider for returning information about symbols to the base debug monitor. This interface should generally be implemented on the Visual Studio computer. Debug monitor side implementations may not be called.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SymbolProviderId.

IDkmNativeSymbolProviderCallback120a

Optional interface that may be implemented by native symbol providers and consumed by the native DM to allow stepping. If not implemented, the native DM will fall back to IDkmNativeSymbolProviderCallback.GetNativeInstructionMetadataCallback and IDkmSymbolProviderCallback.GetSteppingRanges.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmNonDebugProcessExitNotification
IDkmObjectFavoritesProvider

Provides the IDE with the functionality add and remove favorite items on objects in the EE windows.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, EngineId, LanguageId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 16 Update 4 (DkmApiVersion.VS16Update4).

IDkmOutOfBandExceptionNotification

IDkmOutOfBandExceptionNotification is implemented by components that want to listen for the OutOfBandException event. When this notification fires, the target process will be suspended and can be examined. The 'OutOfBandException' event provides notification from debug monitors about out-of-band exceptions which occur within the target process while managed/native interop debugging. This event notification is consumed by the exception manager. Out-of-band events can occur at any time (including when stopped) and must be continued immediately.

OutOfBandException events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, ExceptionCategory, RuntimeId.

This API was introduced in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1).

IDkmOutOfBandProcessContinueNotification

Provides notification when the target process is about to be resumed from an out of band debug event while doing managed-native interop debugging on the in-process pipeline.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1).

IDkmOutOfProcessSymbolLoadingEnabledNotification

Interface to update components when loading native symbols out of process is enabled or disabled.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

IDkmPendingFileLineBreakpointCallback

This interface is implemented by components that wish to add DkmPendingFileLineBreakpoint objects to the breakpoint manager. The breakpoint manager will query for the current location on the first bind and during an Edit-and-Continue apply.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SourceId.

IDkmPerformanceMeasurement140

Interface used to gather performance data from the debuggee.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmProcessContinueNotification

Provides notification when the target process is about to be resumed. This will be fired after the user hits F5, begins a func-eval, a pausing event is complete (ex: module load) or a stopping event is complete. This primary purpose of this event is to allow components to flush any caches that they have.

This notification may be fired from any thread, but will not be fired reentrantly.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmProcessCreateNotification

IDkmProcessCreateNotification is implemented by components that want to listen for the ProcessCreate event. When this notification fires, the target process will be suspended and can be examined. ProcessCreate is fired when a DkmProcess object is created. This indicates that the debugger has started attaching to the specified process. In launch scenarios, this event is fired before any code in the target process is allowed to run.

Implementations can only crudely filter based on the type of code in the target process, and handlers also will run while the UI thread is blocked waiting for the engine to return. For these reasons, is is often better to listen for the RuntimeInstanceLoad event instead.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmProcessDebuggerInitializeWaiter

Optional interface implemented by base debug debug monitors which use the same event thread for multiple processes.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmProcessExecutionNotification

Provides notification that the process is about to pause or resume execution.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmProcessExitNotification

IDkmProcessExitNotification is implemented by components that want to listen for the ProcessExit event. The target process may continue to run during this notification. ProcessExit is fired when the debugger is no longer debugging the specified process. This can either be because the debugger has detached from the specified process or because the process exited.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmProcessLaunchEnvironmentFilter

Optional interface which can be implemented to customize the environment of the target process before it is started. It is possible to customize the environment from two points. From the IDE side, the caller of LaunchDebugTargets may specify an environment block. From the debug monitor side, this API can be implemented. This API is suggested if either the IDE side doesn't have enough information to correctly specify the environment, or if the extension doesn't control the call to LaunchDebugTargets.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId.

IDkmProcessLaunchEnvironmentFilter140

Optional interface which can be implemented to customize the environment of the target process before it is started. This is an updated version of IDkmProcessLaunchEnvironmentFilter which was added for Visual Studio 14.0 to provide additional information to environment filters. Visual Studio 14+ will call both the old and new API, so a component should generally not implement both interfaces.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmProcessQueryOperation

Queries state about the debuggee process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmProcessSnapshotAddedNotification

IDkmProcessSnapshotAddedNotification is implemented by components that want to listen for the ProcessSnapshotAdded event. The target process may continue to run during this notification. ProcessSnapshotAdded is fired when a DkmProcessSnapshot is created and added to the associated DkmProcess.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6).

IDkmProcessSnapshotRemovedNotification

IDkmProcessSnapshotRemovedNotification is implemented by components that want to listen for the ProcessSnapshotRemoved event. The target process may continue to run during this notification. ProcessSnapshotRemoved is fired when a DkmProcessSnapshot is removed from the associated DkmProcess.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6).

IDkmProductionAgent

Agent operations relating to production diagnostics. The agent will be launched with STDIN and STDOUT redirected. A client can write to STDIN by sending a UTF8 string through the SendMessage method. When the process writes to STDOUT, DkmCustomMessage::SendToVsService is invoked with the source id set to DkmProductionAgent::UniqueId and the UTF8 encoded contents in param1.

Implementations of this interface are always called (no filtering is supported). To reduce memory impact, it is suggested that this interface be implemented in a small dll, or that the implementation is configured with 'CallOnlyWhenLoaded="true"'.

This API was introduced in Visual Studio 15 Update 2 (DkmApiVersion.VS15Update2).

IDkmProductionConnection

Operations relating to production diagnostics.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: TransportKind.

This API was introduced in Visual Studio 15 Update 2 (DkmApiVersion.VS15Update2).

IDkmRecordedProcessInfoProvider

Interface implemented by the base DM services to provide a recorded process information without debugging it.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: TransportKind.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmRegisterWrite

Provides the ability to read or write a register value by CV constant.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmRequireFullTrustForSourceServerNotification

Interface to update components when RequireFullTrustForSourceServer is enabled or disabled.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmReturnValuesNotification

IDkmReturnValuesNotification is implemented by components that want to listen for the ReturnValues event. The target process may continue to run during this notification. The ReturnValues event is sent during a step, when one or more DkmRawReturnValues have been collected. The actual evaluation will be performed on the StepComplete event on the thread where the Return Values were recorded.

ReturnValues events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmRunningProcessInfoProvider

Interface implemented by the base DM services to provide a process listing, and provide basic information about running processes without attaching a debugger to the process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: TransportKind.

IDkmRunningProcessInfoProvider160

Interface implemented by the base DM services to provide a process listing, and provide basic information about running processes without attaching a debugger to the process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: TransportKind.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

IDkmRuntimeBreakpointConditionFailedNotification

IDkmRuntimeBreakpointConditionFailedNotification is implemented by components that want to listen for the RuntimeBreakpointConditionFailed event. IDkmRuntimeBreakpointConditionFailedNotification is invoked after all implementations of IDkmRuntimeBreakpointConditionFailedReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Provides a notification that a runtime breakpoint was hit, but a breakpoint condition encounters a runtime error.

RuntimeBreakpointConditionFailed events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 16 Update 3 (DkmApiVersion.VS16Update3).

IDkmRuntimeBreakpointConditionFailedReceived

IDkmRuntimeBreakpointConditionFailedReceived is implemented by components that want to listen for the RuntimeBreakpointConditionFailed event. IDkmRuntimeBreakpointConditionFailedReceived is invoked before IDkmRuntimeBreakpointConditionFailedNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Provides a notification that a runtime breakpoint was hit, but a breakpoint condition encounters a runtime error.

RuntimeBreakpointConditionFailed events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 16 Update 3 (DkmApiVersion.VS16Update3).

IDkmRuntimeBreakpointHitWithErrorNotification

IDkmRuntimeBreakpointHitWithErrorNotification is implemented by components that want to listen for the RuntimeBreakpointHitWithError event. IDkmRuntimeBreakpointHitWithErrorNotification is invoked after all implementations of IDkmRuntimeBreakpointHitWithErrorReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Provides a notification that a runtime breakpoint was hit, but processing resulted in a non-recoverable error. The process is now stopped and the breakpoint is now in an error state and will not be hit again.

RuntimeBreakpointHitWithError events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmRuntimeBreakpointHitWithErrorReceived

IDkmRuntimeBreakpointHitWithErrorReceived is implemented by components that want to listen for the RuntimeBreakpointHitWithError event. IDkmRuntimeBreakpointHitWithErrorReceived is invoked before IDkmRuntimeBreakpointHitWithErrorNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Provides a notification that a runtime breakpoint was hit, but processing resulted in a non-recoverable error. The process is now stopped and the breakpoint is now in an error state and will not be hit again.

RuntimeBreakpointHitWithError events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmRuntimeBreakpointNotification

IDkmRuntimeBreakpointNotification is implemented by components that want to listen for the RuntimeBreakpoint event. IDkmRuntimeBreakpointNotification is invoked after all implementations of IDkmRuntimeBreakpointReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Provides notification that a runtime breakpoint (DkmRuntimeBreakpoint) has been hit. Runtime breakpoints are the low-level breakpoint objects. Notification for the higher level breakpoints (DkmPendingBreakpoint/DkmBoundBreakpoint) is obtained through the BoundBreakpointHit event.

RuntimeBreakpoint events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmRuntimeBreakpointReceived

IDkmRuntimeBreakpointReceived is implemented by components that want to listen for the RuntimeBreakpoint event. IDkmRuntimeBreakpointReceived is invoked before IDkmRuntimeBreakpointNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Provides notification that a runtime breakpoint (DkmRuntimeBreakpoint) has been hit. Runtime breakpoints are the low-level breakpoint objects. Notification for the higher level breakpoints (DkmPendingBreakpoint/DkmBoundBreakpoint) is obtained through the BoundBreakpointHit event.

RuntimeBreakpoint events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmRuntimeDataBreakpointHitNotification

IDkmRuntimeDataBreakpointHitNotification is implemented by components that want to listen for the RuntimeDataBreakpointHit event. IDkmRuntimeDataBreakpointHitNotification is invoked after all implementations of IDkmRuntimeDataBreakpointHitReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Provides notification that a runtime data breakpoint breakpoint has been hit.

RuntimeDataBreakpointHit events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmRuntimeDataBreakpointHitReceived

IDkmRuntimeDataBreakpointHitReceived is implemented by components that want to listen for the RuntimeDataBreakpointHit event. IDkmRuntimeDataBreakpointHitReceived is invoked before IDkmRuntimeDataBreakpointHitNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Provides notification that a runtime data breakpoint breakpoint has been hit.

RuntimeDataBreakpointHit events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmRuntimeDisassemblyProvider

Used to disassemble instructions in the debuggee address space with respect to a specific runtime.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmRuntimeFunctionResolver

This interface is implemented by expression evaluators which are loaded on the target computer to map between a function/address expression and the instructions which are represented by it. This is used to bind function breakpoints. In addition to expression evaluators, this interface may also be implemented by other components which may want to bind function breakpoints using data from the target process (ex: native export function breakpoints).

Components filtering based on LanguageId and/or VendorId should ensure that Guid.Empty is one of the accepted values in their filter. See DkmRuntimeFunctionResolutionRequest.CompilerId for more information.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId.

IDkmRuntimeFunctionResolverClient

This interface is implemented by the breakpoint manager so it can receive notification that a runtime function resolution request has resolved into a new function.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId.

IDkmRuntimeHandleComparer

This interface allows Concord components to compare two ICorDebugHandleValue objects' values by routing the calls to GetValue through the shim EE in order to have the proper LocalContext set up. Calling GetValue directly on a ICorDebugHandleValue object from Concord will result in an exception thrown from the VIL host.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmRuntimeInstanceLoadCompleteNotification

IDkmRuntimeInstanceLoadCompleteNotification is implemented by components that want to listen for the RuntimeInstanceLoadComplete event. When this notification fires, the target process will be suspended and can be examined. RuntimeInstanceLoadComplete is sent by the base debug monitor when launching or attaching to the process has completed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2).

IDkmRuntimeInstanceLoadNotification

IDkmRuntimeInstanceLoadNotification is implemented by components that want to listen for the RuntimeInstanceLoad event. The target process may continue to run during this notification. RuntimeInstanceLoad is fired when a DkmRuntimeInstance object is created. This event can be used to detect that a particular type of code (ex: native) is now being debugged in this target process. In launch scenarios, the RuntimeInstanceLoad event will be fired before any code of the specified type has a chance to run in the target process. When debugging native code, this includes all code in the target process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmRuntimeInstanceUnloadNotification

IDkmRuntimeInstanceUnloadNotification is implemented by components that want to listen for the RuntimeInstanceUnload event. The target process may continue to run during this notification. RuntimeInstanceUnload is fired when an execution environment unloads from the target process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmRuntimeManagedHardwareDataBreakpointInfoProvider

Provides CLR values for managed hardware data bps.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).

IDkmRuntimeMonitorBreakpointHandler

Provides services to set and remove breakpoints. This interface is implemented by the Debug Monitor for most runtimes. The implementation must use a data item to track the lifetime of each enabled DkmRuntimeBreakpoint so that it can implicitly disable the breakpoint when the DkmRuntimeBreakpoint is closed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmRuntimeSetNextStatement

IDkmRuntimeSetNextStatement is the interface runtime monitors implement to support set next statement.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmRuntimeStepper

IDkmRuntimeStepper is the interface runtime monitors implement to support stepping.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmScriptDocumentContentInsertNotification

IDkmScriptDocumentContentInsertNotification is implemented by components that want to listen for the ScriptDocumentContentInsert event. The target process may continue to run during this notification. Notification that new content has been added to the target process. For aggregate documents (DkmScriptDocumentFlags.AggregateDocument is set), this is a new document section.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmScriptDocumentContentRemoveNotification

IDkmScriptDocumentContentRemoveNotification is implemented by components that want to listen for the ScriptDocumentContentRemove event. The target process may continue to run during this notification. Notification that content has been removed from the target process. For aggregate documents (DkmScriptDocumentFlags.AggregateDocument is set), this will correspond to a deleted text section.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmScriptDocumentProvider

Implemented by components which create DkmScriptDocument objects in order to provide document content and notifications when the content changes.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmScriptDocumentQuery

API implemented by the script local agent to match script documents against breakpoint requests.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmScriptDocumentSourceProjectItemChanged

Interface to update components when the project item path is set for a script document.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmScriptDocumentSymbolProvider

Implemented by components which create DkmScriptDocument objects, and use them as the basis of symbol resolution. This interface doesn't need to be implemented by script document system which leave DkmResolvedDocument.ScriptDocument as null.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

IDkmScriptDocumentTreeNodeCreateNotification

IDkmScriptDocumentTreeNodeCreateNotification is implemented by components that want to listen for the ScriptDocumentTreeNodeCreate event. When this notification fires, the target process will be suspended and can be examined. Notification when a new DkmScriptDocumentTreeNode object is created.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

IDkmScriptDocumentTreeNodeUnloadNotification

IDkmScriptDocumentTreeNodeUnloadNotification is implemented by components that want to listen for the ScriptDocumentTreeNodeUnload event. The target process may continue to run during this notification. Notification that a DkmScriptDocumentTreeNode has been unloaded from the target process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId.

IDkmScriptJmcStateChangeNotification

IDkmScriptJmcStateChangeNotification is implemented by components that want to be notified when the JMC state changes for a script document.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmScriptSymbolCallback

Callback interface implemented by script symbol providers in order to support stepping customizations for languages that compile to JavaScript (or possibly other script languages as well).

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

IDkmScriptSymbolsUpdatedNotification

IDkmScriptSymbolsUpdatedNotification is implemented by components that want to listen for the ScriptSymbolsUpdated event. When this notification fires, the target process will be suspended and can be examined. Notification that symbol state for one or more script documents have been updated. This is used to rebind breakpoints in script-based modules.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmSerializedProcessInfoProvider
IDkmSerializedProcessInfoProviderFactory
IDkmSetNextStatementQuery

Allows the UI to query if the current instruction can be set to an address. Must be implemented on the Client side as it can be called in scenarios requiring a fast result such as dragging the IP in the debugger editor.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmSingleStepCompleteNotification

IDkmSingleStepCompleteNotification is implemented by components that want to listen for the SingleStepComplete event. IDkmSingleStepCompleteNotification is invoked after all implementations of IDkmSingleStepCompleteReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Sent when single stepping a thread is complete.

SingleStepComplete events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId.

IDkmSingleStepCompleteReceived

IDkmSingleStepCompleteReceived is implemented by components that want to listen for the SingleStepComplete event. IDkmSingleStepCompleteReceived is invoked before IDkmSingleStepCompleteNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Sent when single stepping a thread is complete.

SingleStepComplete events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SourceId.

IDkmSourceLinkQuery

This API is used to read Source Link information.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 15 RTM (DkmApiVersion.VS15RTM).

IDkmSourceLinkSymbolQuery
IDkmSourceServerSymbolQuery

This API is used to read information about source server data from a symbol provider.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

IDkmStackProvider

Provides the stack for view by the user. This stack has been filtered, annotated, and mixed together.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmStackWalkFrameAnnotationTextProvider

Provides the prefix text for a stack frame annotation.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SourceId.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

IDkmStackWalkFrameInterfaceProvider

This interface is implemented by components that contribute stack frames, and wish to provide an additional inspection interface for expression evaluators and other components that need to inspect the stack frame.

NOTE: The data container API should not be used from the implementation of the returned custom interface.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmStackWalkFrameInterfaceProvider2

This interface is implemented by the managed debug monitor and provides access to the ICorDebugFrame.

NOTE: The data container API should not be used from the implementation of the returned custom interface.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmStartDebuggingOperations

This interface contains the API for launching a new process under the debugger or attaching the debugger to an existing process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmStepCompleteNotification

IDkmStepCompleteNotification is implemented by components that want to listen for the StepComplete event. IDkmStepCompleteNotification is invoked after all implementations of IDkmStepCompleteReceived. When this notification is called, the target process is stopped and implementers are able to either inspect the process or cause it to execute in a controlled manner (slip, func-eval).

Sent by a runtime monitor when a step has completed successfully. Note that the step might actually finish on a different thread than it was started on.

StepComplete events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmStepCompleteReceived

IDkmStepCompleteReceived is implemented by components that want to listen for the StepComplete event. IDkmStepCompleteReceived is invoked before IDkmStepCompleteNotification. From within this notification, it is not possible to cause the target process to execute (no func-eval, no slipping).

Sent by a runtime monitor when a step has completed successfully. Note that the step might actually finish on a different thread than it was started on.

StepComplete events can be suppressed by calling DkmEventDescriptorS.Suppress().

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmStepOverPropertiesAndOperatorsEnableNotification

Interface to update components when 'IsStepOverPropertiesAndOperatorsEnabled' is enabled or disabled.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmSteppingCodePathProvider

Used by AD7 to get step into specific options.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, RuntimeId, SymbolProviderId.

IDkmSteppingManager

Interface of the stepping manager. This component is implemented by Microsoft and it provides stepping arbitration between the various debug monitors active in the process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmSteppingManagerCallback

Allows runtime monitors to obtain information from the stepping manager.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

IDkmSteppingManagerCallback11a

Extends the information runtime monitors can obtain from the stepping manager.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SourceId.

This API was introduced in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1).

IDkmSteppingManagerCallback169
IDkmStopDebuggingOperations

This interface contains the API for stop debugging. These interface must be implemented by base debug monitors. It is also possible to implement this interface in order to customize the stop debugging experience for a particular application. For example, a component could re-implement Terminate so that the debugger would gracefully shutdown the application instead of using the TerminateProcess Win32 API.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmStowedExceptionProvider

Interface implemented by the Minidump BDM in order to query for Stowed Exception information.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3).

IDkmSuppressOptimizationsEnableNotification

Interface to update components when 'IsSuppressOptimizationsEnabled' is enabled or disabled.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmSymbolAlternateSourcePositionQuery

Optional interface implemented by symbol providers that wish to provide multiple source mappings for the same instruction symbol - both a primary mapping, and a backup mapping in the case the primary document cannot be found.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

This API was introduced in Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3).

IDkmSymbolCompilerIdQuery

This API is used to fetch the compiler id for a given symbol. It is implemented by symbol providers that support symbol stores where the binary may contain multiple languages. In other words, this interface only needs to be implemented when DkmModule.CompilerId is Guid.Empty/Guid.Empty.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

IDkmSymbolCompilerIdQueryCallback

This API is used to fetch the compiler id for a given symbol. It is implemented by symbol providers that support symbol stores where the binary may contain multiple languages. In other words, this interface only needs to be implemented when DkmModule.CompilerId is Guid.Empty/Guid.Empty.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

IDkmSymbolDisassemblyQuery

This API is used to resolve symbols in the disassembly window.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

IDkmSymbolDocumentCollectionQuery

API implemented by symbol providers to allow the breakpoints manager and other components to query the collection of documents inside of a symbol store.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

IDkmSymbolDocumentSpanQuery

API implemented by symbol providers to allow the breakpoints manager and other components to query the 'document text span->symbol' map which is inside a symbol store.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SymbolProviderId.

IDkmSymbolFileBytesQuery

This API is used to retrieve raw bytes of the symbol file from the Remote side.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 14 Update 3 Micro Update (DkmApiVersion.VS14Update3MicroUpdate).

IDkmSymbolFunctionResolver

This interface is implemented by symbol based expression evaluators to map between a function/address expression and the instructions which are represented by it. This is used to bind function breakpoints.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId, SymbolProviderId.

IDkmSymbolHiddenAttributeQuery

This API is used to read information about a symbol.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

IDkmSymbolLocator

Interface implemented by symbol providers which deal with symbol search. In other words, this interface would not be implemented by symbol providers which deal only with symbol formats which are inside the debugged binary.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SymbolProviderId, TransportKind.

IDkmSymbolLocatorCallback170
IDkmSymbolMemoryReader

Interface implemented by base debug monitors which read symbols from debuggee's memory at runtime. This interface would be implemented by base debug monitors to deal with symbol formats which are generated or loaded at runtime in the debuggee's memory.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

IDkmSymbolPathChangeNotification

Interface to update components when symbol settings change.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

IDkmSymbolProviderCallback

Callback interface which is implemented by symbol providers to provide information from the symbol store to debug monitors.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SymbolProviderId.

IDkmSymbolQuery

This API is used to read information about a symbol.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: SymbolProviderId.

IDkmSymbolQueryCallback

Allows remote components to obtain source position information when the symbol provider is on the VS machine.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: RuntimeId, SymbolProviderId.

IDkmSymbolStackWalk

Provides a mechanism for walking native stack frames using information from symbol files. This mechanism is used to walk any stack frames which could not be resolved on the target computer.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, SymbolProviderId.

IDkmTaskProvider

Interface implemented by the task provider component to obtain information about tasks. This interface is subject to change in future versions of Visual Studio.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TaskProviderId.

IDkmTaskProvider165

Interface implemented by the task provider component to obtain information about tasks asynchronously. This interface is subject to change in future versions of Visual Studio.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, RuntimeId, SourceId, TaskProviderId.

This API was introduced in Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

IDkmTaskProviderCreateNotification

IDkmTaskProviderCreateNotification is implemented by components that want to listen for the TaskProviderCreate event. The target process may continue to run during this notification. Indicates that a task provider object has been created.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TaskProviderId.

IDkmTaskProviderInitialize

Optional interface implemented by task providers to receive a notification when task providers are first requested for a particular process. This interface is subject to change in future versions of Visual Studio.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmTaskSynchronizationObjectProvider

Interface implemented by task provider components to provide the set of synchronization objects owned by a task. This interface is subject to change in future versions of Visual Studio.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TaskProviderId.

IDkmTerminalLauncher
IDkmThreadContextOperation

Operations provided by a base debug monitor to obtain and update a thread's context (register values).

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmThreadCreateNotification

IDkmThreadCreateNotification is implemented by components that want to listen for the ThreadCreate event. When this notification fires, the target process will be suspended and can be examined. ThreadCreate is fired when a new thread starts in the target process.

ThreadCreate events can be suppressed. In this case the thread will be invisible to components above the level where the thread was suppressed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmThreadCurrentWinRtExceptionQuery

This interface is implemented by runtime debug monitors to return the most recent WinRT exception information on the given thread.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmThreadDisplayPropertiesQuery

Used to determine a thread's category.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmThreadExitNotification

IDkmThreadExitNotification is implemented by components that want to listen for the ThreadExit event. The target process may continue to run during this notification. ThreadExit is fired when a thread in the target process exits. It will not be fired if the target process exits while the thread is still running.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmThreadLocationProvider

Provides the location of a thread, as visible in the threads window, or threads drop down in the debug location toolbar. This is implemented by the Microsoft stack provider component.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmThreadNameChangeNotification

IDkmThreadNameChangeNotification is implemented by components that want to listen for the ThreadNameChange event. When this notification fires, the target process will be suspended and can be examined. ThreadNameChange is fired when a thread name is changed in the target process. Currently, this is only fired when Managed thread change their name.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmThreadNameQuery

Used to determine a thread's name. Does not return the thread's display name.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.

IDkmThreadStackRangeProvider

Returns the stack base and limit of a thread.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmThreadSuspension

Called to suspend or resume a thread and to obtain the current thread suspension count.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmTimeTravellingMonitor

This interface is implemented by debug monitors that allow time travelling.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

IDkmTlsReadWrite

Provides the ability to read and write from Win32 TLS slots within the target process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmTraceSettingsNotification

Interface to update components when trace settings are changed.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

IDkmUserCodeDeterminer

Determines if a frame is user or nonuser when such determination was not made when the frame was created.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmVirtualMemoryAllocator

Implemented by base debug monitors to allow allocation/free of virtual memory in the target process.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmVirtualThreadCreateNotification

IDkmVirtualThreadCreateNotification is implemented by components that want to listen for the VirtualThreadCreate event. The target process may continue to run during this notification. When VirtualThreadCreate is called it fires an event notifying the listeners that a new DkmVirtualThread has been created.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 16 Update 6 (DkmApiVersion.VS16Update6).

IDkmVisualizationDataCompiler

Optional interface to compiles an object visualization data from a human-readable form into a DkmCompiledVisualizationData object. Currently, this interface is implemented only by C++.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: CompilerVendorId, LanguageId.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmVisualStudioServices

Interface implemented by the AD7AL as a gateway to services provided by the rest of Visual Studio.

Implementations of this interface are always called (no filtering is supported). To reduce memory impact, it is suggested that this interface be implemented in a small dll, or that the implementation is configured with 'CallOnlyWhenLoaded="true"'.

IDkmVisualStudioServices120

Interface implemented by the AD7AL as a gateway to services provided by the rest of Visual Studio.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IDkmVolatileMemoryOperation

Provides support for reading and writing memory. Unlike IDkmMemoryOperation, this Interface can be used when the process is running, and it will never cache results, so it should be used with care.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.

IDkmVolatileThreadProperties

Exposes volatile properties of a thread such as priority and affinity mask. These values are expected to change over time and should not be cached by callers.

Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: BaseDebugMonitorId, EngineId, TransportKind.