Freigeben über


DkmProcess Klasse

Definition

DkmProcess stellt einen Zielprozess dar, der debuggt wird. Der Debugger debuggt Prozesse, sodass dies die grundlegende Debugeinheit ist. Ein DkmProcess kann einen Systemprozess oder einen virtuellen Prozess wie Minidumps darstellen.

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
Vererbung
Vererbung
Attribute

Eigenschaften

BaseDebugMonitorId

DkmBaseDebugMonitorId identifiziert den Basisdebugmonitor, der zum Überprüfen und Steuern des debuggten Prozesses verwendet wird. Beispielsweise wird DkmBaseDebugMonitorId.WindowsProcess für Prozesse verwendet, die von der Win32-Debug-API debuggen, und DkmBaseDebugMonitorId.DumpFile wird für Minidumps verwendet.

Connection

Dies stellt eine Verbindung zwischen dem Monitor und der IDE dar. Es kann sich entweder um eine lokale Verbindung handelt, wenn der Monitor im selben Prozess wie die IDE ausgeführt wird, oder es kann sich um eine Remoteverbindung handelt. Im Überwachungsprozess gibt es nur eine Verbindung.

DebugLaunchSettings

Einstellungen, die während eines Startdebuggingvorgangs von einem Projektsystem oder einem anderen Aufrufer von LaunchDebugTargets (oder verschiedenen anderen Startdebugging-APIs) bereitgestellt werden.

EngineSettings

Enthält die sitzungsweiten Debugeinstellungen. Es gibt eine instance dieses Objekts pro Engine-Guid (z. B. eine instance für COMPlusOnlyEng2, eine instance für COMPlusNativeEng).

IsAppPackage

True, wenn der Prozess zu einem Windows Store-App-Paket oder Windows Phone App-Paket gehört.

Diese API wurde in Visual Studio 12 RTM (DkmApiVersion.VS12RTM) eingeführt.

IsMultiArch

True, wenn der Prozess Code aus mehreren Architekturen enthält.

Diese API wurde in Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) eingeführt.

IsNativeDebuggingEnabled

Wenn true, versucht der Debugger, nativen Code zu debuggen. Er beendet native Ausnahmen, lädt Symbole, zeigt systemeigene Frames auf der Aufrufliste an, bindet und trifft Haltepunkte und lässt native Threads im Unterbrechungszustand beendet.

IsUnloaded

Gibt true zurück, wenn ein "entladenes" Ereignis für dieses Objekt ausgelöst wurde (Beispiel: DkmThread::Unload wird aufgerufen) oder wenn das Objekt geschlossen wurde. Beachten Sie, dass beim Überprüfen dieser status sorgfältig darauf geachtet werden muss, dass die zurückgegebene status nach dem Lesen möglicherweise nicht mehr korrekt ist.

(Geerbt von DkmDataContainer)
LivePart

[Optional] Informationen, die für einen ausgeführten Prozess relevant sind. Dieser Teil ist beispielsweise nicht für Minidumps vorhanden.

Path

Vollständiger Pfad zur ausführbaren Startdatei des Prozesses.

StartMethod

StartMethod beschreibt, wie die Debug-Engine mit dem Debuggen dieses Prozesses begonnen hat.

SystemInformation

Enthält Informationen zum Computersystem, unter dem dieser Prozess ausgeführt wird. Wenn dieser Prozess unter WOW (32-Bit-Emulation auf einem 64-Bit-Betriebssystem) ausgeführt wird, gelten diese Informationen für das 32-Bit-Subsystem und nicht für das 64-Bit-Subsystem.

UniqueId

Guid, die dieses Prozessobjekt eindeutig identifiziert. Dieser Guid-Wert ist identisch mit dem Guid, der auf der SDM-Ebene (IDebugProcess2::GetProcessId) und auf der Automatisierungsebene verfügbar gemacht wird.

Methoden

AbortingFuncEvalExecution(DkmFuncEvalFlags)

AbortingFuncEvalExecution wird vom Debugmonitor der Laufzeit aufgerufen, wenn eine Funktionsauswertung abgebrochen wird. AbortingFuncEvalExecution aktualisiert den internen Zustand des DkmProcess-Objekts, sodass der beendende Ereignis-Manager zwei Beendenereignisse durchlässt: einen vollständigen Haltepunkt der Funktionsauswertung oder einen asynchronen Umbruch.

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

Fügt einen Ausnahmetrigger hinzu, sodass ExceptionTriggerHit-Ereignisse gesendet werden, wenn der Ausnahmetrigger erfüllt wurde.

Wenn für dieses {SourceId, DkmExceptionTrigger}-Tupel bereits eine ausgelöste Ausnahme definiert ist, wird der vorhandene Trigger mit den neuen Einstellungen geändert. Wenn eine Komponente beispielsweise einen Trigger definiert, der beendet wird, wenn eine Zugriffsverletzungsausnahme ausgelöst wird, und später einen Trigger so festlegt, dass er ausgelöst wird, wenn eine Win32-Ausnahme nicht behandelt wird, wird der Trigger für Zugriffsverletzungen entfernt.

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, nachdem das Arbeitselement angefügt wurde. Die tatsächliche Verarbeitung des Arbeitselements erfolgt asynchron. Der Aufrufer wird benachrichtigt, dass die Anforderung durch die Vervollständigungsroutine abgeschlossen ist.

AddExceptionTrigger(Guid, DkmExceptionTrigger)

Fügt einen Ausnahmetrigger hinzu, sodass ExceptionTriggerHit-Ereignisse gesendet werden, wenn der Ausnahmetrigger erfüllt wurde.

Wenn für dieses {SourceId, DkmExceptionTrigger}-Tupel bereits eine ausgelöste Ausnahme definiert ist, wird der vorhandene Trigger mit den neuen Einstellungen geändert. Wenn eine Komponente beispielsweise einen Trigger definiert, der beendet wird, wenn eine Zugriffsverletzungsausnahme ausgelöst wird, und später einen Trigger so festlegt, dass er ausgelöst wird, wenn eine Win32-Ausnahme nicht behandelt wird, wird der Trigger für Zugriffsverletzungen entfernt.

AllocateVirtualMemory(UInt64, Int32, Int32, Int32)

Reserviert und/oder führt Commit eines Arbeitsspeicherbereich innerhalb des virtuellen Adressraums des Zielprozesses aus. Die Funktion initialisiert den Speicher, den sie Null zuordnet, es sei denn, MEM_RESET wird verwendet. Weitere Informationen finden Sie in der VirtualAlloc Win32-API in MSDN.

AsyncBreak(Boolean)

Diese Methode weist die Debugmonitore an, die Ausführung des Debugvorgangs asynchron zu unterbrechen. Nach Abschluss des Vorgangs wird ein AsyncBreakComplete-Ereignis gesendet.

BeforeStopDebugging()

Handler, der benachrichtigt wird, bevor der Zielprozess beendet oder getrennt wird.

Standorteinschränkung: Die API muss von einer IDE-Komponente aufgerufen werden (Komponentenebene > 100.000).

Diese API wurde in Visual Studio 14 RTM (DkmApiVersion.VS14RTM) eingeführt.

ClearAllGPUMemoryAccessWarnings()

Deaktiviert alle aktiven GPU-Speicherzugriffswarnungen.

ClearExceptionTriggers(Guid)

Entfernt alle Ausnahmetrigger, die mit einer bestimmten SourceId festgelegt wurden. Nachdem diese Methode zurückgegeben wurde, lösen die Ausnahmetrigger keine ExceptionTriggerHit-Ereignisse mehr aus. Ausnahmetrigger werden automatisch gelöscht, wenn das DkmProcess-Objekt geschlossen wird.

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

Erstellt ein neues Prozessobjekt. Diese Methode wird vom Basisdebugmonitor für den Ereignisthread als Teil der Verarbeitung von IDkmStartDebuggingOperations.AttachToProcess oder IDkmStartDebuggingOperations.ResumeDebuggedProcess aufgerufen.

Diese Methode sendet ein ProcessCreate-Ereignis.

Standorteinschränkung: Die API muss von einer Monitor-Komponente aufgerufen werden (Komponentenebene < 100.000).

Diese API wurde in Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) eingeführt.

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

Erstellt ein neues Prozessobjekt. Diese Methode wird vom Basisdebugmonitor für den Ereignisthread als Teil der Verarbeitung von IDkmStartDebuggingOperations.AttachToProcess oder IDkmStartDebuggingOperations.ResumeDebuggedProcess aufgerufen.

Diese Methode sendet ein ProcessCreate-Ereignis.

Standorteinschränkung: Die API muss von einer Monitor-Komponente aufgerufen werden (Komponentenebene < 100.000).

Diese API wurde in Visual Studio 12 RTM (DkmApiVersion.VS12RTM) eingeführt.

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

Erstellt ein neues Prozessobjekt. Diese Methode wird vom Basisdebugmonitor für den Ereignisthread als Teil der Verarbeitung von IDkmStartDebuggingOperations.AttachToProcess oder IDkmStartDebuggingOperations.ResumeDebuggedProcess aufgerufen.

Diese Methode sendet ein ProcessCreate-Ereignis.

Standorteinschränkung: Die API muss von einer Monitor-Komponente aufgerufen werden (Komponentenebene < 100.000).

CreateNativeInstructionAddress(UInt64)

Löst eine CPU-Anweisung in ein natives Modul auf und gibt eine DkmNativeInstructionAddress zurück, um diese CPU-Anweisung darzustellen. Wenn sich der Anweisungszeiger nicht in einem Modul befindet, wird stattdessen ein DkmUnknownInstructionAddress-Objekt zurückgegeben.

Detach()

Diese Methode wird aufgerufen, um den Monitor anweisen, sich vom Zielprozess zu trennen. Dadurch wird ein ProcessExit-Ereignis ausgelöst, das für den Ereignisthread gesendet wird.

Disassemble(DkmInstructionAddress, UInt32)

Disassemblieren Sie einen Adressbereich im Debuggeeprozess.

Standorteinschränkung: Die API muss von einer IDE-Komponente aufgerufen werden (Komponentenebene > 100.000).

FindNativeModule(UInt64)

Löst eine virtuelle Adresse in ein systemeigenes Modul auf. Wenn sich die virtuelle Adresse nicht in einem Modul befindet, wird NULL zurückgegeben (S_FALSE Code nativ zurückgeben). Deaktivierte Module werden nicht zurückgegeben.

FindNativeModule(UInt64, Boolean)

Löst eine virtuelle Adresse in ein systemeigenes Modul auf. Wenn sich die virtuelle Adresse nicht in einem Modul befindet, wird NULL zurückgegeben (S_FALSE Code nativ zurückgeben).

FindProcess(Guid)

Suchen Sie ein DkmProcess-Objekt. Wenn kein Objekt mit dem angegebenen Eingabeschlüssel vorhanden ist, schlägt FindProcess fehl.

FindProcessSnapshot(UInt32)

Suchen Sie in diesem DkmProcessSnapshot-Element nach einem DkmProcess-Element. Wenn kein Element mit dem angegebenen Eingabeschlüssel vorhanden ist, schlägt FindProcessSnapshot fehl.

Diese API wurde in Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) eingeführt.

FindRuntimeInstance(DkmRuntimeInstanceId)

Suchen Sie in diesem DkmProcess nach einem DkmRuntimeInstance-Element. Wenn kein Element mit dem angegebenen Eingabeschlüssel vorhanden ist, schlägt FindRuntimeInstance fehl.

FindSystemThread(Int32)

Suchen Sie in diesem DkmProcess nach einem DkmThread-Element. Wenn kein Element mit dem angegebenen Eingabeschlüssel vorhanden ist, schlägt FindSystemThread fehl. Wenn ein Objekt gefunden wird, enthält es immer den Teil "System".

FreeVirtualMemory(UInt64, Int32, Int32)

Führt Freigabe und/oder Aufhebung der Zusage eines Arbeitsspeicherbereich innerhalb des virtuellen Adressraums des Zielprozesses aus. Weitere Informationen finden Sie in der VirtualFree Win32-API in MSDN.

GetComputeKernels()

GetComputeKernels listet die DkmGPUComputeKernel-Elemente dieses DkmProcess-Objekts auf.

GetDataItem<T>()

Ruft den instance von "T" ab, der diesem Container instance hinzugefügt wurde. Wenn dieser Container kein "T" enthält, gibt diese Funktion NULL zurück.

(Geerbt von DkmDataContainer)
GetDumpExePath()

Gibt den Pfad zur primären ausführbaren Datei im zu debuggenden Minidump zurück.

Diese API wurde in Visual Studio 12 RTM (DkmApiVersion.VS12RTM) eingeführt.

GetDumpSaveTime()

Gibt den Zeitpunkt zurück, zu dem der Minidump gespeichert wurde.

Diese API wurde in Visual Studio 16 Update 10 (DkmApiVersion.VS16Update10) eingeführt.

GetEndingTimeContext()

Ruft den Zeitkontext ab, der die Endposition der Ablaufverfolgung darstellt.

Diese API wurde in Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) eingeführt.

GetGPUBreakpointBehavior()

Rufen Sie das Breakpointverhalten des Prozesses ab.

GetHandleCount()

Ruft die Anzahl der aktiven Handles im Prozess ab.

GetInstructionAddress(DkmInstructionAddress, Int32)

Gibt die Adresse der kth-Anweisung relativ zu einer Startadresse zurück. Für Befehlssätze mit konstanter Länge ist dies eine einfache Arithmetik. Für Befehlssätze mit variabler Länge ist eine reverse Disassemblierung erforderlich, um diese Adresse abzurufen.

Standorteinschränkung: Die API muss von einer IDE-Komponente aufgerufen werden (Komponentenebene > 100.000).

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

Gibt die Adresse der kth-Anweisung relativ zu einer Startadresse zurück. Für Befehlssätze mit konstanter Länge ist dies eine einfache Arithmetik. Für Befehlssätze mit variabler Länge ist eine reverse Disassemblierung erforderlich, um diese Adresse abzurufen.

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, nachdem das Arbeitselement angefügt wurde. Die tatsächliche Verarbeitung des Arbeitselements erfolgt asynchron. Der Aufrufer wird benachrichtigt, dass die Anforderung durch die Vervollständigungsroutine abgeschlossen ist.

Standorteinschränkung: Die API muss von einer IDE-Komponente aufgerufen werden (Komponentenebene > 100.000).

GetInstructionAddress(DkmWorkList, UInt64, DkmCompletionRoutine<DkmGetInstructionAddressAsyncResult>)

Löst eine CPU-AnweisungAddress in eine DkmInstructionAddress auf.

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, nachdem das Arbeitselement angefügt wurde. Die tatsächliche Verarbeitung des Arbeitselements erfolgt asynchron. Der Aufrufer wird benachrichtigt, dass die Anforderung durch die Vervollständigungsroutine abgeschlossen ist.

Standorteinschränkung: Die API muss von einer IDE-Komponente aufgerufen werden (Komponentenebene > 100.000).

GetManagedStowedException()

Rufen Sie die verwaltete verstaute Ausnahme aus einem Dump ab. Dadurch wird S_FALSE zurückgegeben, wenn keine verwaltete stauende Ausnahme vorhanden ist.

Diese API wurde in Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) eingeführt.

GetMemoryReadTime(UInt64, UInt32, DkmMemoryTimeFlags)

Wird aufgerufen, um herauszufinden, aus welcher Zeit relativ zur aktuellen Prozesszeit ein Wert aus einem Speicherlesevorgang aufgelöst wird.

Diese API wurde in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) eingeführt.

GetNativeRuntimeInstance()

Ermöglicht den Zugriff auf die DkmRuntimeInstance, die für den naiven Code innerhalb eines Prozesses gilt. Es gibt genau eine DkmRuntimeInstance für einen Prozess.

GetNativeStowedException()

Rufen Sie die native verstaute Ausnahme aus einem Dump ab. Dadurch wird S_FALSE zurückgegeben, wenn keine native verstaute Ausnahme vorhanden ist.

Diese API wurde in Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) eingeführt.

GetPendingBreakpoints()

GetPendingBreakpoints listet die DkmPendingBreakpoint-Elemente dieses DkmProcess-Objekts auf.

GetProcesses()

GetProcesses listet alle erstellten DkmProcess-Objekte auf.

GetProcessExecuteDirection()

Ruft einen Wert ab, der angibt, ob der Prozess in vorwärts- oder umgekehrter Richtung ausgeführt wird. Diese Methode wird nur für Zeitreiseprozesse implementiert.

Diese API wurde in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) eingeführt.

GetProcessorArchitecture(UInt64, DkmProcessorArchitecture)

Bestimmt die Architektur für eine bestimmte Adresse.

Diese API wurde in Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) eingeführt.

GetProcessSnapshots()

GetProcessSnapshots listet die DkmProcessSnapshot-Elemente dieses DkmProcess-Objekts auf.

Diese API wurde in Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) eingeführt.

GetRunningTime()

Ruft die Anzahl der Taktzyklen ab, die der Debuggee seit dem letzten Aufruf von ResetRunningTime() ausgeführt hat.

GetRuntimeFunctionResolutionRequests()

GetRuntimeFunctionResolutionRequests listet die DkmRuntimeFunctionResolutionRequest-Elemente dieses DkmProcess-Objekts auf.

GetRuntimeInstances()

GetRuntimeInstances listet die DkmRuntimeInstance-Elemente dieses DkmProcess-Objekts auf.

GetSerializedProcessInfo()

Rufen Sie Informationen zu einem serialisierten Prozess ab.

Diese API wurde in Visual Studio 17 Update 2 (DkmApiVersion.VS17Update2) eingeführt.

GetSourceSnapshot()

Rufen Sie das Quellobjekt Momentaufnahme für den gedebuggten Prozess ab. Der debuggierte Prozess muss Momentaufnahmen darstellen.

Diese API wurde in Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) eingeführt.

GetStowedExceptions()

Rufen Sie die verstauten Ausnahmen aus einem Dump ab.

Diese API wurde in Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) eingeführt.

GetSystemThreads()

Stellt die Liste der aktiven Systemthreads im Prozess bereit. Threads, bei denen es sich nicht um Systemthreads handelt (DkmThread::System ist NULL) oder die entladen wurden, sind in dieser Auflistung nicht vorhanden.

GetTargetCompositionServices(DkmTargetCompositionScenario, Object)

Ruft den IDebugServiceManager für das entsprechende Szenario ab, mit dem auf Zielkompositionsbasierte Erweiterungen zugegriffen werden kann.

Standorteinschränkung: Zielzusammensetzungsschnittstellen können nicht computerübergreifend ge marshallt werden, können aber, falls verfügbar, sicher verwendet werden.

Diese API wurde in Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) eingeführt.

GetThreads()

GetThreads listet die DkmThread-Elemente dieses DkmProcess-Objekts auf.

InvisibleWriteMemory(UInt64, Byte[])

Schreiben Sie Arbeitsspeicher in den Zielprozess, aber ausblenden Sie den Schreibvorgang von Aufrufen von ReadMemory. Diese API kann verwendet werden, um Anweisungen oder Daten innerhalb des Zielprozesses zu patchen, um Debuggerfeatures zu implementieren. Bevor die Datenübertragung erfolgt, überprüft das System, ob alle Daten in der Basisadresse und im Arbeitsspeicher der angegebenen Größe für den Schreibzugriff zugänglich sind, und wenn sie nicht zugänglich ist, löst die Funktion einen E_INVALID_MEMORY_ADDRESS Fehler aus.

IsLoadComplete()

Gibt true zurück, wenn alle anfänglichen Modulladevorgänge/Threaderstellungen für alle Laufzeiten gesendet wurden, die beim Debuggen des Prozesses vorhanden sind. Beachten Sie, dass sich diese Definition möglicherweise von der Win32-Debug-API-Definition von load complete unterscheidet, da andere Runtimeinstanzen möglicherweise zusätzliche Zeit zum Laden benötigen.

Diese API wurde in Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2) eingeführt.

IsStopped()

Mit dieser Methode kann eine Komponente bestimmen, ob der Prozess vom Dispatcher als beendet betrachtet wird. Diese Methode muss nicht innerhalb einer Schnittstellenmethode aufgerufen werden, die erfordert, dass der Zielprozess beendet wird, kann aber bei Vorgängen hilfreich sein, die aus dem Ausführungsmodus aufgerufen werden können.

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

Diese Methode durchsucht den lokalen Datenträger und alle konfigurierten Symbolserver nach einer Binärdatei, die den Parametern entspricht. Der Pfad zu dieser Datei auf dem lokalen Datenträger wird zurückgegeben. Wenn sich die Datei auf einem Symbolserver befand, wird sie in einen Cache heruntergeladen und der lokale Pfad zurückgegeben.

OnAsyncBreakComplete(DkmAsyncBreakStatus, DkmThread)

Auslösen eines AsyncBreakComplete-Ereignisses. Komponenten, die die Ereignissenkenschnittstelle implementieren, erhalten die Ereignisbenachrichtigung. Diese Methode queert das Ereignis, und das Steuerelement kehrt sofort zum Aufrufer zurück.

OnEntryPoint(DkmThread)

Auslösen eines EntryPoint-Ereignisses. Komponenten, die die Ereignissenkenschnittstelle implementieren, erhalten die Ereignisbenachrichtigung. Diese Methode queert das Ereignis, und das Steuerelement kehrt sofort zum Aufrufer zurück.

OnHiddenEntryPoint(DkmThread)

Auslösen eines HiddenEntryPoint-Ereignisses Komponenten, die die Ereignissenkenschnittstelle implementieren, erhalten die Ereignisbenachrichtigung. Diese Methode queert das Ereignis, und das Steuerelement kehrt sofort zum Aufrufer zurück.

Diese API wurde in Visual Studio 14 RTM (DkmApiVersion.VS14RTM) eingeführt.

OnInstructionPatchInserted(UInt64, Byte[])

Methode, die vom Basisdebugmonitor aufgerufen wird, um andere Komponenten darüber zu informieren, dass der Befehlsspeicher des Zielprozesses geändert wurde. Derzeit wird dies nur für das Einfügen von Haltepunkten verwendet.

Standorteinschränkung: Die API muss von einer Monitor-Komponente aufgerufen werden (Komponentenebene < 100.000).

OnInstructionPatchRemoved(UInt64, Byte[])

Methode, die vom Basisdebugmonitor aufgerufen wird, um andere Komponenten darüber zu informieren, dass der Befehlsspeicher des Zielprozesses in seinen ursprünglichen Zustand wiederhergestellt wurde. Derzeit wird dies nur zum Entfernen von Haltepunkten verwendet.

Standorteinschränkung: Die API muss von einer Monitor-Komponente aufgerufen werden (Komponentenebene < 100.000).

OnLoadComplete()

Diese Methode wird vom Basisdebugmonitor des Prozesses aufgerufen, um ein LoadComplete-Ereignis auszulösen. LoadComplete wird ausgegeben, nachdem DkmModuleInstance-Objekte für die anfängliche Gruppe von Modulen im Prozess erstellt wurden, und im Allgemeinen wurde auch der anfängliche Satz von Threads erstellt.

Das Load Complete-Ereignis kann von einem Runtime-Debugmonitor mithilfe von DkmLoadCompleteEventDeferral.Add zurückgestellt werden. In diesem Fall wird diese Methode sofort abgeschlossen. Andernfalls sendet diese Methode das Ereignis an alle Komponenten, die die Ereignissynchronisierungsschnittstelle implementieren. Die Steuerung wird zurückgegeben, sobald alle Komponenten benachrichtigt wurden.

Diese Methode kann nur von der Komponente aufgerufen werden, die das Objekt erstellt hat.

OnProcessSnapshotAdded(DkmProcessSnapshot)

Handler, der benachrichtigt wird, nachdem ein Prozess Momentaufnahme für den angegebenen Prozess verwendet wird.

Diese API wurde in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) eingeführt.

OnProcessSnapshotRemoved(DkmProcessSnapshot)

Handler, der benachrichtigt wird, nachdem ein Prozess Momentaufnahme aus dem angegebenen Prozess entfernt wird.

Diese API wurde in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) eingeführt.

OnTraceTimeContextSet(DkmTraceTimeContext, DkmTraceTimeContext, DkmTraceTimeContext, DkmThread)

Auslösen eines TraceTimeContextSet-Ereignisses. Komponenten, die die Ereignissenkenschnittstelle implementieren, erhalten die Ereignisbenachrichtigung. Die Steuerung wird zurückgegeben, sobald alle Komponenten benachrichtigt wurden.

Diese Methode kann nur von der Komponente aufgerufen werden, die das Objekt erstellt hat.

Diese API wurde in Visual Studio 16 Update 2 (DkmApiVersion.VS16Update2) eingeführt.

QueryPerformanceCounters(DkmWorkList, DkmCompletionRoutine<DkmPerformanceCountersAsyncResult>)

Asynchrone Methode zum Abrufen der Zeitsteuerungsdaten aus dem IDkmPerformanceMeasurementDispatcherService, die aus Ereignissen gesammelt werden, die von den Laufzeiten im Prozess ausgegeben werden. Dies wird asynchron aufgerufen, da das Abrufen des Debuggeraufwands sehr teuer sein kann.

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, sobald das Arbeitselement angefügt wurde. Die tatsächliche Verarbeitung des Arbeitselements erfolgt asynchron. Der Aufrufer wird benachrichtigt, dass die Anforderung durch die Vervollständigungsroutine abgeschlossen ist.

Diese API wurde in Visual Studio 14 RTM (DkmApiVersion.VS14RTM) eingeführt.

ReadMemory(UInt64, DkmReadMemoryFlags, Byte[])

Lesen sie den Arbeitsspeicher des Zielprozesses.

ReadMemory(UInt64, DkmReadMemoryFlags, Void*, Int32)

Lesen sie den Arbeitsspeicher des Zielprozesses.

ReadMemoryString(UInt64, DkmReadMemoryFlags, UInt16, Int32)

Liest eine NULL-endende Zeichenfolge aus dem Arbeitsspeicher des Zielprozessprozesses. Dies kann zum Lesen von ANSI- oder Unicode-Zeichenfolgen (UTF-8, UTF-16 oder UTF-32) verwendet werden.

RemoveDataItem<T>()

Entfernen Sie den instance von "T" aus diesem Container. Es ist in der Regel nicht erforderlich, diese Methode aufzurufen, da ein Datencontainer automatisch geleert wird, wenn das Objekt geschlossen wird.

(Geerbt von DkmDataContainer)
RemoveExceptionTrigger(DkmWorkList, Guid, DkmExceptionTrigger, DkmCompletionRoutine<DkmRemoveExceptionTriggerAsyncResult>)

Entfernt einen zuvor festgelegten Ausnahmetrigger. Beachten Sie, dass die Verarbeitungsphase ignoriert wird und nicht mit dem ursprünglich angegebenen Wert übereinstimmen muss.

Diese Methode fügt ein neues Arbeitselement an die angegebene Arbeitsliste an und gibt zurück, sobald das Arbeitselement angefügt wurde. Die tatsächliche Verarbeitung des Arbeitselements erfolgt asynchron. Der Aufrufer wird benachrichtigt, dass die Anforderung durch die Vervollständigungsroutine abgeschlossen ist.

Diese API wurde in Visual Studio 14 RTM (DkmApiVersion.VS14RTM) eingeführt.

RemoveExceptionTrigger(Guid, DkmExceptionTrigger)

Entfernt einen zuvor festgelegten Ausnahmetrigger. Beachten Sie, dass die Verarbeitungsphase ignoriert wird und nicht mit dem ursprünglich angegebenen Wert übereinstimmen muss.

Diese API wurde in Visual Studio 14 RTM (DkmApiVersion.VS14RTM) eingeführt.

RemoveSnapshotById(UInt32)

Entfernen Sie die Prozessmomentaufnahmen für diesen Prozess.

Diese API wurde in Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) eingeführt.

RemoveSnapshots()

Entfernen Sie die Prozessmomentaufnahmen für diesen Prozess.

Diese API wurde in Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) eingeführt.

SearchRuntimeFunctionTable(UInt64, UInt64)

Die -Methode gibt nach Möglichkeit den Inhalt der IMAGE_RUNTIME_FUNCTION_ENTRY für eine Adresse zurück. Für die Suche nach statischen Einträgen sollten Aufrufer die entsprechende Methode für DkmNativeModuleInstance aufrufen.

SetCoreDumpParserTargetCompositionServices(Object)

Ruft den IDebugServiceManager für das Core-Dateianalyseszenario ab, das für den Zugriff auf zielkompositionsbasierte Erweiterungen verwendet werden kann.

Standorteinschränkung: Zielkompositionsschnittstellen können nicht computerübergreifend gemarshallt werden, können aber, falls verfügbar, sicher verwendet werden.

Diese API wurde in Visual Studio 16 Update 8 (DkmApiVersion.VS16Update8) eingeführt.

SetDataItem<T>(DkmDataCreationDisposition, T)

Platzieren Sie ein neues Element im Datencontainer.

(Geerbt von DkmDataContainer)
SetDetachUnavailable(Int32)

Wird von einer Komponente aufgerufen, um anzugeben, dass das Trennen für den Prozess nicht zulässig ist.

Diese API wurde in Visual Studio 14 RTM (DkmApiVersion.VS14RTM) eingeführt.

SetGPUMemoryAccessWarning(Int32, Boolean)

Aktiviert/deaktiviert eine bestimmte GPU-Speicherzugriffswarnung.

SetProcessExecuteDirection(DkmProcessExecuteDirection)

Legt die Ausführungsrichtung der Prozesse fest. Die Richtung kann vorwärts oder umgekehrt sein. Diese Methode wird nur für Zeitreiseprozesse implementiert.

Diese API wurde in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) eingeführt.

SetRunningTime(UInt64)

Legt den Laufzeitzähler auf den angegebenen Wert fest.

StoppingEventProcessingBegin(Boolean)

StoppingEventProcessingBegin wird vom Basisdebugmonitor im Ereignisthread aufgerufen. Er benachrichtigt den Dispatcher, dass der Zielprozess beendet wurde und möglicherweise ein Stoppereignis erreicht hat. Der Win32-Basisdebugmonitor ruft dies beispielsweise auf, wenn er eine EXCEPTION_DEBUG_EVENT vom Betriebssystem empfängt. Diese Methode aktualisiert den internen Zustand des DkmProcess-Objekts, sodass Beendigungsereignisse gesendet werden können.

StoppingEventProcessingContinue()

StoppingEventProcessingContinue wird vom Basisdebugmonitor im Ereignisthread aufgerufen. Diese Methode wird aufgerufen, nachdem alle Stoppereignisse innerhalb des aktuellen Batches ausgegeben wurden (z. B. DkmRuntimeBreakpoint.OnHit). Diese Methode benachrichtigt Komponenten, die eine Schnittstelle für die Benachrichtigung über Das Beenden von Ereignissen implementiert haben, und ruft den Ausführungs-Manager auf, um den Prozess an einen sicheren Punkt zu bringen. Der Basisdebugmonitor muss "StoppingEventProcessingContinue" nach jedem erfolgreichen Aufruf von StoppingEventProcessingBegin aufrufen. der Basisdebugmonitor, nachdem alle Beendigungsereignisse ausgegeben wurden.

Ein Basisdebugmonitor sollte erwarten, dass er wiederholt aufgerufen wird, während er sich in dieser Methode befindet.

TakeSnapshot(UInt64, DkmThread)

Nehmen Sie eine Momentaufnahme der Debuggee vor.

Standorteinschränkung: Server.

Diese API wurde in Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) eingeführt.

TakeSnapshotWithException(UInt64, DkmExceptionInformation)

Nehmen Sie eine Momentaufnahme der Debuggee vor.

Standorteinschränkung: Server.

Diese API wurde in Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) eingeführt.

Terminate(Int32)

Diese Methode wird aufgerufen, um den Monitor anweisen, den Zielprozess zu beenden. Dadurch wird ein ProcessExit-Ereignis ausgelöst, das im Ereignisthread gesendet wird.

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

Wird aufgerufen, um die Suche nach Binärdateien zu initiieren, deren Bilder zuvor möglicherweise nicht gefunden oder geladen werden sollen. Diese Methode durchsucht den lokalen Datenträger und alle konfigurierten Symbolserver nach einer Binärdatei, die den Parametern entspricht. Der Pfad zu dieser Datei auf dem lokalen Datenträger wird zurückgegeben. Wenn sich die Datei auf einem Symbolserver befand, wird sie in einen Cache heruntergeladen, und der lokale Pfad wird zurückgegeben.

Diese API wurde in Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1) eingeführt.

Unload(Int32)

ProcessExit wird vom Verteiler gesendet, wenn DkmProcess::Unload vom Monitor aufgerufen wird.

Diese Methode kann nur von der Komponente aufgerufen werden, die das Objekt erstellt hat.

VolatileReadMemory(UInt64, Byte[])

Liest Arbeitsspeicher aus dem Zielprozess. Diese Methode unterscheidet sich von "ReadMemory", da diese Methode jederzeit aufgerufen werden kann (nicht nur, wenn das Ziel beendet wird), und der Debugger versucht nicht, das Ergebnis dieses Vorgangs zwischenzuspeichern.

VolatileReadMemory(UInt64, Void*, Int32)

Liest Arbeitsspeicher aus dem Zielprozess. Diese Methode unterscheidet sich von "ReadMemory", da diese Methode jederzeit aufgerufen werden kann (nicht nur, wenn das Ziel beendet wird), und der Debugger versucht nicht, das Ergebnis dieses Vorgangs zwischenzuspeichern.

VolatileWriteMemory(UInt64, Byte[])

Schreiben sie in den Arbeitsspeicher des Zielprozesses. Diese Methode unterscheidet sich von "WriteMemory", da diese Methode jederzeit aufgerufen werden kann (nicht nur, wenn das Ziel beendet wird), und der Debugger versucht nicht, das Ergebnis dieses Vorgangs zwischenzuspeichern. Wenn kein Arbeitsspeicher in den Geschrieben werden kann, wird ein E_INVALID_MEMORY_ADDRESS Fehler ausgelöst. Da der Speicherschreibvorgang aus dem Ausführungsmodus auftreten kann, kann dieser Fehler auftreten, nachdem der Kopiervorgang bereits begonnen hat, was zu Einer Speicherbeschädigung im Zielprozess führen kann. Aus diesem Grund muss diese Funktion mit Sorgfalt verwendet werden, und Fehler können fatal sein.

WaitForPausingEventProcessingComplete(Int32, Boolean)

Diese Methode kann von einer Monitorkomponente aufgerufen werden, um auf jede nicht beendende Ereignisbehandlung zu warten, sowie auf jede IDkmProcessContinueNotification-Verarbeitung, die gerade abgeschlossen wird. Dies kann unter anderem hilfreich sein, wenn versucht wird, func-evals abzubrechen, indem sichergestellt wird, dass der Zielprozess eine Möglichkeit zum Ausführen hat. Beachten Sie, dass diese Methode keine Garantie dafür bietet, dass nicht sofort weitere anhaltende Ereignisse auftreten. Daher sollte der Code nicht davon ausgehen, dass nach der Rückgabe von dieser API keine Ereignisverarbeitung beendet wird.

Standorteinschränkung: Die API muss von einer Monitor-Komponente (Komponentenebene < 100.000) aufgerufen werden.

Diese API wurde in Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) eingeführt.

WriteDump(DkmDumpType, String, DkmThread)

Diese Methode schreibt ein Speicherabbild des Prozesses in den angegebenen Pfad aus.

WriteMemory(UInt64, Byte[])

Schreibt Arbeitsspeicher in den Zielprozess. Bevor die Datenübertragung erfolgt, überprüft das System, ob auf alle Daten in der Basisadresse und im Arbeitsspeicher der angegebenen Größe für den Schreibzugriff zugegriffen werden kann, und wenn nicht darauf zugegriffen werden kann, löst die Funktion einen E_INVALID_MEMORY_ADDRESS Fehler aus.

Gilt für: