DkmCustomModuleInstance Класс

Определение

DkmCustomModuleInstance используется для модулей из пользовательской среды выполнения (не собственной среды или среды CLR). Например, его можно использовать в пользовательском интерпретаторе или JIT-компиляторе.

public ref class DkmCustomModuleInstance : Microsoft::VisualStudio::Debugger::DkmModuleInstance
[System.Runtime.InteropServices.Guid("28a2ee07-bdcf-31f8-66e9-09b958e66fe8")]
public class DkmCustomModuleInstance : Microsoft.VisualStudio.Debugger.DkmModuleInstance
[<System.Runtime.InteropServices.Guid("28a2ee07-bdcf-31f8-66e9-09b958e66fe8")>]
type DkmCustomModuleInstance = class
    inherit DkmModuleInstance
Public Class DkmCustomModuleInstance
Inherits DkmModuleInstance
Наследование
Наследование
DkmCustomModuleInstance
Атрибуты

Свойства

BaseAddress

[Необязательно] Начальный адрес памяти, где был загружен модуль. Это значение будет равным нулю, если модуль не загрузится в непрерывном блоке памяти.

(Унаследовано от DkmModuleInstance)
Connection

Это представляет собой соединение между монитором и интегрированной среды разработки. Это может быть локальное подключение, если монитор выполняется в том же процессе, что и интегрированная среда разработки, или удаленное подключение. В процессе мониторинга существует только одно подключение.

(Унаследовано от DkmModuleInstance)
Flags

Флаги, указывающие признаки DkmModuleInstance.

(Унаследовано от DkmModuleInstance)
FullName

Полное имя модуля. Для файловых модулей это полный путь к модулю (например, c:\windows\system32\kernel32.dll.

(Унаследовано от DkmModuleInstance)
IsDisabled

Указывает, отключен ли этот экземпляр модуля. Отладчик в значительной степени игнорирует отключенные модули. Для собственных модулей диапазон адресов отключенного модуля обрабатывается так, как если бы он не сопоставлен. Для модулей CLR все кадры из этих модулей скрыты из стека вызовов.

(Унаследовано от DkmModuleInstance)
IsUnloaded

Возвращает значение true, если для этого объекта было инициировано событие "unloaded" (например, вызывается DkmThread::Unload) или если объект был закрыт. Обратите внимание, что при проверке этого состояния необходимо соблюдать осторожность, так как без синхронизации возвращаемое состояние может быть не точным после чтения инструкции.

(Унаследовано от DkmDataContainer)
LoadContext

Строковое описание контекста, в который был загружен этот модуль. Например, Win32 или CLR версии 2.0.50727: домен по умолчанию.

(Унаследовано от DkmModuleInstance)
LoadOrder

Целочисленное число экземпляров модуля, загруженных до и включая этот модуль. Каждый экземпляр среды выполнения отслеживает собственный порядок загрузки.

(Унаследовано от DkmModuleInstance)
MemoryLayout

Перечисление, указывающее, как модуль находится в памяти.

(Унаследовано от DkmModuleInstance)
MinidumpInfoPart

[Необязательно] MinidumpInfoPart используется для передачи дополнительных сведений о модулях в DkmProcess для минидампа.

(Унаследовано от DkmModuleInstance)
Module

[Необязательно] Представление обработчика символов модуля (DkmModule), связанного с этим экземпляром модуля. Изначально это значение равно NULL и присваивается, если с этим экземпляром модуля связаны символы.

(Унаследовано от DkmModuleInstance)
Name

Краткое представление имени модуля. Для файловых модулей это имя и расширение файла (например, kernel32.dll).

(Унаследовано от DkmModuleInstance)
Process

DkmProcess представляет отлаживаемый целевой процесс. Отладчик выполняет отладку процессов, поэтому это базовая единица отладки. DkmProcess может представлять системный процесс или виртуальный процесс, например минидампы.

(Унаследовано от DkmModuleInstance)
RuntimeInstance

Класс DkmRuntimeInstance представляет среду выполнения, которая загружается в DkmProcess и содержит код для отладки.

(Унаследовано от DkmModuleInstance)
Size

[Необязательно] Количество байтов в области памяти модуля. Это значение будет равно нулю, если модуль не загрузится в непрерывном блоке памяти.

(Унаследовано от DkmModuleInstance)
SymbolFileId

[Необязательно] Содержит сведения, необходимые для поиска символов для этого модуля. В Win32 эти сведения содержатся в IMAGE_DEBUG_DIRECTORY.

(Унаследовано от DkmModuleInstance)
TagValue

DkmModuleInstance — это абстрактный базовый класс. Это перечисление указывает, какой производный класс является экземпляром этого объекта.

(Унаследовано от DkmModuleInstance)
TimeDateStamp

Дата и время сборки загруженного модуля. Это значение получается из IMAGE_NT_HEADERS загруженного модуля. Единица измерения — это значение FILETIME, которое представляет собой 64-разрядное значение, представляющее количество 100-наносекундных интервалов с 1 января 1601 г. (UTC).

(Унаследовано от DkmModuleInstance)
UniqueId

Уникально идентифицирует объект DkmModuleInstance.

(Унаследовано от DkmModuleInstance)
Version

[Необязательно] Сведения о версии файла.

(Унаследовано от DkmModuleInstance)

Методы

ClearTransitionModuleFlag()

Экземпляры среды выполнения вызывают этот метод, чтобы пометить модуль как пограничный модуль. При пошаговом выполнении среды выполнения должны проверка, если шаг достиг пограничного модуля, и при необходимости начать арбитраж шагов. Обратите внимание, что некоторые среды выполнения могут не выполнить этот запрос. Диспетчер будет вести подсчет количества вызовов FlagAsTransitionModule. Модуль больше не будет считаться переходным модулем, только если соответствующее число вызовов ClearTransitionModuleFlag.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmModuleInstance)
Create(String, String, UInt64, DkmRuntimeInstance, DkmModuleVersion, DkmSymbolFileId, DkmModuleFlags, DkmModuleMemoryLayout, UInt64, UInt32, UInt32, String, Boolean, DkmModule, DkmModuleInstance+MinidumpInfo, DkmDataItem)

Create новый экземпляр объекта DkmCustomModuleInstance.

Этот метод отправляет событие ModuleInstanceLoad.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

Decompile()

Декомпилирует код модуля на C# и создает новый переносимый PDB-файл с внедренным источником. Все модули, которые совместно используют этот файл символов, начнут использовать эти обновленные символы.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 16 с обновлением 5 (DkmApiVersion.VS16Update5).

(Унаследовано от DkmModuleInstance)
Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult>)

Декомпилирует код модуля на C# и создает новый переносимый PDB-файл с внедренным источником. Все модули, которые совместно используют этот файл символов, начнут использовать эти обновленные символы.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 16 с обновлением 5 (DkmApiVersion.VS16Update5).

(Унаследовано от DkmModuleInstance)
Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult173>)

Декомпилирует код модуля на C# и создает новый переносимый PDB-файл с внедренным источником. Все модули, которые совместно используют этот файл символов, начнут использовать эти обновленные символы. Реализации должны возвращать S_OK при сбое и возвращать фактические данные HRESULT и любые дополнительные сведения об ошибке с помощью параметров HR и ErrorMessage.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 17 с обновлением 3 (DkmApiVersion.VS17Update3).

(Унаследовано от DkmModuleInstance)
Decompile(String, Int32)

Декомпилирует код модуля на C# и создает новый переносимый PDB-файл с внедренным источником. Все модули, которые совместно используют этот файл символов, начнут использовать эти обновленные символы. Реализации должны возвращать S_OK при сбое и возвращать фактические данные HRESULT и любые дополнительные сведения об ошибке с помощью параметров HR и ErrorMessage.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 17 с обновлением 3 (DkmApiVersion.VS17Update3).

(Унаследовано от DkmModuleInstance)
FlagAsTransitionModule()

Экземпляры среды выполнения вызывают этот метод, чтобы пометить модуль как пограничный модуль. При пошаговом выполнении среды выполнения должны проверка, если шаг достиг пограничного модуля, и при необходимости начать арбитраж шагов. Обратите внимание, что некоторые среды выполнения могут не выполнить этот запрос. Диспетчер будет вести подсчет количества вызовов. Модуль больше не будет считаться переходным модулем, только если выполнено соответствующее число вызовов ClearTransitionModuleFlag.

Ограничение расположения: API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmModuleInstance)
GetDataItem<T>()

Возвращает экземпляр "T", добавленный в этот экземпляр контейнера. Если этот контейнер не содержит "T", эта функция возвращает значение NULL.

(Унаследовано от DkmDataContainer)
GetGPUDisassembly(UInt64, UInt32, Boolean, Boolean)

Получите дизассемблированное значение диапазона адресов в экземпляре модуля отладки.

(Унаследовано от DkmModuleInstance)
GetGPUDisassemblySize()

Возвращает размер дизассемблатора в экземпляре модуля отладки.

(Унаследовано от DkmModuleInstance)
GetNextGPUInstructionAddress(UInt64)

Возвращает адрес следующей инструкции относительно начального адреса.

(Унаследовано от DkmModuleInstance)
GetSymbolLoadInformation()

Возвращает строку, описывающую различные расположения, в которых выполнялись поиски символов, и результат проверки этого расположения. Эти сведения используются для заполнения "Сведения о загрузке символов" в окне модулей.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

(Унаследовано от DkmModuleInstance)
GetSymbolSearchResult()

Извлекает любые результаты поиска символов, связанные с этим экземпляром модуля.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 17 с обновлением 3 (DkmApiVersion.VS17Update3).

(Унаследовано от DkmModuleInstance)
GetSymbolSearchResult(DkmWorkList, DkmCompletionRoutine<DkmGetSymbolSearchResultAsyncResult>)

Извлекает любые результаты поиска символов, связанные с этим экземпляром модуля.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 17 с обновлением 3 (DkmApiVersion.VS17Update3).

(Унаследовано от DkmModuleInstance)
GetSymbolStatusMessage(Boolean)

Получите локализованное строковое описание текущего состояния символа.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

(Унаследовано от DkmModuleInstance)
GetSymbolStatusMessage(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSymbolStatusMessageAsyncResult>)

Получите локализованное строковое описание текущего состояния символа.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

(Унаследовано от DkmModuleInstance)
IsSuppressed()

Этот метод позволяет компоненту определить, подавлялось ли событие загрузки модуля.

Этот API появился в Visual Studio 12 с обновлением 3 (DkmApiVersion.VS12Update3).

(Унаследовано от DkmModuleInstance)
IsTransitionModule()

Возвращает значение true, если какой-либо экземпляр среды выполнения помечает этот модуль как модуль перехода.

Ограничение расположения. API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmModuleInstance)
IsUserCode()

Определяет, считается ли модуль пользовательским кодом.

Ограничение расположения. Этот метод можно вызвать из компонента интегрированной среды разработки. Начиная с Visual Studio 2013 с обновлением 2 его также можно вызвать из компонента мониторинга для управляемого кода. В Visual Studio 2017 с обновлением 8 callDirection API был сделан "двунаправленным" из "Normal" и теперь может вызываться из любого компонента. AsyncCaller было задано значение true, а для CallerLocationConstraint — значение None из NoMarshalling.

Этот API появился в Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Унаследовано от DkmModuleInstance)
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmModuleInstanceIsUserCodeAsyncResult>)

Определяет, считается ли модуль пользовательским кодом.

Этот метод добавляет новый рабочий элемент в указанный список работ и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен с помощью процедуры завершения.

Ограничение расположения. Этот метод можно вызвать из компонента интегрированной среды разработки. Начиная с Visual Studio 2013 с обновлением 2 его также можно вызвать из компонента мониторинга для управляемого кода. В Visual Studio 2017 с обновлением 8 callDirection API был сделан "двунаправленным" из "Normal" и теперь может вызываться из любого компонента. AsyncCaller было задано значение true, а для CallerLocationConstraint — значение None из NoMarshalling.

Этот API появился в Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Унаследовано от DkmModuleInstance)
OnBinaryLoaded(String)

Вызов события BinaryLoaded. Компоненты, реализующие интерфейс приемника событий, получат уведомление о событии. Элемент управления возвращается после уведомления всех компонентов.

Этот API появился в Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Унаследовано от DkmModuleInstance)
OnBinaryReloadOpportunity()

Создайте событие BinaryReloadOpportunity. Компоненты, реализующие интерфейс приемника событий, получат уведомление о событии. Элемент управления возвращается после уведомления всех компонентов.

Ограничение расположения. API должен вызываться из компонента Monitor (уровень < компонента 100 000).

Этот API появился в Visual Studio 12 с обновлением 2 (DkmApiVersion.VS12Update2).

(Унаследовано от DkmModuleInstance)
OnModuleModified()

Этот метод вызывается при изменении модуля из-за EnC или динамически выдаваемого кода.

Ограничение расположения. API должен вызываться из компонента Monitor (уровень < компонента 100 000).

Этот API появился в Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

(Унаследовано от DkmModuleInstance)
OnSymbolsLoaded(DkmModule, Boolean)

Этот метод вызывается базовыми мониторами отладки в ответ на вызов IDkmModuleSymbolsLoaded.RaiseSymbolsLoadedEvent. Этот метод должен вызываться из потока событий или из потока запроса в рамках перезагрузки. Базовые мониторы отладки должны синхронно переключаться на поток событий, приостанавливать целевой процесс и вызывать OnSymbolsLoaded.

Ограничение расположения. API должен вызываться из компонента Monitor (уровень < компонента 100 000).

(Унаследовано от DkmModuleInstance)
OnSymbolsUpdated(DkmModule)

Вызов события ModuleSymbolsUpdated. Компоненты, реализующие интерфейс приемника событий, получат уведомление о событии. Элемент управления возвращается после уведомления всех компонентов.

(Унаследовано от DkmModuleInstance)
ReadSymbols()

Этот метод вызывается обработчиками символов для чтения символов для экземпляров DkmModuleInstance, символы которых находятся в памяти отладчика.

(Унаследовано от DkmModuleInstance)
RemoveDataItem<T>()

Удалите экземпляр T из этого контейнера. Обычно не требуется вызывать этот метод, так как контейнер данных автоматически очищается при закрытии объекта.

(Унаследовано от DkmDataContainer)
SetDataItem<T>(DkmDataCreationDisposition, T)

Поместите новый элемент в контейнер данных.

(Унаследовано от DkmDataContainer)
SetDisabled(Boolean)

Обновления состояние отключенного модуля. Этот метод может вызываться только из события ModuleInstanceLoad. При отключении модуля обычно также подавляется событие загрузки модуля.

(Унаследовано от DkmModuleInstance)
SetModule(DkmModule, Boolean)

Этот метод вызывается поставщиком символов для связывания DkmModule с DkmModuleInstance и для активации события ModuleSymbolsLoaded. Он может вызываться только один раз для объекта DkmModuleInstance. Вызов этого API создаст связь DkmModule-DkmModuleInstance<>, а также вызовет событие ModuleSymbolsLoaded.

(Унаследовано от DkmModuleInstance)
TryLoadBinary()

Попытайтесь загрузить двоичный файл, который ранее не удалось загрузить, используя обновленные пути к символам.

(Унаследовано от DkmModuleInstance)
TryLoadBinary(DkmWorkList, DkmCompletionRoutine<DkmTryLoadBinaryAsyncResult>)

Попытайтесь загрузить двоичный файл, который ранее не удалось загрузить, используя обновленные пути к символам.

Этот метод добавляет новый рабочий элемент в указанный список работ и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен с помощью процедуры завершения.

(Унаследовано от DkmModuleInstance)
TryLoadSymbols()

Вызывается для запуска загрузки символов для экземпляров DkmModuleInstance, символы которых не были найдены при загрузке модуля.

Ограничение расположения: API должен вызываться из компонента интегрированной среды разработки (уровень > компонента 100 000).

(Унаследовано от DkmModuleInstance)
TryLoadSymbols(DkmSymbolLoadFlags)

Вызывается для запуска загрузки символов для экземпляров DkmModuleInstance, символы которых не были найдены при загрузке модуля.

Ограничение расположения: API должен вызываться из компонента интегрированной среды разработки (уровень > компонента 100 000).

Этот API появился в Visual Studio 17 с обновлением 4 (DkmApiVersion.VS17Update4).

(Унаследовано от DkmModuleInstance)
TryLoadSymbols(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>)

Вызывается для запуска загрузки символов для экземпляров DkmModuleInstance, символы которых не были найдены при загрузке модуля.

Этот метод добавляет новый рабочий элемент в указанный список работ и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен с помощью процедуры завершения.

Ограничение расположения: API должен вызываться из компонента интегрированной среды разработки (уровень > компонента 100 000).

(Унаследовано от DkmModuleInstance)
TryLoadSymbols(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>)

Вызывается для запуска загрузки символов для экземпляров DkmModuleInstance, символы которых не были найдены при загрузке модуля.

Этот метод добавляет новый рабочий элемент в указанный список работ и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен с помощью процедуры завершения.

Ограничение расположения: API должен вызываться из компонента интегрированной среды разработки (уровень > компонента 100 000).

Этот API появился в Visual Studio 17 с обновлением 4 (DkmApiVersion.VS17Update4).

(Унаследовано от DkmModuleInstance)
TryLoadSymbolsCallback()

Вызывается для запуска загрузки символов для экземпляров DkmModuleInstance, символы которых не были найдены при загрузке модуля.

Ограничение расположения. Это можно вызвать с клиента или сервера. Реализация этого сервера представляет собой кэш для предотвращения ненужных сетевых вызовов. Клиент переходит непосредственно к реальной реализации, которая также гарантирует, что повторные методы возвращаются раньше.

Этот API появился в Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

(Унаследовано от DkmModuleInstance)
TryLoadSymbolsCallback(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsCallbackAsyncResult>)

Вызывается для запуска загрузки символов для экземпляров DkmModuleInstance, символы которых не были найдены при загрузке модуля.

Этот метод добавляет новый рабочий элемент в указанный список работ и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен с помощью процедуры завершения.

Ограничение расположения. Это можно вызвать с клиента или сервера. Реализация этого сервера представляет собой кэш для предотвращения ненужных сетевых вызовов. Клиент переходит непосредственно к реальной реализации, которая также гарантирует, что повторные методы возвращаются раньше.

Этот API появился в Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

(Унаследовано от DkmModuleInstance)
TryLoadSymbolsCallback177(DkmSymbolLoadFlags)

Вызывается для запуска загрузки локально представленных символов для экземпляров DkmModuleInstance, символы которых не были найдены при загрузке модуля.

Ограничение расположения. Это можно вызвать с клиента или сервера. Реализация этого сервера представляет собой кэш для предотвращения ненужных сетевых вызовов. Клиент переходит непосредственно к реальной реализации, которая также гарантирует, что повторные методы возвращаются раньше.

Этот API появился в Visual Studio 17 с обновлением 7 (DkmApiVersion.VS17Update7).

(Унаследовано от DkmModuleInstance)
TryLoadSymbolsCallback177(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsCallback177AsyncResult>)

Вызывается для запуска загрузки локально представленных символов для экземпляров DkmModuleInstance, символы которых не были найдены при загрузке модуля.

Этот метод добавляет новый рабочий элемент в указанный список работ и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен с помощью процедуры завершения.

Ограничение расположения. Это можно вызвать с клиента или сервера. Реализация этого сервера представляет собой кэш для предотвращения ненужных сетевых вызовов. Клиент переходит непосредственно к реальной реализации, которая также гарантирует, что повторные методы возвращаются раньше.

Этот API появился в Visual Studio 17 с обновлением 7 (DkmApiVersion.VS17Update7).

(Унаследовано от DkmModuleInstance)
Unload()

Пометьте объект Unload как выгруженный и уведомите компоненты, реализующие интерфейс приемника событий. Элемент управления возвращается после уведомления всех компонентов.

Этот метод может вызываться только компонентом, создавший объект .

(Унаследовано от DkmModuleInstance)

Применяется к