DkmProcess Класс

Определение

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

public ref class DkmProcess : Microsoft::VisualStudio::Debugger::DkmDataContainer
[System.Runtime.InteropServices.Guid("a6eaf62b-6db1-4f38-6359-46e9262d7a0a")]
public class DkmProcess : Microsoft.VisualStudio.Debugger.DkmDataContainer
[<System.Runtime.InteropServices.Guid("a6eaf62b-6db1-4f38-6359-46e9262d7a0a")>]
type DkmProcess = class
    inherit DkmDataContainer
Public Class DkmProcess
Inherits DkmDataContainer
Наследование
Наследование
Атрибуты

Свойства

BaseDebugMonitorId

DkmBaseDebugMonitorId определяет базовый монитор отладки, используемый для проверки отлаживаемого процесса и управления ими. Например, DkmBaseDebugMonitorId.WindowsProcess используется для процессов, отлаживаемых API отладки Win32, а DkmBaseDebugMonitorId.DumpFile используется для минидампов.

Connection

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

DebugLaunchSettings

Параметры, предоставляемые во время запуска операции отладки из системы проекта или другого вызывающего объекта LaunchDebugTargets (или других API запуска отладки).

EngineSettings

Содержит параметры отладки на уровне сеанса. Существует один экземпляр этого объекта для каждого модуля GUID (например, один экземпляр для COMPlusOnlyEng2, один экземпляр для COMPlusNativeEng).

IsAppPackage

Значение true, если процесс принадлежит пакету приложения Магазина Windows или пакету приложения Windows Phone.

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

IsMultiArch

Значение true, если процесс содержит код из нескольких архитектур.

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

IsNativeDebuggingEnabled

При значении true отладчик попытается выполнить отладку машинного кода: он остановится на собственных исключениях, загружает символы, отображает собственные кадры в стеке вызовов, выполняет привязку и попадание в точки останова, а также оставляет собственные потоки остановлены в состоянии останова.

IsUnloaded

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

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

[Необязательно] Сведения, относящиеся к запущенным процессам. Например, эта часть не будет присутствовать для минидампов.

Path

Полный путь к начальному исполняемому файлу процесса.

StartMethod

StartMethod описывает, как модуль отладки начал отладку этого процесса.

SystemInformation

Содержит сведения о компьютерной системе, в котором выполняется этот процесс. Если этот процесс выполняется в WOW (32-разрядная эмуляция в 64-разрядной ОС), эти сведения будут использоваться для 32-разрядной подсистемы, а не для 64-разрядной подсистемы.

UniqueId

Guid, который однозначно идентифицирует этот объект процесса. Это значение GUID совпадает с guid, предоставляемым на уровне SDM (IDebugProcess2::GetProcessId) и на уровне автоматизации.

Методы

AbortingFuncEvalExecution(DkmFuncEvalFlags)

AbortingFuncEvalExecution вызывается монитором отладки среды выполнения при прерывании вычисления функции. AbortingFuncEvalExecution обновит внутреннее состояние объекта DkmProcess, чтобы диспетчер событий остановки допустит два события остановки: полную точку останова оценки функции или асинхронный перерыв.

AddExceptionTrigger(DkmWorkList, Guid, DkmExceptionTrigger, DkmCompletionRoutine<DkmAddExceptionTriggerAsyncResult>)

Добавляет триггер исключения, чтобы при выполнении триггера исключения отправлялись события ExceptionTriggerHit.

Если для этого кортежа {SourceId, DkmExceptionTrigger} уже задано исключение, существующий триггер будет изменен с новыми параметрами. Например, если компонент определяет триггер для остановки при возникновении исключения нарушения доступа, а затем задает триггер для запуска при необработанных исключениях Win32, триггер нарушения доступа будет удален.

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

AddExceptionTrigger(Guid, DkmExceptionTrigger)

Добавляет триггер исключения, чтобы при выполнении триггера исключения отправлялись события ExceptionTriggerHit.

Если для этого кортежа {SourceId, DkmExceptionTrigger} уже задано исключение, существующий триггер будет изменен с новыми параметрами. Например, если компонент определяет триггер для остановки при возникновении исключения нарушения доступа, а затем задает триггер для запуска при необработанных исключениях Win32, триггер нарушения доступа будет удален.

AllocateVirtualMemory(UInt64, Int32, Int32, Int32)

Резервирует и (или) фиксирует область памяти в виртуальном адресном пространстве целевого процесса. Функция инициализирует память, выделенную в ноль, если MEM_RESET не используется. Дополнительные сведения см. в статье API Win32 VirtualAlloc на сайте MSDN.

AsyncBreak(Boolean)

Этот метод указывает мониторам отладки асинхронно прерывать выполнение процесса отладки. После завершения операции отправляется событие AsyncBreakComplete.

BeforeStopDebugging()

Обработчик, который получает уведомление перед завершением или отключением целевого процесса.

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

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

ClearAllGPUMemoryAccessWarnings()

Отключает все предупреждения о доступе к активной памяти GPU.

ClearExceptionTriggers(Guid)

Удаляет все триггеры исключений, заданные с определенным SourceId. После возврата этого метода триггеры исключений больше не будут вызывать события ExceptionTriggerHit. Триггеры исключений автоматически очищаются при закрытии объекта DkmProcess.

Create(DkmTransportConnection, String, Guid, DkmStartMethod, DkmEngineSettings, DkmDebugLaunchSettings, DkmSystemInformation, Guid, Boolean, Boolean, Boolean, DkmProcess+Live, DkmDataItem)

Создает новый объект процесса. Этот метод вызывается из базового монитора отладки в потоке событий в рамках обработки IDkmStartDebuggingOperations.AttachToProcess или IDkmStartDebuggingOperations.ResumeDebuggedProcess.

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

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

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

Create(DkmTransportConnection, String, Guid, DkmStartMethod, DkmEngineSettings, DkmDebugLaunchSettings, DkmSystemInformation, Guid, Boolean, Boolean, DkmProcess+Live, DkmDataItem)

Создает новый объект процесса. Этот метод вызывается из базового монитора отладки в потоке событий в рамках обработки IDkmStartDebuggingOperations.AttachToProcess или IDkmStartDebuggingOperations.ResumeDebuggedProcess.

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

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

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

Create(DkmTransportConnection, String, Guid, DkmStartMethod, DkmEngineSettings, DkmDebugLaunchSettings, DkmSystemInformation, Guid, Boolean, DkmProcess+Live, DkmDataItem)

Создает новый объект процесса. Этот метод вызывается из базового монитора отладки в потоке событий в рамках обработки IDkmStartDebuggingOperations.AttachToProcess или IDkmStartDebuggingOperations.ResumeDebuggedProcess.

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

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

CreateNativeInstructionAddress(UInt64)

Разрешает инструкцию ЦП в собственный модуль и возвращает DkmNativeInstructionAddress для представления этой инструкции ЦП. Если указатель инструкции находится не в модуле, возвращается объект DkmUnknownInstructionAddress.

Detach()

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

Disassemble(DkmInstructionAddress, UInt32)

Дизассемблировать диапазон адресов в процессе отладки.

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

FindNativeModule(UInt64)

Разрешает виртуальный адрес в собственный модуль. Если виртуальный адрес находится не в модуле, возвращается значение NULL (S_FALSE код возврата в машинном коде). Отключенные модули не будут возвращены.

FindNativeModule(UInt64, Boolean)

Разрешает виртуальный адрес в собственный модуль. Если виртуальный адрес находится не в модуле, возвращается значение NULL (S_FALSE код возврата в машинном коде).

FindProcess(Guid)

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

FindProcessSnapshot(UInt32)

Найдите элемент DkmProcessSnapshot в этом DkmProcess. Если нет элемента с заданным входным ключом, findProcessSnapshot завершится ошибкой.

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

FindRuntimeInstance(DkmRuntimeInstanceId)

Найдите элемент DkmRuntimeInstance в этом DkmProcess. Если нет элемента с заданным входным ключом, findRuntimeInstance завершится ошибкой.

FindSystemThread(Int32)

Найдите элемент DkmThread в этом DkmProcess. Если нет элемента с заданным входным ключом, findSystemThread завершится ошибкой. Если объект найден, он всегда будет содержать элемент System.

FreeVirtualMemory(UInt64, Int32, Int32)

Освобождает и (или) освобождает область памяти в виртуальном адресном пространстве целевого процесса. Дополнительные сведения см. в статье VirtualFree Win32 API на сайте MSDN.

GetComputeKernels()

GetComputeKernels перечисляет элементы DkmGPUComputeKernel этого объекта DkmProcess.

GetDataItem<T>()

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

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

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

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

GetDumpSaveTime()

Возвращает время сохранения минидампа.

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

GetEndingTimeContext()

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

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

GetGPUBreakpointBehavior()

Получение поведения точки останова процесса.

GetHandleCount()

Получает количество активных дескрипторов в процессе.

GetInstructionAddress(DkmInstructionAddress, Int32)

Возвращает адрес kth-инструкции относительно начального адреса. Для наборов инструкций постоянной длины это простая арифметика. Для наборов инструкций переменной длины для получения этого адреса требуется обратный дизассемблировать.

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

GetInstructionAddress(DkmWorkList, DkmInstructionAddress, Int32, DkmCompletionRoutine<DkmGetRelativeInstructionAddressAsyncResult>)

Возвращает адрес kth-инструкции относительно начального адреса. Для наборов инструкций постоянной длины это простая арифметика. Для наборов инструкций переменной длины для получения этого адреса требуется обратный дизассемблировать.

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

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

GetInstructionAddress(DkmWorkList, UInt64, DkmCompletionRoutine<DkmGetInstructionAddressAsyncResult>)

Разрешает инструкцию ЦПAddress в DkmInstructionAddress.

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

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

GetManagedStowedException()

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

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

GetMemoryReadTime(UInt64, UInt32, DkmMemoryTimeFlags)

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

Этот API появился в Visual Studio 15 с обновлением 8 (DkmApiVersion.VS15Update8).

GetNativeRuntimeInstance()

Предоставляет доступ к DkmRuntimeInstance, который предназначен для наивного кода в процессе. Существует ровно один экземпляр DkmRuntimeInstance для процесса.

GetNativeStowedException()

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

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

GetPendingBreakpoints()

GetPendingBreakpoints перечисляет элементы DkmPendingBreakpoint этого объекта DkmProcess.

GetProcesses()

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

GetProcessExecuteDirection()

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

Этот API появился в Visual Studio 15 с обновлением 8 (DkmApiVersion.VS15Update8).

GetProcessorArchitecture(UInt64, DkmProcessorArchitecture)

Определяет архитектуру для заданного адреса.

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

GetProcessSnapshots()

GetProcessSnapshots перечисляет элементы DkmProcessSnapshot этого объекта DkmProcess.

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

GetRunningTime()

Получает количество циклов синхронизации, выполняемых отладчиком с момента последнего вызова ResetRunningTime().

GetRuntimeFunctionResolutionRequests()

GetRuntimeFunctionResolutionRequests перечисляет элементы DkmRuntimeFunctionResolutionRequest этого объекта DkmProcess.

GetRuntimeInstances()

GetRuntimeInstances перечисляет элементы DkmRuntimeInstance этого объекта DkmProcess.

GetSerializedProcessInfo()

Получение сведений о сериализованном процессе.

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

GetSourceSnapshot()

Получите исходный объект snapshot для отлаживаемого процесса. Отлаживаемый процесс должен представлять моментальные снимки.

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

GetStowedExceptions()

Получение уложенных исключений из дампа.

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

GetSystemThreads()

Предоставляет список активных системных потоков в процессе. Потоки, которые не являются системными потоками (DkmThread::System имеет значение NULL) или были выгружены, не будут присутствовать в этой коллекции.

GetTargetCompositionServices(DkmTargetCompositionScenario, Object)

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

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

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

GetThreads()

GetThreads перечисляет элементы DkmThread этого объекта DkmProcess.

InvisibleWriteMemory(UInt64, Byte[])

Запись памяти в целевой процесс, но скрытие записи из вызовов ReadMemory. Этот API можно использовать для исправления инструкций или данных в целевом процессе для реализации функций отладчика. Перед передачей данных система проверяет, доступны ли все данные в базовом адресе и памяти указанного размера для записи. Если они недоступны, функция вызывает ошибку E_INVALID_MEMORY_ADDRESS.

IsLoadComplete()

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

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

IsStopped()

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

LocateBinary(String, String, String, UInt32, UInt32)

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

OnAsyncBreakComplete(DkmAsyncBreakStatus, DkmThread)

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

OnEntryPoint(DkmThread)

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

OnHiddenEntryPoint(DkmThread)

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

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

OnInstructionPatchInserted(UInt64, Byte[])

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

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

OnInstructionPatchRemoved(UInt64, Byte[])

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

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

OnLoadComplete()

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

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

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

OnProcessSnapshotAdded(DkmProcessSnapshot)

Обработчик, который получает уведомление после того, как процесс snapshot принимается для данного процесса.

Этот API появился в Visual Studio 15 с обновлением 6 (DkmApiVersion.VS15Update6).

OnProcessSnapshotRemoved(DkmProcessSnapshot)

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

Этот API появился в Visual Studio 15 с обновлением 6 (DkmApiVersion.VS15Update6).

OnTraceTimeContextSet(DkmTraceTimeContext, DkmTraceTimeContext, DkmTraceTimeContext, DkmThread)

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

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

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

QueryPerformanceCounters(DkmWorkList, DkmCompletionRoutine<DkmPerformanceCountersAsyncResult>)

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

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

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

ReadMemory(UInt64, DkmReadMemoryFlags, Byte[])

Чтение памяти целевого процесса.

ReadMemory(UInt64, DkmReadMemoryFlags, Void*, Int32)

Чтение памяти целевого процесса.

ReadMemoryString(UInt64, DkmReadMemoryFlags, UInt16, Int32)

Считывает строку, завершаемую значением NULL, из памяти целевого процесса. Его можно использовать для чтения строк ANSI или Юникода (UTF-8, UTF-16 или UTF-32).

RemoveDataItem<T>()

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

(Унаследовано от DkmDataContainer)
RemoveExceptionTrigger(DkmWorkList, Guid, DkmExceptionTrigger, DkmCompletionRoutine<DkmRemoveExceptionTriggerAsyncResult>)

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

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

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

RemoveExceptionTrigger(Guid, DkmExceptionTrigger)

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

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

RemoveSnapshotById(UInt32)

Удалите моментальные снимки процесса для этого процесса.

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

RemoveSnapshots()

Удалите моментальные снимки процесса для этого процесса.

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

SearchRuntimeFunctionTable(UInt64, UInt64)

По возможности метод возвращает содержимое IMAGE_RUNTIME_FUNCTION_ENTRY для адреса. Для поиска статических записей вызывающие элементы должны вызывать эквивалентный метод в DkmNativeModuleInstance.

SetCoreDumpParserTargetCompositionServices(Object)

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

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

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

SetDataItem<T>(DkmDataCreationDisposition, T)

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

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

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

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

SetGPUMemoryAccessWarning(Int32, Boolean)

Включает или отключает определенное предупреждение о доступе к памяти GPU.

SetProcessExecuteDirection(DkmProcessExecuteDirection)

Задает направление выполнения процессов. Направление может быть как вперед, так и в обратном направлении. Этот метод реализуется только для процессов перемещения по времени.

Этот API появился в Visual Studio 15 с обновлением 8 (DkmApiVersion.VS15Update8).

SetRunningTime(UInt64)

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

StoppingEventProcessingBegin(Boolean)

StoppingEventProcessingBegin вызывается базовым монитором отладки в потоке событий. Он уведомляет диспетчера о том, что целевой процесс остановлен и, возможно, достиг события остановки. Например, базовый отладочный монитор Win32 вызывает этот метод всякий раз, когда получает EXCEPTION_DEBUG_EVENT из операционной системы. Этот метод обновляет внутреннее состояние объекта DkmProcess, чтобы разрешить отправку событий остановки.

StoppingEventProcessingContinue()

Метод StoppingEventProcessingContinue вызывается базовым монитором отладки в потоке событий. Этот метод вызывается после выдачи всех событий остановки в текущем пакете (например, DkmRuntimeBreakpoint.OnHit). Этот метод уведомляет компоненты, которые реализовали интерфейс уведомления о событиях остановки, и вызовет диспетчер выполнения для переноса процесса в безопасную точку. Базовый монитор отладки должен вызывать StoppingEventProcessingContinue после успешного вызова Метода StoppingEventProcessingBegin. базовый монитор отладки после выдачи всех событий остановки.

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

TakeSnapshot(UInt64, DkmThread)

Выполните snapshot отладчика.

Ограничение расположения: Сервер.

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

TakeSnapshotWithException(UInt64, DkmExceptionInformation)

Выполните snapshot отладчика.

Ограничение расположения: Сервер.

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

Terminate(Int32)

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

TryLocateBinary(String, String, String, UInt32, UInt32)

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

Этот API появился в Visual Studio 11 с обновлением 1 (DkmApiVersion.VS11FeaturePack1).

Unload(Int32)

ProcessExit отправляется диспетчером при вызове монитором DkmProcess::Unload.

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

VolatileReadMemory(UInt64, Byte[])

Чтение памяти из целевого процесса. Этот метод отличается от ReadMemory тем, что этот метод можно вызывать в любое время (а не только при остановке целевого объекта), и отладчик не будет пытаться кэшировать результат этой операции.

VolatileReadMemory(UInt64, Void*, Int32)

Чтение памяти из целевого процесса. Этот метод отличается от ReadMemory тем, что этот метод можно вызывать в любое время (а не только при остановке целевого объекта), и отладчик не будет пытаться кэшировать результат этой операции.

VolatileWriteMemory(UInt64, Byte[])

Запись в память целевого процесса. Этот метод отличается от WriteMemory тем, что этот метод можно вызывать в любое время (а не только при остановке целевого объекта), и отладчик не будет пытаться кэшировать результат этой операции. Если не удается записать память, возникает ошибка E_INVALID_MEMORY_ADDRESS. Поскольку запись в память может выполняться в режиме выполнения, этот сбой может произойти после того, как операция копирования уже началась, что может привести к повреждению памяти в целевом процессе. По этой причине эту функцию необходимо использовать с осторожностью, и сбои могут быть неустранимы.

WaitForPausingEventProcessingComplete(Int32, Boolean)

Этот метод можно вызвать из компонента монитора, чтобы дождаться завершения любой неостанавливающейся обработки событий с приостановкой, а также любой обработки IDkmProcessContinueNotification, которая в настоящее время выполняется. Помимо прочего, это может быть полезно при попытке прервать func-evals, убедившись, что целевой процесс имеет возможность для запуска. Обратите внимание, что этот метод не гарантирует, что события приостановки не будут немедленно выполняться, поэтому в коде не следует предполагать, что после возврата из этого API обработка событий не останавливается.

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

Этот API появился в Visual Studio 15 с обновлением 6 (DkmApiVersion.VS15Update6).

WriteDump(DkmDumpType, String, DkmThread)

Этот метод записывает дамп памяти процесса в указанный путь.

WriteMemory(UInt64, Byte[])

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

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