Freigeben über


DkmVirtualThread Klasse

Definition

DkmVirtualThread stellt einen Thread dar, der im Debugprozess physisch nicht vorhanden ist.

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

public ref class DkmVirtualThread : Microsoft::VisualStudio::Debugger::DkmThread
[System.Runtime.InteropServices.Guid("bec7987a-48f1-dd04-3001-8c296365a14f")]
public class DkmVirtualThread : Microsoft.VisualStudio.Debugger.DkmThread
[<System.Runtime.InteropServices.Guid("bec7987a-48f1-dd04-3001-8c296365a14f")>]
type DkmVirtualThread = class
    inherit DkmThread
Public Class DkmVirtualThread
Inherits DkmThread
Vererbung
Vererbung
DkmVirtualThread
Attribute

Eigenschaften

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.

(Geerbt von DkmThread)
IsMainThread

True, wenn dies der Standard Thread dieses Prozesses ist. Der Standard Thread ist der erste Thread, der gestartet wird.

(Geerbt von DkmThread)
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)
NativeStartAddress

Falls verfügbar, ist dies die Win32-Startadresse dieses Threads (Wert, der an die CreateThread-API übergeben wird). Der Wert ist nicht immer verfügbar, z. B. ist er in Szenarien, in denen der Thread nach dem Anfügen des Debuggers oder in Minidumps gestartet wurde, im Allgemeinen nicht verfügbar.

(Geerbt von DkmThread)
Process

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.

(Geerbt von DkmThread)
SystemInformation

Enthält Informationen zum Computersystem, unter dem dieser Thread ausgeführt wird. Wenn dieser Thread 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.

(Geerbt von DkmThread)
SystemPart

[Optional] Beschreibt Merkmale des Threads, die für einen vollständigen Win32-Thread relevant sind. Derzeit ist dieser Wert erforderlich, und alle Threads verfügen über einen "System"-Block. In Zukunft kann dieser Wert NULL sein, wenn DkmThread etwas anderes als einen vollständigen Win32-Thread darstellt.

(Geerbt von DkmThread)
TebAddress

Adresse innerhalb des Zielprozesses, in dem der Win32-Threadumgebungsblock gespeichert wird. Weitere Informationen finden Sie in der Dokumentation zur TEB-Struktur in MSDN.

(Geerbt von DkmThread)
UniqueId

Guid, die dieses Threadobjekt eindeutig identifiziert.

(Geerbt von DkmThread)

Methoden

BeginFuncEvalExecution(DkmFuncEvalFlags)

Diese Methode wird verwendet, um den Zielprozess fortzusetzen, sodass eine Funktionsauswertung erfolgen kann. Diese Funktion wird von einem Laufzeitdebugmonitor aufgerufen, nachdem sie eine Funktionsauswertung eingerichtet hat, um den Zielprozess auszuführen. Der Laufzeitmonitor aktualisiert zuerst den Threadkontext, aktualisiert den erforderlichen Arbeitsspeicher im Zielprozess und richtet jede Erkennung ein, dass die Funktionsauswertung abgeschlossen ist.

Aufrufer dieser Methode MÜSSEN immer EndFuncEvalExecution aufrufen, bevor sie von dem Vorgang zurückgegeben werden, der die Funktionsauswertung ausgelöst hat. Das Verhalten ist nicht definiert, wenn ein Aufrufer dies nicht tut.

Diese Methode wird im Basisdebugmonitor implementiert, indem zuerst der Zielprozess aktualisiert wird, um sich im Funktionsauswertungsmodus (DkmThread.OnBeginFuncEvalExecution) zu befinden, dann Threads gemäß den Funktionsauswertungsflags angehalten und/oder fortgesetzt werden und schließlich den Zielprozess fortzusetzen.

Diese Methode kann von einem beliebigen Thread aufgerufen werden. OnBeginFuncEvalExecution muss jedoch über den beendenden Ereignisthread aufgerufen werden, sodass der Basisdebugmonitor möglicherweise als Threadschalter im Rahmen der Implementierung dieser Methode ausgeführt werden muss. Der Basisdebugmonitor sollte erst von BeginFuncEvalExecution zurückgegeben werden, nachdem das Ziel fortgesetzt wurde.

(Geerbt von DkmThread)
CanBeginFuncEvalExecution(DkmFuncEvalFlags)

CanBeginFuncEvalExecution kann aufgerufen werden, um zu verstehen, ob der aktuelle Status des Prozesses Funktionsauswertungen zulässt. Dies gibt beispielsweise false zurück, wenn die Basis-DM "StopEventProcessingBegin", aber nicht "StopEventProcessingContinue" aufgerufen hat.

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

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

(Geerbt von DkmThread)
Create(DkmProcess, DkmThread+System, DkmDataItem)

Create ein neues DkmVirtualThread-Objekt instance.

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

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

CreateFrameRegisters(DkmUnwoundRegister[], UInt32)

Konvertieren Sie ein Array von DkmUnwoundRegisters in eine instance von DkmFrameRegisters, die eine sortierte DkmReadOnlyCollection von DkmUnwoundRegisters enthält.

(Geerbt von DkmThread)
CreateRegistersObject(Byte[], DkmUnwoundRegister[], DkmUnwoundRegister[])

Erstellt ein DkmFrameRegisters-Objekt aus dem bereitgestellten Bytearray, das eine Win32 CONTEXT-Struktur enthält.

(Geerbt von DkmThread)
EndFuncEvalExecution(DkmFuncEvalFlags)

EndFuncEvalExecution wird vom Laufzeitdebugmonitor im Ereignisthread aufgerufen, um den Funktionsauswertungsmodus zu beenden. EndFuncEvalExecution aktualisiert den internen Zustand des DkmProcess-Objekts, um anzugeben, dass die Funktionsauswertung beendet wurde. Dadurch wird auch ein FuncEvalEnded-Ereignis gesendet, das den Prozess als beendet markiert.

Diese Methode kann (1) aufgerufen werden, während eine "empfangene" Ereignisbenachrichtigung zum Beenden des Ereignisses verarbeitet wird( oder- (2) während der Verarbeitung eines nicht beendenden Ereignisses wie thread exit, -or- (3), während das Ziel weiterhin beendet wird, z. B. wenn die Einrichtung der Funktionsauswertung fehlgeschlagen ist.

(Geerbt von DkmThread)
GetContext(Int32, Byte[])

Rufen Sie den aktuellen Kontext (Registerwerte) eines Threads ab.

(Geerbt von DkmThread)
GetContext(Int32, Void*, Int32)

Rufen Sie den aktuellen Kontext (Registerwerte) eines Threads ab.

(Geerbt von DkmThread)
GetCurrentFrameInfo(UInt64, UInt64, UInt64)

GetCurrentFrameInfo wird verwendet, um die Framebasis und die Rückgabeadresse für den aktuellen Kontext des Threads abzurufen. Dies berücksichtigt frame pointer omission und wenn sich der aktuelle Anweisungszeiger in einem Prolog, Epilog usw. befindet... HINWEIS: In einigen Fällen wird dies falsch angezeigt, wenn der Frame über Frame-Zeiger-Auslassung verfügt und keine Symbole geladen sind.

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

(Geerbt von DkmThread)
GetCurrentFuncEvalMode()

GetCurrentFuncEvalMode kann von Komponenten im Rahmen der Ereignisverarbeitung aufgerufen werden, um zu bestimmen, ob die Funktionsauswertung aktiviert ist. Diese Funktion kann nur im Rahmen der Ereignisverarbeitung aufgerufen werden.

(Geerbt von DkmThread)
GetCurrentLocation(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentLocationAsyncResult>)

Stellt die Position eines Threads bereit, wie er im Threadsfenster angezeigt wird, oder Threads, die in der Symbolleiste des Debugspeicherorts angezeigt werden.

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).

(Geerbt von DkmThread)
GetCurrentRegisters(DkmUnwoundRegister[])

Gibt ein DkmFrameRegisters-Objekt zurück, das die aktuellen Registerwerte des Threads enthält.

(Geerbt von DkmThread)
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)
GetDebuggerSuspensionCount()

Gibt die Gesamtzahl der vom Debugger verursachten Aussetzungen zurück (d. h. Aufrufe von DkmThread::Suspend ohne Einen Aufruf von DkmThread::Resume). Dies schließt alle Unterbrechungen außerhalb des Debuggers aus.

(Geerbt von DkmThread)
GetExtendedRegisters()

Ruft die erweiterten Register aus dem Threadkontext ab.

(Geerbt von DkmThread)
GetManagedThreadProperties(DkmWorkList, DkmCompletionRoutine<DkmGetManagedThreadPropertiesAsyncResult>)

Rufen Sie die Eigenschaften eines verwalteten Threads ab.

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.

(Geerbt von DkmThread)
GetManagedThreadProperties(Int32)

Rufen Sie die Eigenschaften eines verwalteten Threads ab.

(Geerbt von DkmThread)
GetMinidumpThreadInfo(DkmMinidumpThreadInfo)

Ruft Threadstatusinformationen ab, die im Minidump gespeichert sind.

Diese API wurde in Visual Studio 17 RTM (DkmApiVersion.VS17RTM) eingeführt.

(Geerbt von DkmThread)
GetStackAddressRange()

Ruft das Stapellimit/die Stapelbasis des angegebenen Threads ab. Beachten Sie, dass sich dieser Wert im Laufe der Zeit ändern kann, z. B. bei Fasern.

(Geerbt von DkmThread)
GetSteppers()

GetSteppers listet die DkmStepper-Elemente dieses DkmThread-Objekts auf.

(Geerbt von DkmThread)
GetSuspensionCount(Boolean)

Gibt die aktuelle Anzahl der Aussetzungen dieses Threads zurück.

(Geerbt von DkmThread)
GetSuspensionCount(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSuspensionCountAsyncResult>)

Gibt die aktuelle Anzahl der Aussetzungen dieses Threads zurück.

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.

(Geerbt von DkmThread)
GetThreadCurrentWinRtErrorInfo()

GetThreadCurrentWinRtErrorInfo wird verwendet, um die Adresse des aktuellen IErrorInfo-Objekts für diesen Thread abzurufen.

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

(Geerbt von DkmThread)
GetTlsValue(Int32)

Ruft den Wert im Tls-Slot (Lokaler Threadspeicher) des Debuggeethreads für den angegebenen TLS-Index ab. Jeder Thread eines Prozesses hat seinen eigenen Slot für jeden TLS-Index.

(Geerbt von DkmThread)
GetTopStackFrame()

Gibt den oberen Aufrufstapelrahmen für einen Thread zurück. Dieser Wert wird normalerweise nach dem ersten Stapellauf zwischengespeichert und beim Fortfahren gelöscht. Dies kann nur über dem Stapelanbieter im Clientprozess aufgerufen werden. Rufen Sie GetTopStackWalkFrame auf, um den obersten Frame im Serverprozess abzurufen.

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

(Geerbt von DkmThread)
GetTopStackWalkFrame(DkmRuntimeInstance)

Gibt den oberen Stapelrahmen für einen Thread zurück. Dieser Frame kann aus einem Runtime-instance oder einem Monitorentladungsmodul stammen. Dies kann nur vom Serverprozess aufgerufen werden. Verwenden Sie GetTopStackFrame, um den obersten Frame im Clientprozess abzurufen.

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

(Geerbt von DkmThread)
GetVolatileFlags()

Abrufen von flüchtigen Flags zu einem Thread. Geben Sie für instance zurück, wenn es sich bei einem Thread um einen geplanten Thread im Benutzermodus handelt.

(Geerbt von DkmThread)
GetVolatileFlags(DkmWorkList, DkmCompletionRoutine<DkmGetVolatileFlagsAsyncResult>)

Abrufen von flüchtigen Flags zu einem Thread. Geben Sie für instance zurück, wenn es sich bei einem Thread um einen geplanten Thread im Benutzermodus handelt.

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.

(Geerbt von DkmThread)
GetVolatileProperties(DkmWorkList, DkmCompletionRoutine<DkmGetVolatilePropertiesAsyncResult>)

Rufen Sie die dynamischen Eigenschaften eines Threads ab.

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.

(Geerbt von DkmThread)
GetVolatileProperties(Int32, UInt64)

Ruft die dynamischen Eigenschaften eines Threads ab.

(Geerbt von DkmThread)
IsStoppingEventQueued(Boolean)

Gibt an, ob der angegebene Thread ein Stoppereignis in der Warteschlange aufweist. Diese Informationen werden vom Ausführungs-Manager verwendet, um zu entscheiden, ob ein Thread verrutscht werden kann.

(Geerbt von DkmThread)
OnBeginFuncEvalExecution(DkmFuncEvalFlags)

OnBeginFuncEvalExecution wird vom Basisdebugmonitor im Ereignisthread aufgerufen. Diese Methode wird als Teil der Implementierung von IDkmBaseFuncEvalService.BeginFuncEvalExecution aufgerufen, die aufgerufen wird, um den Prozess für eine Funktionsauswertung fortzusetzen. OnBeginFuncEvalExecution aktualisiert den internen Zustand des DkmProcess-Objekts, um anzugeben, dass eine Funktionsauswertung ausgeführt wird. Dadurch wird auch ein FuncEvalStarting-Ereignis gesendet, und der Prozess wird als ausgeführt markiert, sodass keine Vorgänge zugelassen werden, die einen beendeten Prozess erfordern.

(Geerbt von DkmThread)
OnContinueExecution()

OnContinueExecution wird vom Basisdebugmonitor im Ereignisthread aufgerufen. Diese Methode wird als Teil der Implementierung von IDkmContinueExecution.ContinueExecution aufgerufen, die von der IDE zum Fortsetzen des Zielprozesses verwendet wird. Diese Methode wird vom Dispatcher verwendet, um entweder Stoppereignisse zu senden, die zuvor nicht verarbeitet werden konnten, oder um den internen Zustand des DkmProcess-Objekts zu aktualisieren, um anzugeben, dass der Zielprozess jetzt ausgeführt wird. Bevor der Prozess als ausgeführt gekennzeichnet wird, sendet der Dispatcher ein Continue-Ereignis.

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

(Geerbt von DkmThread)
OnEmbeddedBreakpointHit(DkmInstructionAddress, Boolean)

Auslösen eines EmbeddedBreakpointHit-Ereignisses. Komponenten, die die Ereignissenkenschnittstelle implementieren, erhalten die Ereignisbenachrichtigung. Diese Methode wird das Ereignis in die Warteschlange stellen, und das Steuerelement wird sofort an den Aufrufer zurückgegeben.

(Geerbt von DkmThread)
OnInterceptExceptionCompleted(UInt64)

Auslösen eines InterceptExceptionCompleted-Ereignisses. Komponenten, die die Ereignissenkenschnittstelle implementieren, erhalten die Ereignisbenachrichtigung. Diese Methode wird das Ereignis in die Warteschlange stellen, und das Steuerelement wird sofort an den Aufrufer zurückgegeben.

(Geerbt von DkmThread)
OnThreadNameChange()

ThreadNameChange wird vom Verteiler gesendet, wenn DkmThread::NameChange vom Monitor aufgerufen wird.

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

(Geerbt von DkmThread)
RaiseExecutionControlException(UInt32)

API, die von einer IDkmSingleStepCompleteReceived- oder IDkmRuntimeBreakpointReceived-Implementierung aufgerufen werden kann, um zu erzwingen, dass die Basis-DM die EXCEPTION_BREAKPOINT oder EXCEPTION_SINGLE_STEP Ausnahme im Zielprozess auslöst, wenn die Ausführung fortgesetzt wird. Normalerweise wird der Haltepunkt oder die Einzelschritt-Ausnahme implizit unterdrückt. Dadurch kann die EXCEPTION_BREAKPOINT/EXCEPTION_SINGLE_STEP von Ausnahmehandlern innerhalb des Zielprozesses behandelt werden. Diese API schlägt fehl, wenn sich der Thread derzeit nicht an einem Schritt abgeschlossenen Ereignis oder einem Haltepunkt befindet.

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

(Geerbt von DkmThread)
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)
Resume(Boolean)

Setzen Sie diesen Thread fort.

(Geerbt von DkmThread)
SetContext(Byte[])

Aktualisieren Sie den Kontext (Registerwerte) eines Threads.

(Geerbt von DkmThread)
SetDataItem<T>(DkmDataCreationDisposition, T)

Platzieren Sie ein neues Element im Datencontainer.

(Geerbt von DkmDataContainer)
SetExtendedRegisterValue(Int32, ReadOnlyCollection<Byte>)

Legt den Wert des erweiterten Registers im Kontext des Threads fest.

(Geerbt von DkmThread)
SetTlsValue(Int32, UInt64)

Speichert einen Wert im Tls-Slot (Thread Local Storage) des Debugthreads für den angegebenen TLS-Index. Jeder Thread eines Prozesses hat seinen eigenen Slot für jeden TLS-Index.

(Geerbt von DkmThread)
Suspend(Boolean)

Setzen Sie diesen Thread an.

(Geerbt von DkmThread)
Unload(Int32)

ThreadExit wird vom Dispatcher gesendet, wenn DkmThread::Unload vom Monitor aufgerufen wird.

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

(Geerbt von DkmThread)

Gilt für: