﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="configuration" targetNamespace="http://schemas.microsoft.com/vstudio/vsdconfig/2008" xmlns:mstns="http://schemas.microsoft.com/vstudio/vsdconfig/2008" xmlns="http://schemas.microsoft.com/vstudio/vsdconfig/2008" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">

  <xs:element name="Configuration">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="DefineGuid" type="XsdDefineGuid" minOccurs="0" maxOccurs="unbounded"/>
        <xs:choice>
          <xs:element name="ManagedComponent" type="XsdManagedComponent"/>
          <xs:element name="NativeComponent" type="XsdNativeComponent"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="XsdDefineGuid">
    <xs:annotation>
      <xs:documentation>
        Defines an identifier to a particular Guid value which can then be used in the
        rest of the file.
      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="Name" type="IdentifierName" use="required" />
    <xs:attribute name="Value" type="Guid" use="required" />
  </xs:complexType>

  <!-- Managed component types -->
  <xs:complexType name="XsdManagedComponent">
    <xs:annotation>
      <xs:documentation>
        Defines the configuration for a component implemented in managed code (ex: C#).
      </xs:documentation>
    </xs:annotation>

    <xs:complexContent>
      <xs:extension base="XsdComponent">

        <xs:sequence>
          <xs:element name="Class" type="XsdManagedClass" minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>

        <xs:attribute name="AssemblyName" use="required">
          <xs:annotation>
            <xs:documentation>
              The name of the assembly where this component is implemented (ex: MyAssembly).
            </xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:minLength value="1"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="GenerateFullAssemblyName" type="xs:boolean" use="optional">
          <xs:annotation>
            <xs:documentation>
              Let the VsdConfigTool generate the full assembly name (ex: MyAssembly, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=0123456789abcdef). Default: false.
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="XsdManagedClass">
    <xs:annotation>
      <xs:documentation>
        Defines configuration for an exported class in a managed component.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="XsdClass"/>
    </xs:complexContent>
  </xs:complexType>



  <!-- Native component types -->
  <xs:complexType name="XsdNativeComponent">
    <xs:annotation>
      <xs:documentation>
        Defines the configuration for a component implemented in native code (ex: C++)
      </xs:documentation>
    </xs:annotation>

    <xs:complexContent>
      <xs:extension base="XsdComponent">
        <xs:sequence>
          <xs:element name="Class" type="XsdNativeClass" minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>

        <xs:attribute name="ModuleName" use="required">
          <xs:annotation>
            <xs:documentation>
              The name of the module where this component is implemented (ex: mycomponent.dll).
            </xs:documentation>
          </xs:annotation>

          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value=".+\.[Dd][Ll][Ll]"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="XsdNativeClass">
    <xs:annotation>
      <xs:documentation>
        Defines configuration for an exported class in a native component.
      </xs:documentation>
    </xs:annotation>

    <xs:complexContent>
      <xs:extension base="XsdClass">
        <xs:attribute name="ClassId" type="GuidOrGuidDefine" use="required">
          <xs:annotation>
            <xs:documentation>
              Guid to uniquely identify this class. These may be hard coded (ex: '01234567-89AB-CDEF-0123-456789ABCDEF') or
              reference a 'DefineGuid'. These may be generated with the 'GuidGen.exe' tool. This value is passed to the dll
              in 'DllGetClassObject'.
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>



  <!--Base types for managed and native -->

  <!-- Base class for XsdManagedComponent and XsdNativeComponent -->
  <xs:complexType name="XsdComponent" abstract="true">
    <xs:attribute name="ComponentId" type="GuidOrGuidDefine" use="required">
      <xs:annotation>
        <xs:documentation>
          Guid to uniquely identify this component. These may be hard coded (ex: '01234567-89AB-CDEF-0123-456789ABCDEF') or
          reference a 'DefineGuid'. These may be generated with the 'GuidGen.exe' tool.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

    <xs:attribute name="ComponentLevel" use="required">
      <xs:annotation>
        <xs:documentation>
          Defines where this component is in the component hierarchy. This is an integer value
          between 1 and 1000000000.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:int">
          <xs:minInclusive value="1"/>
          <xs:maxInclusive value="1000000000"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>

    <xs:attribute name="Synchronized" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation>Should the dispatcher synchronize all accesses to the component? (place a big lock around it). Default: false</xs:documentation>
      </xs:annotation>
    </xs:attribute>

    <xs:attribute name="StayLoadedForDeployConnection" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation>If set to true, the dispatcher will keep the component loaded during stop debugging as long as there are still outstanding
        IVsDebuggerDeployConnection objects. If this is not set, the component will be unloaded during stop debugging. Unloading for a native
        component means that the interface pointers obtained from the dll will have IUnknown.Release called, and then FreeLibrary will be called.
        For a managed component, this means that the dispatcher will drop its reference to the classes so that the GC can reclaim memory.
        Components that set this property to 'true' should not hold onto DIA (IDia*) or Metadata (IMetaData*) interfaces. Doing so will leave
        pdbs/modules locked.
      </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <!-- Base class for XsdNativeClass and XsdManagedClass -->
  <xs:complexType name="XsdClass" abstract="true">
    <xs:sequence>
      <xs:element name="Implements" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Configuration for all the interfaces which this class implements</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="InterfaceGroup" type="XsdInterfaceGroup" minOccurs="1" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>

    <xs:attribute name="Name" use="required">
      <xs:annotation>
        <xs:documentation>Full name of the class (ex: MyNamespace.MyClass)</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="WorkerProcessSupported" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation>
          If set to true, this class may be loaded in a separate worker process. The class will be instantiated and called in a worker
          process when both the interface being called supports worker processes and when the object parameter of the interface method
          has an associated worker process.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="XsdInterfaceGroup">
    <xs:annotation>
      <xs:documentation>Provides configuration for one or more interfaces which have the same routing
      configuration (same priority, same filter settings).
      </xs:documentation>
    </xs:annotation>

    <xs:sequence>
      <xs:choice>
        <xs:element name="NoFilter" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              This is used by a component to indicate that it always wants to implement the
              interface, and therefore is always handling the call.
              Generally a 'Filter' element should be defined instead.
            </xs:documentation>
          </xs:annotation>
        </xs:element>

        <xs:element name="Filter" minOccurs="1" maxOccurs="1" type="XsdInterfaceGroupFilter">
          <xs:annotation>
            <xs:documentation>
              Defines the constraints under which the Dispatcher should call this class's
              implementation of the interfaces within this InterfaceGroup.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="Interface" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            Interface which this class implements
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:attribute name="Name" type="XsdInterfaceName" use="required">
            <xs:annotation>
              <xs:documentation>
                The name of the implemented interface.
              </xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>

    <xs:attribute name="CallOnlyWhenLoaded" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          When true, the dispatcher will only call this method if the class has
          already been loaded. For example, this is used in the Microsoft Breakpoint
          Manager component to ignore module load notifications when the user hasn't set
          any breakpoints. Default: false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

    <xs:attribute name="Priority">
      <xs:annotation>
        <xs:documentation>
          Priority used by the Dispatcher to rank components when choosing an implementation to call.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <!-- 'Normal' goes first since it is the default -->
          <xs:enumeration value="Normal"/>

          <!-- Now all the non-default values -->
          <xs:enumeration value="Low"/>
          <xs:enumeration value="BelowNormal"/>
          <xs:enumeration value="AboveNormal"/>
          <xs:enumeration value="High"/>
          <xs:enumeration value="Highest"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="XsdGuidFilterItem" abstract="true">
    <xs:attribute name="RequiredValue" use="required">
      <xs:annotation>
        <xs:documentation>
          Guid value that the filter parameter must match. These can be values from the
          API (ex: DkmBaseDebugMonitorId.WindowsProcess), they can be hard coded Guids
          (ex: 01234567-89AB-CDEF-0123-456789ABCDEF), or 'DefineGuid' identifiers.
        </xs:documentation>
      </xs:annotation>

      <xs:simpleType>
        <xs:restriction base="xs:string">
          <!--Hard coded guid-->
          <xs:pattern value="[{(]?[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}[})]?"/>
          <!--DefineGuid value-->
          <xs:pattern value="[A-Za-z_][A-Za-z0-9_]*"/>
          <!--API name-->
          <xs:pattern value="[A-Z][A-Za-z0-9]*\.[A-Z][A-Za-z0-9]*"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:simpleType name="GuidOrGuidDefine">
    <xs:restriction base="xs:string">
      <xs:pattern value="[{(]?[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}[})]?"/>
      <xs:pattern value="[A-Za-z_][A-Za-z0-9_]*"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="Guid">
    <xs:annotation>
      <xs:documentation>Guid value. Ex: "01234567-89AB-CDEF-0123-456789ABCDEF" or "{01234567-89AB-CDEF-0123-456789ABCDEF}".</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="[{(]?[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}[})]?"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="IdentifierName">
    <xs:annotation>
      <xs:documentation>The name of an identifier. (ex: 'myGuid' or 'MyGuid').".</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Za-z_][A-Za-z0-9_]*"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="XsdInterfaceGroupFilter">
    <xs:choice minOccurs="1" maxOccurs="unbounded">

      <xs:element name="RuntimeId">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the RuntimeId
            property on the input object is set to the required value. Multiple
            RuntimeId elements may be added to support multiple required values.

            The Runtime Id identifies the execution environment for a particular piece of
            code. Runtime Ids are used by the dispatcher to decide which monitor to
            dispatch to. Note that the ordering of the runtime ID Guids is somewhat
            significant as this dictates which runtime gets the first shot during
            arbitration. Thus, if one wants to declare a new runtime instance which is
            built on the CLR, the runtime id should be less than DkmRuntimeId.Clr.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="LanguageId">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the LanguageId
            property on the input object is set to the required value. Multiple
            LanguageId elements may be added to support multiple required values.

            Unique id for a programming language. These values must also be registered
            under $(RegRoot)\AD7Metric\ExpressionEvaluator and returned from symbol
            providers (through GetCompilerId) and language services (through
            IVsLanguageDebugInfo.GetLanguageID).
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CompilerVendorId">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the CompilerVendorId
            property on the input object is set to the required value. Multiple
            CompilerVendorId elements may be added to support multiple required values.

            Guid value which, along with the DkmLanguageId, can identify the
            compiler/interpreter used to compile/interpret the target code. The vendor id
            is used along with the language id to select expression evaluators. This
            value is used as many compilers may exist for the same programming language.
            But even though the compilers may all use the same programming language, they
            will generally not be able to use the same expression evaluator.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="SymbolProviderId">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the SymbolProviderId
            property on the input object is set to the required value. Multiple
            SymbolProviderId elements may be added to support multiple required values.

            Unique identifier for symbol files/symbol providers.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="TransportKind">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the TransportKind
            property on the input object is set to the required value. Multiple
            TransportKind elements may be added to support multiple required values.

            Indicates the type of transport being used to debug.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="SourceId">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the SourceId
            property on the input object is set to the required value. Multiple
            SourceId elements may be added to support multiple required values.

            Identifies the source of an object. SourceIds are used to enable filtering in
            scenarios when multiple components may be creating instances of a class. For
            example, source ids can be used to determine if a breakpoint comes from the
            AD7 AL (ex: user breakpoint, or other breakpoint visible at the SDM level)
            instead of a breakpoint which may be created by another component (for
            example an internal breakpoint used for stepping).
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="BaseDebugMonitorId">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the BaseDebugMonitorId
            property on the input object is set to the required value. Multiple
            BaseDebugMonitorId elements may be added to support multiple required values.

            DkmBaseDebugMonitorId identifies the base debug monitor used to inspect and
            control the debugged process. For example,
            DkmBaseDebugMonitorId.WindowsProcess is used for processes debugged by the
            Win32 debugging API and DkmBaseDebugMonitorId.DumpFile is used for minidumps.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="EngineId">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the EngineId
            property on the input object is set to the required value. Multiple
            EngineId elements may be added to support multiple required values.

            These are the 'standard' engine GUID values. It is expected that this list
            will grow over time, so where possible, it is recommended to query for a
            setting instead of comparing the EngineId.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ExceptionCategory">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the ExceptionCategory
            property on the input object is set to the required value. Multiple
            ExceptionCategory elements may be added to support multiple required values.

            Indicates the type of exception.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="TaskProviderId">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the TaskProviderId
            property on the input object is set to the required value. Multiple
            TaskProviderId elements may be added to support multiple required values.

            Extensible GUID indicating the task provider which a task is from.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CompiledInspectionQueryKind">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the CompiledInspectionQueryKind
            property on the input object is set to the required value. Multiple
            CompiledInspectionQueryKind elements may be added to support multiple required values.

            Indicates the type of inspection query. This is used to select a component to
            process the query.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="VisualizerId">
        <xs:annotation>
          <xs:documentation>
            Interfaces within this group will only be called when the VisualizerId
            property on the input object is set to the required value. Multiple
            VisualizerId elements may be added to support multiple required values.

            A Guid provided by a visualizer to filter on expressions that match this
            Guid.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="XsdGuidFilterItem"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:choice>
  </xs:complexType>

  <xs:simpleType name="XsdInterfaceName">
    <xs:restriction base="xs:string">
      <xs:enumeration value="IDkmActiveScriptDebugMonitor">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAdditionalClrRuntimePathsProvider">
        <xs:annotation>
          <xs:documentation>
            Interface that allows adding additional Clr runtime install paths. These are
            used in core dump Linux debugging to locate the matching DAC and DBI
            binaries.
            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 17 Update 1
            (DkmApiVersion.VS17Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAfterSetNextStatementNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAlternateSymbolsModule">
        <xs:annotation>
          <xs:documentation>
            Allows the attachment of an alternate ISymUnmanagedReader 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 17 Update 8
            (DkmApiVersion.VS17Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppDomainCreatedNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppDomainUnloadedNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppLaunchCompleteTelemetry">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the AD7 AL to receive callbacks from the listener
            when app package launches complete.
            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, SourceId, TransportKind.
            This API was introduced in Visual Studio 15 Update 5
            (DkmApiVersion.VS15Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppLaunchTelemetry">
        <xs:annotation>
          <xs:documentation>
            Implemented by the Microsoft debug engines to provide application startup
            time telemetry data.
            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 5
            (DkmApiVersion.VS15Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageDebugCleanup">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the base DM services to do any required synchronous
            cleanup before ending debugging of app packages.
            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 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageDebugControl">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the base DM services to provide control over Windows
            Store apps, with operations such as launch, suspend, resume, and terminate.
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageDebugControl120">
        <xs:annotation>
          <xs:documentation>
            Implemented in order to control Windows Store Apps.
            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 12 Update 3
            (DkmApiVersion.VS12Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageDebugControl140">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the base DM services to activate applications that
            contain startup tasks. This is used in IoT 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 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageDebugControl140a">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the base DM services to activate applications in
            Prelaunch 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: TransportKind.
            This API was introduced in Visual Studio 14 Update 1
            (DkmApiVersion.VS14Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageDebugControl150">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the base DM services to activate applications with
            more 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: TransportKind.
            This API was introduced in Visual Studio 15 Update 1
            (DkmApiVersion.VS15Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageDebugControl169">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the base DM services to provide additional control
            over Windows Store apps, with operations such as launch, suspend, resume, and
            terminate.
            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 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageDebugControl173">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the base DM services to activate applications and
            return the process id of the activated application.
            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 17 Update 3
            (DkmApiVersion.VS17Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageInfo">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageNonDebugLaunch">
        <xs:annotation>
          <xs:documentation>
            Interface used to report that a process associated with an app package has
            launched but will not be 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: EngineId, SourceId, TransportKind.
            This API was introduced in Visual Studio 16 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAppPackageTargetMonitorLauncher">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the base DM services to provide ability to launch
            Windows Store apps on an arbitrary 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: TransportKind.
            This API was introduced in Visual Studio 12 Update 3
            (DkmApiVersion.VS12Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmArm64ECThunkSymbolsProvider">
        <xs:annotation>
          <xs:documentation>
            This interface provides symbol information for native coroutine 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: RuntimeId, SymbolProviderId.
            This API was introduced in Visual Studio 17 Update 5
            (DkmApiVersion.VS17Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAsyncBreak">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAsyncBreakCompleteNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAsyncBreakCompleteReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAsyncStateMachineDecoder170">
        <xs:annotation>
          <xs:documentation>
            Provides metadata level information about async state machine 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: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId.
            This API was introduced in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmAsyncTaskDecoder">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBaseFuncEvalService">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBaseNativeExecutionController">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBeforeContinueExecutionNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBeforeStopDebuggingNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBinaryLoadedNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBinaryLocator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBinaryLocator11a">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBinaryLocator120">
        <xs:annotation>
          <xs:documentation>
            Extends binary locator functionality for loading mscordbi.dll/mscordacwks.dll
            or other Microsoft runtimes in the future for dump 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.
            This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBinaryLocator168">
        <xs:annotation>
          <xs:documentation>
            Extends binary locator functionality for loading the cross-targeted
            mscordbi.dll/mscordaccore.dll or other Microsoft runtimes in the future for
            dump 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.
            This API was introduced in Visual Studio 16 Update 8
            (DkmApiVersion.VS16Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBinaryLocator1710">
        <xs:annotation>
          <xs:documentation>
            This interface contains the 17.10 version of IDkmBinaryLocator. It is used by
            debug monitor to locate binaries.
            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 17 Update 10
            (DkmApiVersion.VS17Update10).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBinaryLocator174">
        <xs:annotation>
          <xs:documentation>
            Extends binary locator functionality for retrieving
            mscordbi.dll/mscorddaccore.dll for .NET 6+ single-file application 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: TransportKind.
            This API was introduced in Visual Studio 17 Update 4
            (DkmApiVersion.VS17Update4).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBinaryReloadOpportunityNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBoundBreakpointHitNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBoundBreakpointHitReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointConditionProcessor">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointConditionProcessorClient">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointConditionProcessorClient140">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointConditionProcessorGpuExtension">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointConditionThreadSelectorForGpu">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointConditionValidation">
        <xs:annotation>
          <xs:documentation>
            APIs for validating whether conditions were met when breakpoints were
            processed.
            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 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointHitWithErrorNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointHitWithErrorReceived">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointManager">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointManager1714">
        <xs:annotation>
          <xs:documentation>
            Breakpoint manager APIs for determining whether conditions were met when
            breakpoints were processed.
            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 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointManagerFileUpdate">
        <xs:annotation>
          <xs:documentation>
            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"'.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointManagerNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointManagerNotification1711">
        <xs:annotation>
          <xs:documentation>
            APIs for reporting errors with non-optimized 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, CompilerVendorId, EngineId, LanguageId,
            SourceId.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointManagerNotification1714">
        <xs:annotation>
          <xs:documentation>
            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.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointManagerNotification174">
        <xs:annotation>
          <xs:documentation>
            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.
            This API was introduced in Visual Studio 17 Update 4
            (DkmApiVersion.VS17Update4).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBreakpointManagerNotification176">
        <xs:annotation>
          <xs:documentation>
            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.
            This API was introduced in Visual Studio 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmBulkRuntimeBreakpointOperations">
        <xs:annotation>
          <xs:documentation>
            APIs for bulk breakpoint operations.
            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 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCallStackFilter">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCausalityEventReceiver">
        <xs:annotation>
          <xs:documentation>
            Internal interface implemented by the AD7 AL to receive causality events from
            the causality 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: TransportKind.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCausalityMonitor">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the causality monitor component which will push
            causality events back to Visual Studio from 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: TransportKind.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrAddressesEvaluator">
        <xs:annotation>
          <xs:documentation>
            Interface for evaluating CLR objects given 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, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 17 Update 11
            (DkmApiVersion.VS17Update11).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrAppDomainNameChanged">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrAssemblyLoader">
        <xs:annotation>
          <xs:documentation>
            Functionality for instructing the debugger to load a managed assembly into a
            running 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 16 Update 11.2
            (DkmApiVersion.VS16Update11S2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrAsyncTaskExceptionInfoProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the CLR Inspector to return information about async
            tasks throwing exceptions into non-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.
            This API was introduced in Visual Studio 17 Update 11
            (DkmApiVersion.VS17Update11).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrCcwDecoder">
        <xs:annotation>
          <xs:documentation>
            Provides the ability to obtain the address of a CLR object from a Com
            Callable Wrapper 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: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 16 Update 7
            (DkmApiVersion.VS16Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrCustomVisualizerObjectProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrCustomVisualizerObjectProvider1610">
        <xs:annotation>
          <xs:documentation>
            Instantiates the debuggee-side Custom Visualizer type in the debuggee and
            provides methods to access/modify the visualized object ('Visualizer Object')
            taking into account that it might not support the BinaryFormatter to
            communicate with 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: CompilerVendorId, EngineId, LanguageId, RuntimeId, SymbolProviderId.
            This API was introduced in Visual Studio 16 Update 10
            (DkmApiVersion.VS16Update10).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrCustomVisualizerObjectProvider172">
        <xs:annotation>
          <xs:documentation>
            Provides methods to access the visualized object ('Visualizer Object') of a
            custom visualizer asynchronously.
            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 17 Update 2
            (DkmApiVersion.VS17Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrCustomVisualizerObjectProvider176">
        <xs:annotation>
          <xs:documentation>
            Provides a method to instantiate the debuggee-side component of a custom
            visualizer that uses a particular serialization format to communicate with
            the VS-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, EngineId, LanguageId, RuntimeId, SymbolProviderId.
            This API was introduced in Visual Studio 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrDebugMonitorExceptionCaughtNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrDecompiler">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrDecompiler173">
        <xs:annotation>
          <xs:documentation>
            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 17 Update 3
            (DkmApiVersion.VS17Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrDecompiler175">
        <xs:annotation>
          <xs:documentation>
            Provides decompilation services for CLR 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, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 5
            (DkmApiVersion.VS17Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrDecompiler177">
        <xs:annotation>
          <xs:documentation>
            Provides decompilation services for CLR 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, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrDecompiler178">
        <xs:annotation>
          <xs:documentation>
            Provides decompilation services for CLR 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, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 8
            (DkmApiVersion.VS17Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrDelegateObjectValueDecoder">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the managed DM to decode delegates.
            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 2
            (DkmApiVersion.VS16Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrDisableFuncEvalProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the CLR Inspector to disable func-eval and provide
            the status of func-eval.
            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 17 Update 4
            (DkmApiVersion.VS17Update4).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrDynamicFunctionTableResolver">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the ManagedDM to provide the path to the DAC dll for
            resolving dynamic PData.
            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 17 Update 5
            (DkmApiVersion.VS17Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinue">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the managed DM to manipulate CLR edit and continue.
            Edit and Continue component is the caller of this 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.
            This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinue1610">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the Managed DM to manipulate CLR edit and continue
            operations. Managed Edit and Continue is the caller of this 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 16 Update 10
            (DkmApiVersion.VS16Update10).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueAnalysisHelper">
        <xs:annotation>
          <xs:documentation>
            Provide flow analysis helper operations for managed Edit and Continue.
            Implemented by the CLR Inspector, called from Managed EnC.
            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 3
            (DkmApiVersion.VS16Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueCapabilitiesProvider">
        <xs:annotation>
          <xs:documentation>
            Reports Edit and Continue functionality according to the target runtime
            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, TransportKind.
            This API was introduced in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueILProvider">
        <xs:annotation>
          <xs:documentation>
            Provide IL delta information regarding updated managed modules. Interface
            implemented by the ManagedDM, consumed by 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, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 16 Update 3
            (DkmApiVersion.VS16Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueModuleStatusProvider">
        <xs:annotation>
          <xs:documentation>
            This interface allows the client to query status information regarding Edit
            And Continue for a Clr module instance. Implemented by AD7, called from
            managed language services.
            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 1
            (DkmApiVersion.VS16Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueRemapperCallback">
        <xs:annotation>
          <xs:documentation>
            This interface allows managed code to remap the instruction pointer after
            edit and continue. Implemented by Managed EnC, called from ManagedDM.
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueRuntimeStatusProvider">
        <xs:annotation>
          <xs:documentation>
            This interface allows the client to query status information regarding Edit
            And Continue for a Clr runtime instance. Implemented by AD7, called from
            managed language services.
            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 1
            (DkmApiVersion.VS16Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueServices">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the managed DM to provide information for managed
            edit and continue.
            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 Update 5
            (DkmApiVersion.VS15Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueSetNextStatement">
        <xs:annotation>
          <xs:documentation>
            Continue execution before setting next statement. Called by AD7.
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueSymbols">
        <xs:annotation>
          <xs:documentation>
            Edit and continue symbols interface. We are using this interface to update
            the symbols on-the-fly. Called by AD7.
            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 12 RTM (DkmApiVersion.VS12RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueUpdateTracker">
        <xs:annotation>
          <xs:documentation>
            This interface provides Edit and Continue helpers to the client when tracking
            or applying updates. Implemented by the Managed EnC, called from the client.
            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 16 Update 3
            (DkmApiVersion.VS16Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrEditAndContinueUpdateTracker171">
        <xs:annotation>
          <xs:documentation>
            This interface provides Edit and Continue helpers to the client when applying
            updates asynchronously. Implemented by the Managed EnC, called from the
            client.
            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 17 Update 1
            (DkmApiVersion.VS17Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrExceptionAsyncStateMachineProvider">
        <xs:annotation>
          <xs:documentation>
            Provides a mechanism to return saved handles to async state machines that
            correspond to exceptions caught by async Tasks. Implemented by the Managed
            DM.
            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 17 Update 11
            (DkmApiVersion.VS17Update11).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrExceptionDetailsProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrExceptionHeapInformationProvider">
        <xs:annotation>
          <xs:documentation>
            Provides information on the exception heap 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: EngineId, ExceptionCategory, RuntimeId.
            This API was introduced in Visual Studio 17 Update 8
            (DkmApiVersion.VS17Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrExceptionProvider">
        <xs:annotation>
          <xs:documentation>
            Interface for retrieving the current managed exception on 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, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 17 Update 12
            (DkmApiVersion.VS17Update12).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrExpressionCompiler">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrExpressionCompiler1714">
        <xs:annotation>
          <xs:documentation>
            Optional enhancement to IDkmClrExpressionCompiler which allows a CLR
            Expression Compiler to return an error string from GetClrLocalVariableQuery.
            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 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrExpressionCompilerCallback">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrExpressionEvaluatorCallbackInternal">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrFinalizerQueueAddressProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the managed DM to inspect the CLR managed heap for
            Finalizer Queue 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, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 16 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrFinalizerQueueTypesProvider">
        <xs:annotation>
          <xs:documentation>
            Used internally to query type information about the objects in the Finalizer
            Queue.
            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 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrFormatter">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrFormatter2">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrFrameGenericParameterProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrFrameReturnValueProvider">
        <xs:annotation>
          <xs:documentation>
            Interface for retrieving the return value of a 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.
            This API was introduced in Visual Studio 17 Update 12
            (DkmApiVersion.VS17Update12).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrFrameTypesProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrFullNameProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrFullNameProvider2">
        <xs:annotation>
          <xs:documentation>
            Provides language-specific names for metadata identifiers.
            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 16 Update 10
            (DkmApiVersion.VS16Update10).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrHeapObjectsProvider">
        <xs:annotation>
          <xs:documentation>
            Interface that enumerates heap objects for specific 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, TransportKind.
            This API was introduced in Visual Studio 17 Update 1
            (DkmApiVersion.VS17Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrInspectionQueryProcessor">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrIntrinsicAssemblyProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrManagedHeapFieldNameProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the CLR Inspector to provide field name 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, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 17 Update 9
            (DkmApiVersion.VS17Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrManagedHeapStringProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the CLR Inspector to efficiently evaluate strings.
            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 17 Update 5
            (DkmApiVersion.VS17Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrManagedHeapTypeLayoutProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the CLR Inspector to provide type layout
            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, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrMetaDataLoader">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrMetaDataProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrMetaDataProvider140">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrMetaDataProvider150">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrMethodHelper166">
        <xs:annotation>
          <xs:documentation>
            Internal CLR method helpers.
            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 6
            (DkmApiVersion.VS16Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrMethodSignatureHelper">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrMethodVersion">
        <xs:annotation>
          <xs:documentation>
            Private interface that allows the symbol provider to notify the managed dm
            when managed methods' versions have changed due to production 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, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrModuleLookup">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNativeModuleBaseAddressProvider">
        <xs:annotation>
          <xs:documentation>
            Internal interface to get the base address of a native module by 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.
            This API was introduced in Visual Studio 16 Update 2
            (DkmApiVersion.VS16Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcAssemblyByteProvider">
        <xs:annotation>
          <xs:documentation>
            Callback interface implemented by symbol providers for consumption by 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: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 15 Update 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcClassInfoProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the managed DM for ClrNc debugging and consumed by
            VIL. Managed DM caches info about the layouts of classes. VIL requires this
            info but uses heuristics which does not work for ProjectN.
            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 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcContainerState">
        <xs:annotation>
          <xs:documentation>
            Interface provides information on a container 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.
            This API was introduced in Visual Studio 15 Update 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcCPUInstructionResolverCallback">
        <xs:annotation>
          <xs:documentation>
            Callback interface implemented by debug monitors and consumed by other 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: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 15 Update 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcDebugMonitor">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the managed DM for ClrNc multi-file 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, RuntimeId, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 15 Update 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcInstructionAddressILFactory">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the CLR NC symbol provider to create instruction
            addresses from an IL 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: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 15 Update 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcInstructionAddressResolver">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcInstructionAddressRvaFactory">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the CLR NC symbol provider (and also by the managed
            DM as a cache) to create instruction addresses from an RVA.
            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 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcLibraryProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the symbol provider to locate and deploy CLR
            debugging services dlls to the target computer/device.
            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 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcSymbolProviderInternalCallback">
        <xs:annotation>
          <xs:documentation>
            Callback interface implemented by symbol providers for consumption by 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: RuntimeId, SymbolProviderId.
            This API was introduced in Visual Studio 15 Update 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrNcSymbolProviderInternalCallback4">
        <xs:annotation>
          <xs:documentation>
            Callback interface implemented by symbol providers for consumption by 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: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 15 Update 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrObjectFavoritesCache">
        <xs:annotation>
          <xs:documentation>
            Stores object favorites information on the remote side and also computes the
            unique key used to indentify their parent 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: EngineId, RuntimeId.
            This API was introduced in Visual Studio 16 Update 4
            (DkmApiVersion.VS16Update4).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrObjectFavoritesCacheCallback">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrObjectProvider">
        <xs:annotation>
          <xs:documentation>
            Interface for getting managed objects by 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: EngineId, RuntimeId.
            This API was introduced in Visual Studio 17 Update 5
            (DkmApiVersion.VS17Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrObjectTypeNameProvider">
        <xs:annotation>
          <xs:documentation>
            Interface that retrieves a Clr object's type name from its memory 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: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 17 Update 1
            (DkmApiVersion.VS17Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrOutOfProcSteppingHelper">
        <xs:annotation>
          <xs:documentation>
            Internal methods for out-of-process stepping 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, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 16 RTM
            (DkmApiVersion.VS16RTMPreview).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrPropertyInterpreter">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrPropertyInterpreter151">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrResultProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrRuntimeDebugMonitor">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrRuntimeDebugMonitor150">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrRuntimeDebugMonitor162">
        <xs:annotation>
          <xs:documentation>
            Methods to load metadata in batches.
            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 2
            (DkmApiVersion.VS16Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrRuntimeDebugMonitorDirect">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrRuntimeDisassemblyHelper">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the ManagedDM to support disassembly of .NET 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, TransportKind.
            This API was introduced in Visual Studio 16 Update 7
            (DkmApiVersion.VS16Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrStackObjectsProvider">
        <xs:annotation>
          <xs:documentation>
            Interface that enumerates stack objects for a given 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, TransportKind.
            This API was introduced in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrSymbolCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrSymbolCallback120">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrSymbolCallback160">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrSymbolCallback1710">
        <xs:annotation>
          <xs:documentation>
            Symbol provider callback enhancements added for Visual Studio 2022 Update 10.
            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 17 Update 10
            (DkmApiVersion.VS17Update10).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrSymbolSignatureCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrSymUnmanagedReaderFactory">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrThreadExceptionInfo">
        <xs:annotation>
          <xs:documentation>
            Provides the ability to fetch the current managed exception for a 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 16 Update 10
            (DkmApiVersion.VS16Update10).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrThreadPoolInfo">
        <xs:annotation>
          <xs:documentation>
            Queries thread pool info for a Clr Process. Supports only dot net core, and
            .NET 5+.
            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 8
            (DkmApiVersion.VS16Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrThreadUserState">
        <xs:annotation>
          <xs:documentation>
            Interface that allows getting a managed thread's user 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, TransportKind.
            This API was introduced in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrTokenResolver">
        <xs:annotation>
          <xs:documentation>
            Interface for resolving types and methods from tokens inside a given module
            scope.
            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 17 Update 8
            (DkmApiVersion.VS17Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrTypeResolver">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrTypeRuntimeInfoProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrTypeRuntimeInfoProvider178">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the Managed DM to provide type information from the
            CLR.
            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 17 Update 8
            (DkmApiVersion.VS17Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrUIVisualizerService">
        <xs:annotation>
          <xs:documentation>
            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"'.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrUIVisualizerService120">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmClrValueInspectionCallback">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCompiledInspectionQueryProcessor">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmComputeKernelExitNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmContinueExecution">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCoreDumpManagedModuleInformation">
        <xs:annotation>
          <xs:documentation>
            This interface provides information on managed modules in a core dump.
            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 8
            (DkmApiVersion.VS16Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCustomMessageAsyncForwardReceiver176">
        <xs:annotation>
          <xs:documentation>
            Implemented by components that wish to receive custom messages from the IDE
            or from another Concord component, and process this message asynchronously.
            This is the async version of IDkmCustomMessageForwardReceiver. Note that only
            messages sent using the async (DkmWorkList) version of
            DkmCustomMessage.SendLower will be received through this interface.
            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.
            This API was introduced in Visual Studio 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCustomMessageCallbackReceiver">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCustomMessageForwardReceiver">
        <xs:annotation>
          <xs:documentation>
            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.
            Starting in 17.6, there is an async alternative to this interface:
            IDkmCustomMessageAsyncForwardReceiver176.
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCustomStopNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCustomStopReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCustomVisualizer">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmCustomVisualizerCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDataBreakpointErrorInfoClient">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDataBreakpointHitNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDataBreakpointHitReceived">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDataBreakpointInfoProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDataBreakpointInfoProvider160">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDCOMObjectLoader">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the base DM services to load DCOM objects so that
            they can be returned to the 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: TransportKind.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDebuggeeStabilizationNotification">
        <xs:annotation>
          <xs:documentation>
            Provides notification when the target process has started and stabilized.
            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 17 Update 9
            (DkmApiVersion.VS17Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDebugMonitorExceptionNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDebugProcessRequestReceiver">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the AD7 AL to receive notification of process debug
            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.
            This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDeploymentCommandCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDetachUnavailableCallback140">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the AD7AL to receive notification that detach should
            be 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.
            This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDeviceIELaunchRequestHandler">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the BaseDMServices to launch Internet Explorer on
            devices.
            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 12 Update 2
            (DkmApiVersion.VS12Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDiagnosticAnalysisAccess">
        <xs:annotation>
          <xs:documentation>
            Interface for discovering what Diagnostic Analyzers exist. This is a separate
            interface than IDkmDiagnosticAnalyzer so that IDkmDiagnosticAnalyzer can have
            a filter for a specific type of analyzer. All Diagnostic Analyzers should
            implement this interface without a filter and send their descriptions once
            loaded.
            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 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDiagnosticAnalysisAssets">
        <xs:annotation>
          <xs:documentation>
            Interface for fetching the assets used by all analyzers while running on a
            particular process.
            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 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDiagnosticAnalysisAssetsCollection">
        <xs:annotation>
          <xs:documentation>
            Interface for adding assets to the collection of assets used by all analyzers
            running on a particular process.
            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 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDiagnosticAnalysisAssetsCollection178">
        <xs:annotation>
          <xs:documentation>
            Interface for adding assets to the collection of assets used by all analyzers
            running on a particular process.
            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 17 Update 8
            (DkmApiVersion.VS17Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDiagnosticAnalysisResult">
        <xs:annotation>
          <xs:documentation>
            Provides data for an analysis result, in Json format. Suitable for running
            automated 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: SourceId.
            This API was introduced in Visual Studio 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDiagnosticAnalysisResultInspector">
        <xs:annotation>
          <xs:documentation>
            Interface for finding the location of an analysis result within a 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: SourceId.
            This API was introduced in Visual Studio 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDiagnosticAnalyzer">
        <xs:annotation>
          <xs:documentation>
            Interface for running a Diagnostic Analyzer over a 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: SourceId.
            This API was introduced in Visual Studio 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDiagnosticAnalyzerCallback">
        <xs:annotation>
          <xs:documentation>
            Implemented by components that wish to receive notifications from Diagnostic
            Analyzers.
            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 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDisassemblyFunctionLabelProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDisassemblyProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDisassemblyRuntimeAddressResolver">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDisassemblySymbolProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDotnetCustomVisualizerInfoProvider176">
        <xs:annotation>
          <xs:documentation>
            Provides the functionality to locate the installation path of out of process
            .NET custom visualizers installed via the visual studio extensibility
            mechanism.
            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 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDotnetCustomVisualizerInfoProvider178">
        <xs:annotation>
          <xs:documentation>
            Provides the functionality to determine how an out-of-process .NET custom
            visualizer should be displayed.
            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 17 Update 8
            (DkmApiVersion.VS17Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDotnetCustomVisualizerPathProvider">
        <xs:annotation>
          <xs:documentation>
            Provides the functionality to locate the installation path of .NET custom
            visualizers installed via the visual studio extensibility mechanism.
            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 17 Update 3
            (DkmApiVersion.VS17Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDotnetVisualizerExtensionInfosChangedNotification">
        <xs:annotation>
          <xs:documentation>
            Interface to update components when the installed .NET visualizer extensions
            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.
            This API was introduced in Visual Studio 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDumpWriter">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDynamicDeoptQuery">
        <xs:annotation>
          <xs:documentation>
            APIs for information about non-optimized debug 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, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDynamicDeoptSymbolsCallback">
        <xs:annotation>
          <xs:documentation>
            APIs for getting information about non-optimized debug functions from the
            server 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,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmDynamicDeoptSymbolsQuery">
        <xs:annotation>
          <xs:documentation>
            APIs for getting information about non-optimized functions and corresponding
            optimized functions.
            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 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEditAndContinueService">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEELocalObjectShim">
        <xs:annotation>
          <xs:documentation>
            Implemented by the local component of the shim EE to support shimming of
            IEELocalObject.
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmElfModuleInformationProvider">
        <xs:annotation>
          <xs:documentation>
            This interface provides ELF specific 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, RuntimeId, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 16 Update 8
            (DkmApiVersion.VS16Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEmbeddedBreakpointHitNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEmbeddedBreakpointHitReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEmbeddedDocumentProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEmbeddedDocumentProvider158">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEmbeddedDocumentProvider165">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEntryPointNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEntryPointReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmEtwTaskCollector">
        <xs:annotation>
          <xs:documentation>
            Provides access to the ETW Task collector 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: BaseDebugMonitorId, EngineId, TransportKind.
            This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionAnalyzer">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionContinuedNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionController">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionDetailsProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionDetailsProvider164">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionDetailsProvider173">
        <xs:annotation>
          <xs:documentation>
            Interface used to implement
            DkmExceptionDetails.GetStackTraceInstructionAddresses.
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionFormatter">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionManager">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionManager140">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionStackTraceProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionTriggerHitNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionTriggerHitReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExceptionWinRTErrorExtractor">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmExtendedRegisters">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmFrameExceptionInterceptProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmFramePseudoLocalResultProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmFramePseudoLocalsProvider163">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the ad7al/vsdbg to provide the set of registered
            pseudo-locals.
            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 3
            (DkmApiVersion.VS16Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmFuncEvalCompletedNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmFuncEvalStartingNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmFunctionTableProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGetExpensiveHashValue177">
        <xs:annotation>
          <xs:documentation>
            Provides methods to calculate and return the actual value of an 'expensive'
            hash.
            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 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUBreakpointBehaviorQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUComputeKernelOperation">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUDisassemblyQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUEnvironmentFilter">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUMemoryOperation">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGpuRaceHazardsAllowSameNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPURegisterOperation">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUSetMemoryAccessWarningOperation">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUSingleStepCompleteNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUSingleStepCompleteReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUSymbolProviderCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUSymbolQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUSymbolQueryCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGPUTempBreakStepper">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGroupCompiledInspectionQueryProcessor">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmGroupLanguageExpressionEvaluator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmHeuristicStackWalker">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmHiddenEntryPointNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmHiddenEntryPointReceived">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmHostingProcessShowNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmIDEDeploymentAgent">
        <xs:annotation>
          <xs:documentation>
            Interface implemented within the Visual Studio process to read/write local
            files which are being deployed/downloaded to 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: TransportKind.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmIISDebuggingServices">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmIISResolver">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmIISResolver160">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmIISResolver170">
        <xs:annotation>
          <xs:documentation>
            Interface to provide IIS Application Pool 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: TransportKind.
            This API was introduced in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmILFailureReasonResolver">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmILInterpreter">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInlineFrameCount">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInlineSourceSymbolQuery">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInProcInteropBaseDmInternal">
        <xs:annotation>
          <xs:documentation>
            Allows the native debug monitor to query the common language 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, TransportKind.
            This API was introduced in Visual Studio 11 Update 1
            (DkmApiVersion.VS11FeaturePack1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInstructionAddressOperator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInstructionAddressProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInstructionAddressResolver">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInstructionPatchNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInstructionStepper">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInterceptExceptionCompletedNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmInterceptExceptionCompletedReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmIntrinsicFunctionEvaluator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmIntrinsicFunctionEvaluator140">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmJsAsyncService">
        <xs:annotation>
          <xs:documentation>
            Provides access to the JS async 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: BaseDebugMonitorId, EngineId, TransportKind.
            This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmJustMyCodeEnableNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmJustMyCodeProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmJustMyCodeProviderForShimEEInternal">
        <xs:annotation>
          <xs:documentation>
            Private interface for the shim EE to determine if a method is user code or
            not.
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageAsyncStepper">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageConditionEvaluator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageExpressionCompiler">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageExpressionEvaluator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageFrameDecoder">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageFrameDecoder1714">
        <xs:annotation>
          <xs:documentation>
            This interface allows a language extension to provide the name of a function
            that can be resolved as a function 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: BaseDebugMonitorId, CompilerVendorId, EngineId, LanguageId,
            RuntimeId.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageInstructionDecoder">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageObjectIdProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageReturnValueEvaluator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageReturnValueEvaluator2">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLanguageStepIntoFilterCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLaunchResumeProcess">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLaunchResumeProcess150">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLoadCompleteNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmLoadedRuntimeDetector">
        <xs:annotation>
          <xs:documentation>
            Internal interface used to query if the runtime for a specified engine is
            loaded into a process on the computer (included processes which aren't being
            debugged). This is called from the BaseDM services.
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedAsyncTaskDecoder">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedFuncEvalQuickAbortServices">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedFuncEvalServices">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedFuncEvalServices150">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapPathsToRootProvider">
        <xs:annotation>
          <xs:documentation>
            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 17 Update 2
            (DkmApiVersion.VS17Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapSampler">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapSampler1714">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by heap sampler to control sampling 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: EngineId, RuntimeId.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapSampler174">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by heap sampler to defer roots analysis.
            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 17 Update 4
            (DkmApiVersion.VS17Update4).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapSampler175">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by heap sampler to detect duplicate strings.
            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 17 Update 5
            (DkmApiVersion.VS17Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapSampler176">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by heap sampler to detect duplicate strings.
            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 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapSampler177">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the managed heap sampler to retrieve segments and
            analyze duplicate strings.
            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 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapSampler178">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by heap sampler to detect event handler leaks.
            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 17 Update 8
            (DkmApiVersion.VS17Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapSummaryProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the managed DM to inspect the CLR managed heap for
            Finalizer Queue 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: EngineId, RuntimeId.
            This API was introduced in Visual Studio 17 Update 2
            (DkmApiVersion.VS17Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapWalker">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapWalker1711">
        <xs:annotation>
          <xs:documentation>
            Interface to retrieve event handler addresses during a heap walk.
            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 17 Update 11
            (DkmApiVersion.VS17Update11).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapWalker175">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the Managed DM to find the string type.
            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 17 Update 5
            (DkmApiVersion.VS17Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapWalker177">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the Managed DM to allow walking the managed heap.
            Exposes methods related to tracking managed references to native objects.
            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 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedHeapWalker179">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the Managed DM to allow collecting additional
            reference information while 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 17 Update 9
            (DkmApiVersion.VS17Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedObjectEnumerator">
        <xs:annotation>
          <xs:documentation>
            Interface that allows to enumerate managed heap objects of a certain type.
            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 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedReturnValueFetcher">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedSteppingCodePathProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedSteppingCodePathProvider1712">
        <xs:annotation>
          <xs:documentation>
            Used by debug monitors to get the locations to track return 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, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 17 Update 12
            (DkmApiVersion.VS17Update12).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedTaskProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the managed remote task provider service 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.
            This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedTaskServices">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedTaskServices158">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedTaskServices163">
        <xs:annotation>
          <xs:documentation>
            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: BaseDebugMonitorId, EngineId, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 16 Update 3
            (DkmApiVersion.VS16Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedTaskServices165">
        <xs:annotation>
          <xs:documentation>
            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 16 Update 5
            (DkmApiVersion.VS16Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedTaskServices166">
        <xs:annotation>
          <xs:documentation>
            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: BaseDebugMonitorId, EngineId, RuntimeId.
            This API was introduced in Visual Studio 16 Update 6
            (DkmApiVersion.VS16Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmManagedThreadProperties">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMaximumInlineSitesUpdateNotification">
        <xs:annotation>
          <xs:documentation>
            Interface to update components when 'MaximumInlineSites' is 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 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMCppSymbolProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMemoryOperation">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMergedMonitorStackWalk">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMergedMonitorStackWalk164">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMetaDataPointerInvalidatedNotification">
        <xs:annotation>
          <xs:documentation>
            Callers of 'DkmClrModuleInstance.GetMetaDataBytesPtr' or
            'DkmClrModuleInstance.GetBaselineMetaDataBytesPtr' should implement this
            interface to receive a notification before the buffer returned from those
            APIs is about to be invalidated. This currently fires before attempting to
            apply code changes (Hot Reload) or when a dynamic module 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,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 12
            (DkmApiVersion.VS17Update12).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMetaDataTokenProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the Managed DM in order to provide IMetaDataImport
            tokens to the IDE 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,
            TransportKind.
            This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMinidumpQuery">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMinidumpQuery1610">
        <xs:annotation>
          <xs:documentation>
            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 16 Update 10
            (DkmApiVersion.VS16Update10).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMinidumpThreadInfo">
        <xs:annotation>
          <xs:documentation>
            Obtains thread state information stored in the Minidump.
            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 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleCreateNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleFunctionTableWriter171">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the NativeDM to apply PData 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,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 1
            (DkmApiVersion.VS17Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleInstanceDisabledNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleInstanceLoadNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleInstanceUnloadNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleLocator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleLocator1712">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by debug monitors that support debugging dumps to allow
            the UI to search for binaries and indicate the situation under which the
            search occurs. 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.
            This API was introduced in Visual Studio 17 Update 12
            (DkmApiVersion.VS17Update12).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleMetadataStatusQuery">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleModifiedNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleSymbolAccess">
        <xs:annotation>
          <xs:documentation>
            API implemented internally to enable logging of module symbol reads, and
            their reasons.
            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 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleSymbolSearchResult175">
        <xs:annotation>
          <xs:documentation>
            Allows symbol search results to be retrieved for a 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 17 Update 3
            (DkmApiVersion.VS17Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleSymbolsLoaded">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleSymbolsLoadedNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleSymbolsReload">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleSymbolsReload175">
        <xs:annotation>
          <xs:documentation>
            Allows the replacement of the ISymUnmanagedReader 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 17 Update 3
            (DkmApiVersion.VS17Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleSymbolsReplacedNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleSymbolsUpdatedNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmModuleUserCodeDeterminer">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMonitorDeploymentAgent">
        <xs:annotation>
          <xs:documentation>
            Interface implemented within msvsmon.exe to read/write/delete files and
            execute arbitrary commands.
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMonitorDeploymentAgent156">
        <xs:annotation>
          <xs:documentation>
            Extension to the original IDkmMonitorDeploymentAgent Interface. Implemented
            within msvsmon.exe to read/write/delete files and execute arbitrary commands.
            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 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMonitorStackWalk">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmMonoDebuggingOperations">
        <xs:annotation>
          <xs:documentation>
            This interface contains the API for attach to a mono runtime listening on a
            predefined port.
            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, LanguageId, TransportKind.
            This API was introduced in Visual Studio 17 Update 10
            (DkmApiVersion.VS17Update10).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNameUndecorator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeAddressThunkDecoder">
        <xs:annotation>
          <xs:documentation>
            Interface that is implemented by a NativeDM to support resolving thunks
            addresses to their backing functions.
            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 17 Update 10
            (DkmApiVersion.VS17Update10).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeCoroutineSteppingSymbolsProvider">
        <xs:annotation>
          <xs:documentation>
            This interface provides symbol information for native coroutine 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: RuntimeId, SymbolProviderId.
            This API was introduced in Visual Studio 16 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeCppEditAndContinueNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeCppEditAndContinueServices160">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by native edit and continue engine to provide the
            snapshot 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: EngineId, RuntimeId.
            This API was introduced in Visual Studio 16 RTM
            (DkmApiVersion.VS16RTMPreview).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeCppEditAndContinueServices175">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by native edit and continue engine to provide the
            snapshot 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: EngineId, RuntimeId.
            This API was introduced in Visual Studio 17 Update 5
            (DkmApiVersion.VS17Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeCppEditAndContinueSymbolProviderServices">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by symbol provider to assist in ENC operations.
            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 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeCppExpressionCompiler">
        <xs:annotation>
          <xs:documentation>
            Provides an API on top of native C++ expression evaluation useful for
            components which want to call into the native C++ expression evaluator and
            then reason about the resulting expression.
            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 14 Update 2
            (DkmApiVersion.VS14Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeDebuggingEnableNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeEditAndContinueUpdate160">
        <xs:annotation>
          <xs:documentation>
            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: EngineId, RuntimeId.
            This API was introduced in Visual Studio 16 RTM
            (DkmApiVersion.VS16RTMPreview).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeEditAndContinueUpdate178">
        <xs:annotation>
          <xs:documentation>
            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: EngineId, RuntimeId.
            This API was introduced in Visual Studio 17 Update 8
            (DkmApiVersion.VS17Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeExportsEnableNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeExportTableDecoder">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeExportTableDecoder150">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeFunctionFragmentProvider">
        <xs:annotation>
          <xs:documentation>
            This interface provides native function fragment information for use in stack
            walking.
            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 Update 8
            (DkmApiVersion.VS15Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeJustMyCodeProvider158">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeJustMyCodeSteppingEnableNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeJustMyCodeSteppingSymbolsProvider">
        <xs:annotation>
          <xs:documentation>
            This interface provides symbol information for native Just My Code 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: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.
            This API was introduced in Visual Studio 15 Update 8
            (DkmApiVersion.VS15Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeModuleNonOptimizedModuleInstanceUpdated">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by components to be alerted when non-optimized symbol
            information has been 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: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeStackCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeSteppingCallSiteProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeSymbolProviderCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeSymbolProviderCallback120a">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNativeX86FrameSymbolProvider">
        <xs:annotation>
          <xs:documentation>
            This interface provides native symbol information for use in stack walking.
            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 12 Update 3
            (DkmApiVersion.VS12Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNatvisComplexityLimitChangedNotification">
        <xs:annotation>
          <xs:documentation>
            Interface to update components when changing the natvis complexity limit.
            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 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNatvisRecursionLimitChangedNotification">
        <xs:annotation>
          <xs:documentation>
            Interface to update components when changing the natvis recursion limit.
            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 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNonDebugProcessExitNotification">
        <xs:annotation>
          <xs:documentation>
            IDkmNonDebugProcessExitNotification is implemented by components that want to
            listen for the NonDebugProcessExit event. The target process may continue to
            run during this notification. NonDebugProcessExit is fired when the
            associated non-debug process exits.
            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 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNonDebugProcessProvider169">
        <xs:annotation>
          <xs:documentation>
            IDkmNonDebugProcessProvider169 is used to start a process without debugging
            and track/control its lifetime. It is implemented by the Base DM services.
            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 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmNonOptimizedModuleUpdated">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by components to be alerted when non-optimized debug
            symbol information has been 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: CompilerVendorId, LanguageId, SymbolProviderId, TransportKind.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmObjectFavoritesProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmOpenEnclaveExitPointNotifications">
        <xs:annotation>
          <xs:documentation>
            Internal interface to communicate enclave exit points with the base debug
            monitors for context overriding.
            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 5
            (DkmApiVersion.VS16Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmOpenEnclaveExportLocator">
        <xs:annotation>
          <xs:documentation>
            Internal interface to get public export information from a 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 16 Update 5
            (DkmApiVersion.VS16Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmOpenEnclaveUnwindInformation">
        <xs:annotation>
          <xs:documentation>
            Internal interface to get information needed for unwinding from the 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 16 Update 5
            (DkmApiVersion.VS16Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmOpenNonDebugSnapshotManager">
        <xs:annotation>
          <xs:documentation>
            Open a snapshot.
            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 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmOutOfBandExceptionNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmOutOfBandProcessContinueNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmOutOfProcessSymbolLoadingEnabledNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmPatchBreakpointFailures">
        <xs:annotation>
          <xs:documentation>
            APIs for reporting failures to install or resolve patch 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, EngineId, RuntimeId, SourceId.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmPathTrustVerifier">
        <xs:annotation>
          <xs:documentation>
            Interface used to verify that a given path is trusted and can be used to load
            symbols or binaries.
            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 17 Update 12
            (DkmApiVersion.VS17Update12).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmPDBSymbolProviderTelemetry">
        <xs:annotation>
          <xs:documentation>
            Implemented by the Microsoft symbol provider to return symbol provider
            telemetry data.
            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 RTM (DkmApiVersion.VS15RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmPendingFileLineBreakpointCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmPendingThreadPoolWorkItems">
        <xs:annotation>
          <xs:documentation>
            Interface that allows to enumerate pending work items in the thread pool
            queue.
            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 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmPerformanceMeasurement140">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessContinueNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessCreateNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessDebuggerInitializeWaiter">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessExecutionNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessExitNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessLaunchEnvironmentFilter">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessLaunchEnvironmentFilter140">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessLaunchNotifyCallback">
        <xs:annotation>
          <xs:documentation>
            Implemented by the AD7 AL to receive callbacks from the listener when new
            worker processes are 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: EngineId, SourceId, TransportKind.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessLaunchNotifyListener">
        <xs:annotation>
          <xs:documentation>
            Implemented by the BaseDM services to provide the ability to listen for new
            target processes being launched.
            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, SourceId, TransportKind.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessQueryOperation">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessSnapshotAddedNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessSnapshotManager">
        <xs:annotation>
          <xs:documentation>
            Implemented by components that manage snapshots of the debuggee. It includes
            taking/removing snapshots, as well as getting the source snapshot of the
            debuggee if it's a process snapshot.
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessSnapshotManager155">
        <xs:annotation>
          <xs:documentation>
            Implemented by components that manage snapshots of 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 15 Update 5
            (DkmApiVersion.VS15Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessSnapshotManager165">
        <xs:annotation>
          <xs:documentation>
            Implemented by components that manage snapshots of 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 15 Update 5
            (DkmApiVersion.VS15Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessSnapshotManager176">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the ReflectionBDM. Responsible for taking and
            attaching to process snapshots that have no parent 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 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessSnapshotRemovedNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProcessStandardIOHandler">
        <xs:annotation>
          <xs:documentation>
            IDkmProcessStandardIOHandler is used to write to the standard input of a
            process that was started using
            'DkmProcessLaunchModeFlags.WritableStandardInput' and flush stdout/err.
            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 17 Update 9
            (DkmApiVersion.VS17Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProductionAgent">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProductionConnection">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProfileIISProcessLaunch160">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by profiler component to configure IIS process before
            launch and also be notified when the IIS process is available to be attached
            to.
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProfileProcessAttach150">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by profiler component to handle attaching to a process
            that has already been launched for profiling.
            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 6
            (DkmApiVersion.VS15Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmProfileProcessLaunch140">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by profiler component to configure the environment
            before a process is launched for profiling as well as to be notified when the
            process is launched.
            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 14 Update 1
            (DkmApiVersion.VS14Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRawStackProvider">
        <xs:annotation>
          <xs:documentation>
            Provides the raw, unmerged, unfiltered stack 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.
            This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRecordedClrQuery">
        <xs:annotation>
          <xs:documentation>
            Functions for querying the time travelling CLR runtime for data.
            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.VS16RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRecordedMethodJITInstance">
        <xs:annotation>
          <xs:documentation>
            Gets information about a method JIT 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.
            This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRecordedProcessInfoProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRecordedProcessQuery">
        <xs:annotation>
          <xs:documentation>
            Functions for querying the time travelling runtime for data.
            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.VS16RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRecordedProcessQuery161">
        <xs:annotation>
          <xs:documentation>
            Functions for querying the time travelling runtime for data.
            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 1
            (DkmApiVersion.VS16Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRecordedProcessQuery166">
        <xs:annotation>
          <xs:documentation>
            Functions for querying the time travelling runtime for data.
            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 6
            (DkmApiVersion.VS16Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRecordedProcessQueryProvider">
        <xs:annotation>
          <xs:documentation>
            Interface to provide a recorded process query.
            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 RTM (DkmApiVersion.VS16RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRecordedProcessQueryUpdatedNotification">
        <xs:annotation>
          <xs:documentation>
            IDkmRecordedProcessQueryUpdatedNotification is implemented by components that
            want to listen for the RecordedProcessQueryUpdated event. When this
            notification fires, the target process will be suspended and can be examined.
            Notification that the internal data associated with a process query has been
            updated. Enables, for example, rebinding of 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, EngineId.
            This API was introduced in Visual Studio 16 RTM (DkmApiVersion.VS16RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRegisterWrite">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRequireFullTrustForSourceServerNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmReturnValuesNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRunningProcessInfoProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRunningProcessInfoProvider160">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeArchitectureQuery">
        <xs:annotation>
          <xs:documentation>
            Interface for determining architecture of an 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: BaseDebugMonitorId, EngineId, TransportKind.
            This API was introduced in Visual Studio 16 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeBreakpointConditionFailedNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeBreakpointConditionFailedReceived">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeBreakpointHitWithErrorNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeBreakpointHitWithErrorReceived">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeBreakpointNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeBreakpointReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeDataBreakpointHitNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeDataBreakpointHitReceived">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeDisassemblyProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeFunctionResolver">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeFunctionResolverClient">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeHandleComparer">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeInstanceLoadCompleteNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeInstanceLoadNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeInstanceUnloadNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeManagedHardwareDataBreakpointInfoProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeMonitorBreakpointHandler">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeSetNextStatement">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmRuntimeStepper">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptCriticalErrorListener">
        <xs:annotation>
          <xs:documentation>
            Implemented by the AD7 AL to receive events from the script document manager
            when a critical error is raised 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, TransportKind.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptDocumentContentInsertNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptDocumentContentRemoveNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptDocumentProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptDocumentQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptDocumentSourceProjectItemChanged">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptDocumentSymbolProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptDocumentTreeNodeCreateNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptDocumentTreeNodeUnloadNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptJmcStateChangeNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptSymbolCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmScriptSymbolsUpdatedNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSerializedProcessInfoProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by base Debug Monitors that support a process dump
            format. Currently implemented by the Core Dump BDM.
            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, TransportKind.
            This API was introduced in Visual Studio 16 Update 8
            (DkmApiVersion.VS16Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSerializedProcessInfoProvider172">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by base Debug Monitors that support a process dump
            format.
            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, TransportKind.
            This API was introduced in Visual Studio 17 Update 2
            (DkmApiVersion.VS17Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSerializedProcessInfoProvider173">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by base Debug Monitors that support a process dump
            format.
            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, TransportKind.
            This API was introduced in Visual Studio 17 Update 3
            (DkmApiVersion.VS17Update3).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSerializedProcessInfoProviderFactory">
        <xs:annotation>
          <xs:documentation>
            Factory interface for getting a IDkmSerializedProcessInfoProvider 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: TransportKind.
            This API was introduced in Visual Studio 16 Update 8
            (DkmApiVersion.VS16Update8).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSerializedProcessInfoProviderFactory172">
        <xs:annotation>
          <xs:documentation>
            Factory interface for getting a IDkmSerializedProcessInfoProvider 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, TransportKind.
            This API was introduced in Visual Studio 17 Update 2
            (DkmApiVersion.VS17Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSessionServerTelemetryDetails">
        <xs:annotation>
          <xs:documentation>
            Optional interface which can be implemented to contribute additional
            telemetry properties to be included with session summary. NOTE: Server-side
            session telemetry comes only from the last process, so in the unusual case of
            multi-connection debugging some data may be missing.
            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 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSessionTelemetryDetails">
        <xs:annotation>
          <xs:documentation>
            Optional interface which can be implemented to contribute additional
            telemetry properties to be included with session summary.
            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 17 Update 11
            (DkmApiVersion.VS17Update11).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSetNextStatementQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSingleStepCompleteNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSingleStepCompleteReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSourceLinkQuery">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSourceLinkSymbolQuery">
        <xs:annotation>
          <xs:documentation>
            This API is used to read Source Link configuration information 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.
            This API was introduced in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSourceServerSymbolQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSourceServerTranslator">
        <xs:annotation>
          <xs:documentation>
            Internal interface implemented by VsDebugEng.ManImpl.45.dll to provide source
            server to source link command translation.
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStackProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStackWalkFrameAnnotationTextProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStackWalkFrameInterfaceProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStackWalkFrameInterfaceProvider2">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStartDebuggingOperations">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStepCompleteNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStepCompleteReceived">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStepOverPropertiesAndOperatorsEnableNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSteppingCodePathProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSteppingManager">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSteppingManagerCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSteppingManagerCallback11a">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSteppingManagerCallback169">
        <xs:annotation>
          <xs:documentation>
            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 16 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStopDebuggingOperations">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmStowedExceptionProvider">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSuppressOptimizationsEnableNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolAlternateSourcePositionQuery">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolCompilerIdQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolCompilerIdQueryCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolDisassemblyQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolDocumentCollectionQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolDocumentCollectionQuery176">
        <xs:annotation>
          <xs:documentation>
            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.
            This API was introduced in Visual Studio 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolDocumentSpanQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolFileBytesQuery">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolFunctionResolver">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolHiddenAttributeQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolLocator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolLocator174">
        <xs:annotation>
          <xs:documentation>
            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: BaseDebugMonitorId, EngineId, RuntimeId, SymbolProviderId,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 4
            (DkmApiVersion.VS17Update4).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolLocatorCallback170">
        <xs:annotation>
          <xs:documentation>
            Provides callbacks to the symbol locator from the server 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,
            TransportKind.
            This API was introduced in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolLocatorCallback177">
        <xs:annotation>
          <xs:documentation>
            Provides callbacks to the symbol locator from the server 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,
            TransportKind.
            This API was introduced in Visual Studio 17 Update 7
            (DkmApiVersion.VS17Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolMemoryReader">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolPathChangeNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolProviderCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolQueryCallback">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmSymbolStackWalk">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTargetComposition">
        <xs:annotation>
          <xs:documentation>
            This interface provides access to TargetComposition components.
            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 5
            (DkmApiVersion.VS16Update5).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTaskInformation">
        <xs:annotation>
          <xs:documentation>
            This interface allows additional information to be obtained for Tasks. This
            is an optional interface and the only Microsoft implementation is for ETW
            Managed Tasks.
            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.
            This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTaskProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTaskProvider165">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTaskProvider167">
        <xs:annotation>
          <xs:documentation>
            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 7
            (DkmApiVersion.VS16Update7).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTaskProviderCreateNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTaskProviderInitialize">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTaskProviderOperationProgressNotification">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by components that want to receive notification on the
            progress of a long running task provider operation. Implementations should be
            filtered by SourceId.
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTaskSynchronizationObjectProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTelemetryEventDetails">
        <xs:annotation>
          <xs:documentation>
            Interface used to send details for telemetry events that will be reported by
            the hosting UI.
            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 17 Update 6
            (DkmApiVersion.VS17Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTelemetryFaultOperations">
        <xs:annotation>
          <xs:documentation>
            Interface used to send telemetry fault events from Concord to the Visual
            Studio telemetry 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: BaseDebugMonitorId, EngineId.
            This API was introduced in Visual Studio 17 Update 12
            (DkmApiVersion.VS17Update12).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTelemetryOperations">
        <xs:annotation>
          <xs:documentation>
            Interface used to send telemetry events from Concord to the Visual Studio
            telemetry 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: BaseDebugMonitorId, EngineId.
            This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTelemetryOperations2">
        <xs:annotation>
          <xs:documentation>
            Interface used to send telemetry events from Concord to the Visual Studio
            telemetry 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: BaseDebugMonitorId, EngineId.
            This API was introduced in Visual Studio 14 Update 1
            (DkmApiVersion.VS14Update1).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTerminalLauncher">
        <xs:annotation>
          <xs:documentation>
            Callback interface which is used to start a new terminal (console) that the
            target process will be launched into.
            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 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadContextOperation">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadCreateNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadCurrentWinRtExceptionQuery">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadDisplayPropertiesQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadExitNotification">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadLocationProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadNameChangeNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadNameQuery">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadStackRangeProvider">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadSuspension">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmThreadSynchronizationObjectsProvider">
        <xs:annotation>
          <xs:documentation>
            Provides synchronization objects for 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, RuntimeId, TransportKind.
            This API was introduced in Visual Studio 16 Update 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTimerQueueItems">
        <xs:annotation>
          <xs:documentation>
            Interface that allows to enumerate timers on the available TimerQueues.
            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 17 Update 2
            (DkmApiVersion.VS17Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTimeTravellingMonitor">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTimeTravellingMonitor2">
        <xs:annotation>
          <xs:documentation>
            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 16 RTM
            (DkmApiVersion.VS16RTMPreview).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTimeTravellingMonitor3">
        <xs:annotation>
          <xs:documentation>
            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 16 RTM
            (DkmApiVersion.VS16RTMPreview).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTimeTravellingMonitor4">
        <xs:annotation>
          <xs:documentation>
            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 16 Update 6
            (DkmApiVersion.VS16Update6).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTlsReadWrite">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTopFrameReturnValueProvider">
        <xs:annotation>
          <xs:documentation>
            Provides the top frames 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: CompilerVendorId, EngineId, LanguageId, RuntimeId.
            This API was introduced in Visual Studio 17 Update 12
            (DkmApiVersion.VS17Update12).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTopFrameReturnValueProvider1714">
        <xs:annotation>
          <xs:documentation>
            Provides the top frames 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: CompilerVendorId, EngineId, LanguageId, RuntimeId.
            This API was introduced in Visual Studio 17 Update 14
            (DkmApiVersion.VS17Update14).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTraceSettingsNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmTraceTimeContextSetNotification">
        <xs:annotation>
          <xs:documentation>
            IDkmTraceTimeContextSetNotification is implemented by components that want to
            listen for the TraceTimeContextSet event. When this notification fires, the
            target process will be suspended and can be examined. Sent by a debug monitor
            after the time context for a time travel debug process has been set.
            TraceTimeContextSet 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.
            This API was introduced in Visual Studio 16 Update 2
            (DkmApiVersion.VS16Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmUserCodeDeterminer">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmVirtualMemoryAllocator">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmVirtualThreadCreateNotification">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmVisualizationDataCompiler">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmVisualStudioServices">
        <xs:annotation>
          <xs:documentation>
            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"'.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmVisualStudioServices120">
        <xs:annotation>
          <xs:documentation>
            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).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmVisualStudioServices140">
        <xs:annotation>
          <xs:documentation>
            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: CompilerVendorId, LanguageId.
            This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmVolatileMemoryOperation">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmVolatileThreadProperties">
        <xs:annotation>
          <xs:documentation>
            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.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmWaitUIProvider">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the AD7AL (and someday vsdbg) to connect Concord to
            the threaded wait dialog.
            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 RTM (DkmApiVersion.VS15RTM).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmWin32HandleDecoder">
        <xs:annotation>
          <xs:documentation>
            Decodes Win32 handles.
            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 9
            (DkmApiVersion.VS16Update9).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IDkmWinStoreAppPrefetcher">
        <xs:annotation>
          <xs:documentation>
            Interface implemented by the DM services to provide Windows Store
            applications content prefetching.
            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 12 Update 2
            (DkmApiVersion.VS12Update2).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
