DkmModule Класс

Определение

Класс DkmModule представляет пакет кода (например, dll или exe), который был загружен в один или несколько процессов или один раз. Класс DkmModule является центральным объектом api символов и имеет значение 1:1 с нотацией загруженного обработчика символов. Если пакет кода загружается в три разных процесса (или один и тот же процесс, но с тремя разными базовыми адресами или тремя разными доменами приложения), но обработчик символов считает, что все эти процессы идентичны, будет только один объект модуля.

public ref class DkmModule : Microsoft::VisualStudio::Debugger::DkmDataContainer
[System.Runtime.InteropServices.Guid("9fdf7d9f-e5ab-b363-6282-1da170173343")]
public class DkmModule : Microsoft.VisualStudio.Debugger.DkmDataContainer
[<System.Runtime.InteropServices.Guid("9fdf7d9f-e5ab-b363-6282-1da170173343")>]
type DkmModule = class
    inherit DkmDataContainer
Public Class DkmModule
Inherits DkmDataContainer
Наследование
Наследование
Атрибуты

Свойства

CompilerId

LanguageId/VendorId для компилятора, который создал весь код в этом модуле. Это guid.Empty/Guid.Empty, если модуль может содержать сочетание языков. Для модулей на основе PDB это почти всегда будет guid.Empty/Guid.Empty. Он обычно используется динамическими языками, чтобы избежать сетевых кругового пути для обнаружения языка каждого символа.

Connection

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

FilePath

[Необязательно] Если этот параметр указан, он содержит полный путь к файлу символов, который поддерживает DkmModule (например, c:\myproj\bin\Debug\myproj.pdb).

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

Flags

Флаги, указывающие признаки данного объекта DkmModule.

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

Id

Пара GUID, используемая для уникальной идентификации конкретного экземпляра DkmModule.

IsUnloaded

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

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

Имя модуля.

SymbolsConnection

[Необязательно] Если значение не равно NULL, это указывает подключение к рабочему процессу, в котором обрабатываются символы для этого DkmModule. Это значение будет иметь значение NULL, если символы загружаются в процессе интегрированной среды разработки или если они загружены в удаленный отладчик (DkmModule.Connection имеет значение, отличное от NULL).

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

Методы

Create(DkmModuleId, String, DkmCompilerId, DkmTransportConnection, DkmDataItem)

Создает новый объект DkmModule, представляющий символы для одного или нескольких загруженных модулей (экземпляров модуля). Эти объекты создаются поставщиками символов. После создания объекта DkmModule поставщики символов должны вызвать DkmModuleInstance.SetModule, чтобы связать DkmModuleInstance и DkmModule.

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

Create(DkmModuleId, String, DkmCompilerId, DkmTransportConnection, DkmWorkerProcessConnection, String, DkmDataItem)

Создает новый объект DkmModule, представляющий символы для одного или нескольких загруженных модулей (экземпляров модуля). Эти объекты создаются поставщиками символов. После создания объекта DkmModule поставщики символов должны вызвать DkmModuleInstance.SetModule, чтобы связать DkmModuleInstance и DkmModule.

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

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

Create(DkmModuleId, String, DkmCompilerId, DkmTransportConnection, DkmWorkerProcessConnection, String, DkmModuleSymbolFlags, DkmDataItem)

Создает новый объект DkmModule, представляющий символы для одного или нескольких загруженных модулей (экземпляров модуля). Эти объекты создаются поставщиками символов. После создания объекта DkmModule поставщики символов должны вызвать DkmModuleInstance.SetModule, чтобы связать DkmModuleInstance и DkmModule.

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

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

EnumSymbolsDocuments()

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

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

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

EnumSymbolsDocuments(DkmWorkList, DkmCompletionRoutine<DkmEnumSymbolsDocumentsAsyncResult>)

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

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

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

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

FindDocuments(DkmSourceFileId)

Возвращает объекты документа из параметров поиска, содержащихся в запросе к документу. Если файл символов не содержит ссылку на этот документ, возвращенный объект документа будет иметь значение NULL (S_FALSE код возврата в машинном коде). Возвращаемые объекты документа должны быть явно закрыты вызывающим объектом, когда вызывающий объект завершает работу с документом.

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

FindDocuments(DkmWorkList, DkmSourceFileId, DkmCompletionRoutine<DkmFindDocumentsAsyncResult>)

Возвращает объекты документа из параметров поиска, содержащихся в запросе к документу. Если файл символов не содержит ссылку на этот документ, возвращенный объект документа будет иметь значение NULL (S_FALSE код возврата в машинном коде). Возвращаемые объекты документа должны быть явно закрыты вызывающим объектом, когда вызывающий объект завершает работу с документом.

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

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

FindModule(DkmModuleId)

Найдите объект DkmModule. Если нет объекта с заданным входным ключом, метод FindModule завершится ошибкой.

GetAcceleratorTagTableSize(UInt32)

Возвращает адрес C++ AMP для регистра.

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

GetCompilerOptions()

Этот метод возвращает флаги компилятора заданного модуля GPU.

GetDataItem<T>()

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

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

GetEntryPointSymbols используется диспетчером точек останова для поиска символов точек входа в запускаемом исполняемом файле. Для управляемого кода этот символ определяется с помощью ISymUnmanagedWriter::SetUserEntryPoint. Для машинного кода этот символ можно найти, выполнив поиск различных функций "main" (main, WinMain и т. д.). Третий может переопределить точку входа, реализовав собственный поставщик символов или реализовав IDkmEntryPointQuery.

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

GetExpensiveHashValue(DkmSourceFileId, DkmHashAlgorithmId)

Извлекает значение "дорогого" хэша из предоставленного DkmSourceFileId.

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

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

GetFirstMethodInFirstDocument()

Возвращает первый метод в первом документе.

GetFunctionInfo(DkmWorkList, String, DkmCompletionRoutine<DkmGetFunctionInfoAsyncResult>)

Поиск символы модуля для функции с указанным именем. Возвращает RVA и размер, если он найден.

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

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

GetFunctionInfo(String)

Поиск символы модуля для функции с указанным именем. Возвращает RVA и размер, если он найден.

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

GetFunctionLabels(UInt64)

Возвращает имя символа для RVA.

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

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

GetFunctionRva(UInt64)

Возвращает RVA функции, содержащей указанный RVA.

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

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

GetInstructionOffsetForRva(UInt32)

GetInstructionOffsetForRva используется компонентами для запроса поставщика символов для выполнения смещения инструкций и преобразования RVA для DPC++.

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

GetLinkerFixupRecords()

Извлекает записи исправления компоновщика для модуля.

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

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

GetMethodSymbolStoreData(DkmClrMethodId)

Возвращает области в методе . Всегда будет по крайней мере один область.

GetMethodSymbolStoreData(DkmWorkList, DkmClrMethodId, DkmCompletionRoutine<DkmGetMethodSymbolStoreDataAsyncResult>)

Возвращает области в методе . Всегда будет по крайней мере один область.

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

GetMethodSymbolStoreDataPreRemap(DkmClrMethodId, Int32)

Возвращает области в методе . Всегда будет по крайней мере один область.

GetMethodSymbolStoreDataPreRemap(DkmWorkList, DkmClrMethodId, DkmCompletionRoutine<DkmGetMethodSymbolStoreDataPreRemapAsyncResult>)

Возвращает области в методе . Всегда будет по крайней мере один область.

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

GetModuleInstances()

DkmModule — это представление модуля обработчиком символов и не привязан к какому-либо процессу, подключению или экземпляру среды выполнения. Этот метод возвращает все экземпляры DkmModuleInstances, сопоставленные с этим DkmModule. DkmModule можно привязать к нулю экземпляров в том случае, если все модули теперь выгружены. В этом случае GetModuleInstances возвращает пустой массив (S_FALSE возвращает код в машинном коде).

GetModules()

GetModules перечисляет все созданные объекты DkmModule.

GetPointerToHLSLRegister(Int32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, Boolean)

Возвращает amp-адрес C++ для регистра.

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

GetPublicSymbolByNameCallback(DkmWorkList, String, DkmCompletionRoutine<DkmGetPublicSymbolByNameCallbackAsyncResult>)

Возвращает RVA для S_PUBLIC32 для определенного имени по строке.

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

GetPublicSymbolByNameCallback(String)

Возвращает RVA для S_PUBLIC32 для определенного имени по строке.

GetRegisterRelativeSymbolName(DkmWorkList, UInt32, Int32, UInt32, DkmProcessorArchitecture, DkmCompletionRoutine<DkmGetRegisterRelativeSymbolNameAsyncResult>)

Возвращает имя символа для относительного регистра значения.

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

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

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

GetRegisterRelativeSymbolName(UInt32, Int32, UInt32, DkmProcessorArchitecture)

Возвращает имя символа для относительного регистра значения.

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

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

GetScriptDocuments()

GetScriptDocuments перечисляет элементы DkmScriptDocument этого объекта DkmModule.

GetSourceLinkData(DkmModuleInstance)

Возвращает содержимое данных потока исходных ссылок для модуля, если поток существует.

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

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

GetSourceLinkData(DkmWorkList, DkmModuleInstance, DkmCompletionRoutine<DkmGetSourceLinkDataAsyncResult>)

Возвращает содержимое данных потока исходных ссылок для модуля, если поток существует.

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

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

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

GetSourceLinkInfo(String)

Возвращает данные SourceLink из файла символов для запрошенного пути к файлу.

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

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

GetSourceServerData(DkmModuleInstance)

Возвращает содержимое данных потока исходного сервера для модуля, если поток существует.

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

GetSourceServerData(DkmWorkList, DkmModuleInstance, DkmCompletionRoutine<DkmGetSourceServerDataAsyncResult>)

Возвращает содержимое данных потока исходного сервера для модуля, если поток существует.

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

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

GetSymbolFilePath()

Возвращает путь к файлу символов, который поддерживает объект DkmModule.

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

GetSymbolFilePath(DkmWorkList, DkmCompletionRoutine<DkmGetSymbolFilePathAsyncResult>)

Возвращает путь к файлу символов, который поддерживает объект DkmModule.

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

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

GetSymbolFileRawBytes()

GetSymbolFileRawBytes используется для получения необработанных байтов файла символов с удаленной стороны. В настоящее время это поддерживается только для динамических переносимых PDB. Возвращается не более 10 МБ.

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

Этот API появился в микрообновление Visual Studio 14 с обновлением 3 (DkmApiVersion.VS14Update3MicroUpdate).

GetSymbolInterface(Guid)

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

Ограничение расположения. За исключением управляемых символов, этот метод должен вызываться из того же процесса, в котором поставщик символов открыл файл символов. Для собственных PDB-файлов это означает, что API должен вызываться из процесса интегрированной среды разработки. Для управляемых символов подмножество API поставщика символов предоставляется по обе стороны удаленного подключения.

GetSymbolNameForRVA(DkmWorkList, UInt32, DkmCompletionRoutine<DkmGetSymbolNameForRVAAsyncResult>)

Возвращает имя символа для RVA.

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

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

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

GetSymbolNameForRVA(UInt32, UInt64)

Возвращает имя символа для RVA.

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

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

GetTokenSymbolStoreAttribute(DkmWorkList, Int32, Boolean, String, DkmCompletionRoutine<DkmGetTokenSymbolStoreAttributeAsyncResult>)

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

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

GetTokenSymbolStoreAttribute(Int32, Boolean, String)

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

IsValidAcceleratorTag(UInt32, UInt32)

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

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

OnModuleSymbolsReplaced()

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

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

RemoveDataItem<T>()

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

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

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

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

Задает адрес C++ AMP для регистра.

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

SymbolsHaveEmbeddedDocuments()

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

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

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

TranslateAcceleratorTagByIP(UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32)

Преобразование тега указателя ускорителя в атрибуты регистра HLSL.

TranslateAcceleratorTagByRva(UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32)

Преобразование тега указателя ускорителя в атрибуты регистра HLSL с помощью относительного виртуального адреса.

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

UndecorateName(String, UInt32)

Отменяет описку имени символа.

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

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