DkmVirtualThread Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
DkmVirtualThread rappresenta un thread che non esiste fisicamente nel processo di debug.
Questa API è stata introdotta in Visual Studio 16 Update 2 (DkmApiVersion.VS16Update2).
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
- Ereditarietà
- Ereditarietà
- Attributi
Proprietà
| Connection |
Rappresenta una connessione tra il monitoraggio e l'IDE. Può essere una connessione locale se il monitoraggio è in esecuzione nello stesso processo dell'IDE oppure può essere una connessione remota. Nel processo di monitoraggio è presente una sola connessione. (Ereditato da DkmThread) |
| IsMainThread |
True se si tratta del thread principale di questo processo. Il thread principale è il primo thread da avviare. (Ereditato da DkmThread) |
| IsUnloaded |
Restituisce true se viene generato un evento "non caricato" per questo oggetto (ad esempio: DkmThread::Unload viene chiamato) o se l'oggetto è stato chiuso. Si noti che è necessario usare attenzione quando si controlla questo stato come, senza sincronizzazione, lo stato restituito potrebbe non essere più accurato dopo la lettura. (Ereditato da DkmDataContainer) |
| NativeStartAddress |
Se disponibile, si tratta dell'indirizzo iniziale Win32 di questo thread (valore passato all'API CreateThread). Il valore non sarà sempre disponibile, ad esempio, non è disponibile in scenari in cui il thread è stato avviato dopo il debugger collegato o in minidumps. (Ereditato da DkmThread) |
| Process |
DkmProcess rappresenta un processo di destinazione in fase di debug. Il debugger esegue il debug dei processi, quindi questa è l'unità di base del debug. Un DkmProcess può rappresentare un processo di sistema o un processo virtuale, ad esempio minidump. (Ereditato da DkmThread) |
| SystemInformation |
Contiene informazioni sul sistema computer in cui è in esecuzione questo thread. Se questo thread è in esecuzione in WOW (emulazione a 32 bit in un sistema operativo a 64 bit), queste informazioni saranno relative al sottosistema a 32 bit anziché al sottosistema a 64 bit. (Ereditato da DkmThread) |
| SystemPart |
[Facoltativo] Descrive i tratti del thread che sono rilevanti per un thread Win32 completo. Attualmente, questo valore è obbligatorio e tutti i thread avranno un blocco "System". In futuro, questo valore può essere NULL se DkmThread rappresenta qualcosa diverso da un thread Win32 completo. (Ereditato da DkmThread) |
| TebAddress |
Indirizzo all'interno del processo di destinazione, in cui viene archiviato il blocco di ambiente thread Win32. Per altre informazioni, vedere la documentazione sulla struttura TEB in MSDN. (Ereditato da DkmThread) |
| UniqueId |
Guid che identifica in modo univoco questo oggetto thread. (Ereditato da DkmThread) |
Metodi
| BeginFuncEvalExecution(DkmFuncEvalFlags) |
Questo metodo viene usato per riprendere il processo di destinazione in modo che venga eseguita una valutazione della funzione. Questa funzione viene chiamata da un monitoraggio di debug di runtime dopo aver configurato una valutazione della funzione per eseguire il processo di destinazione. Il monitoraggio del runtime aggiornerà prima il contesto del thread, aggiorna qualsiasi memoria necessaria nel processo di destinazione e configura qualsiasi rilevamento completato dalla valutazione della funzione. I chiamanti di questo metodo DEVONO sempre chiamare EndFuncEvalExecution prima di restituire dall'operazione che ha attivato la valutazione della funzione. Il comportamento non è definito se un chiamante non riesce a farlo. Questo metodo viene implementato nel monitoraggio del debug di base aggiornando prima il processo di destinazione in modalità di valutazione delle funzioni (DkmThread.OnBeginFuncEvalExecution), quindi sospendere e/o riprendere i thread come specificato dai flag di valutazione della funzione e infine continuare il processo di destinazione. Questo metodo può essere chiamato da qualsiasi thread, tuttavia OnBeginFuncEvalExecution deve essere chiamato dal thread evento di arresto, pertanto il monitoraggio di debug di base potrebbe dover eseguire come commutatore di thread come parte dell'implementazione di questo metodo. Il monitoraggio di debug di base non deve essere restituito da BeginFuncEvalExecution fino a quando la destinazione non è stata ripresa. (Ereditato da DkmThread) |
| CanBeginFuncEvalExecution(DkmFuncEvalFlags) |
CanBeginFuncEvalExecution può essere chiamato per comprendere se lo stato corrente del processo consente valutazioni delle funzioni. Verrà restituito false, ad esempio, se il DM di base ha chiamato StoppingEventProcessingBegin, ma non ArrestaEventProcessingContinue. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). Questa API è stata introdotta in Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5). (Ereditato da DkmThread) |
| Create(DkmProcess, DkmThread+System, DkmDataItem) |
Create una nuova istanza dell'oggetto DkmVirtualThread. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). Questa API è stata introdotta in Visual Studio 16 Update 2 (DkmApiVersion.VS16Update2). |
| CreateFrameRegisters(DkmUnwoundRegister[], UInt32) |
Convertire una matrice di DkmUnwoundRegisters in un'istanza di DkmFrameRegisters contenente un DkmReadOnlyCollection di DkmUnwoundRegisters. (Ereditato da DkmThread) |
| CreateRegistersObject(Byte[], DkmUnwoundRegister[], DkmUnwoundRegister[]) |
Crea un oggetto DkmFrameRegisters dalla matrice di byte fornita contenente una struttura CONTEXT Win32. (Ereditato da DkmThread) |
| EndFuncEvalExecution(DkmFuncEvalFlags) |
EndFuncEvalExecution viene chiamato dal monitoraggio del debug di runtime nel thread evento per uscire dalla modalità di valutazione delle funzioni. EndFuncEvalExecution aggiornerà lo stato interno dell'oggetto DkmProcess per indicare che la valutazione della funzione è stata terminata. In questo modo verrà inviato anche un evento FuncEvalEnded e il processo verrà contrassegnato come arrestato. Questo metodo può essere chiamato (1) durante l'elaborazione di una notifica evento di arresto "ricevuta" o - (2) durante l'elaborazione di un evento non arrestato, ad esempio l'uscita del thread, -o - (3) mentre la destinazione è ancora arrestata, ad esempio se l'installazione della valutazione della funzione non è riuscita. (Ereditato da DkmThread) |
| GetContext(Int32, Byte[]) |
Ottenere il contesto corrente (valori di registrazione) di un thread. (Ereditato da DkmThread) |
| GetContext(Int32, Void*, Int32) |
Ottenere il contesto corrente (valori di registrazione) di un thread. (Ereditato da DkmThread) |
| GetCurrentFrameInfo(UInt64, UInt64, UInt64) |
GetCurrentFrameInfo viene usato per ottenere la base di frame e l'indirizzo restituito per il contesto corrente del thread. Ciò prende in considerazione l'omissione del puntatore frame e se il puntatore di istruzioni corrente è in un prolog, epilog e così via... NOTA: in alcuni casi questo errore verrà visualizzato se la cornice ha l'omissione del puntatore fotogramma e non sono presenti simboli caricati. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). (Ereditato da DkmThread) |
| GetCurrentFuncEvalMode() |
GetCurrentFuncEvalMode può essere chiamato dai componenti come parte dell'elaborazione degli eventi per determinare se la valutazione della funzione è abilitata. Questa funzione può essere chiamata solo come parte dell'elaborazione di eventi. (Ereditato da DkmThread) |
| GetCurrentLocation(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentLocationAsyncResult>) |
Fornisce la posizione di un thread, come visibile nella finestra dei thread o i thread a discesa nella barra degli strumenti del percorso di debug. Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento. Vincolo percorso: l'API deve essere chiamata da un componente IDE (livello > di componente 100.000). (Ereditato da DkmThread) |
| GetCurrentRegisters(DkmUnwoundRegister[]) |
Restituisce un oggetto DkmFrameRegisters contenente i valori di registro correnti del thread. (Ereditato da DkmThread) |
| GetDataItem<T>() |
Ottiene l'istanza di 'T' che è stata aggiunta a questa istanza del contenitore. Se questo contenitore non contiene un 'T', questa funzione restituirà Null. (Ereditato da DkmDataContainer) |
| GetDebuggerSuspensionCount() |
Restituisce il numero totale di sospensioni causate dal debugger ,ad esempio chiamate a DkmThread::Suspend senza una chiamata a DkmThread::Resume. Ciò esclude eventuali sospensioni esterne al debugger. (Ereditato da DkmThread) |
| GetExtendedRegisters() |
Ottiene i registri estesi dal contesto del thread. (Ereditato da DkmThread) |
| GetManagedThreadProperties(DkmWorkList, DkmCompletionRoutine<DkmGetManagedThreadPropertiesAsyncResult>) |
Ottenere le proprietà di un thread gestito. Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento. (Ereditato da DkmThread) |
| GetManagedThreadProperties(Int32) |
Ottenere le proprietà di un thread gestito. (Ereditato da DkmThread) |
| GetMinidumpThreadInfo(DkmMinidumpThreadInfo) |
Ottiene le informazioni sullo stato del thread archiviate nel Minidump. Questa API è stata introdotta in Visual Studio 17 RTM (DkmApiVersion.VS17RTM). (Ereditato da DkmThread) |
| GetStackAddressRange() |
Recupera la base di limite/stack dello stack del thread specificato. Si noti che è possibile che questo valore cambi nel tempo, ad esempio nel caso di fibre. (Ereditato da DkmThread) |
| GetSteppers() |
GetSteppers enumera gli elementi DkmStepper di questo oggetto DkmThread. (Ereditato da DkmThread) |
| GetSuspensionCount(Boolean) |
Restituisce il numero di sospensioni corrente di questo thread. (Ereditato da DkmThread) |
| GetSuspensionCount(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSuspensionCountAsyncResult>) |
Restituisce il numero di sospensioni corrente di questo thread. Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento. (Ereditato da DkmThread) |
| GetThreadCurrentWinRtErrorInfo() |
GetThreadCurrentWinRtErrorInfo viene usato per ottenere l'indirizzo dell'oggetto IErrorInfo corrente per questo thread. Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM). (Ereditato da DkmThread) |
| GetTlsValue(Int32) |
Recupera il valore nello slot di archiviazione locale del thread di debug per l'indice TLS specificato. Ogni thread di un processo dispone del relativo slot per ciascun indice TLS. (Ereditato da DkmThread) |
| GetTopStackFrame() |
Restituisce il frame dello stack di chiamate superiore per un thread. Questo valore viene in genere memorizzato nella cache dopo la prima procedura dello stack e cancellato in continuazione. Questa operazione è chiamabile solo sopra il provider di stack nel processo client. Per ottenere il frame superiore nel processo del server, chiamare GetTopStackWalkFrame. Vincolo percorso: l'API deve essere chiamata da un componente IDE (livello > di componente 100.000). (Ereditato da DkmThread) |
| GetTopStackWalkFrame(DkmRuntimeInstance) |
Restituire il frame dello stack superiore per un thread. Questo frame può venire da un'istanza di runtime o da un monitor di rimozione. Questa operazione può essere chiamata solo dal processo del server. Per ottenere il frame superiore nel processo client, usare GetTopStackFrame. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). (Ereditato da DkmThread) |
| GetVolatileFlags() |
Ottenere flag volatili su un thread. Ad esempio, restituire se un thread è un thread pianificato in modalità utente. (Ereditato da DkmThread) |
| GetVolatileFlags(DkmWorkList, DkmCompletionRoutine<DkmGetVolatileFlagsAsyncResult>) |
Ottenere flag volatili su un thread. Ad esempio, restituire se un thread è un thread pianificato in modalità utente. Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento. (Ereditato da DkmThread) |
| GetVolatileProperties(DkmWorkList, DkmCompletionRoutine<DkmGetVolatilePropertiesAsyncResult>) |
Ottenere le proprietà dinamiche di un thread. Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento. (Ereditato da DkmThread) |
| GetVolatileProperties(Int32, UInt64) |
Ottenere le proprietà dinamiche di un thread. (Ereditato da DkmThread) |
| IsStoppingEventQueued(Boolean) |
Indica se il thread specificato ha un evento di arresto nella coda. Queste informazioni vengono usate dal gestore di esecuzione per decidere se un thread può essere ignorato. (Ereditato da DkmThread) |
| OnBeginFuncEvalExecution(DkmFuncEvalFlags) |
OnBeginFuncEvalExecution viene chiamato dal monitoraggio di debug di base nel thread dell'evento. Questo metodo viene chiamato come parte dell'implementazione di IDkmBaseFuncEvalService.BeginFuncEvalExecution, che viene chiamato per riprendere il processo per una valutazione della funzione. OnBeginFuncEvalExecution aggiornerà lo stato interno dell'oggetto DkmProcess per indicare che una valutazione della funzione è in corso. In questo modo verrà inviato anche un evento FuncEvalStarting e il processo verrà contrassegnato come in esecuzione, in modo che non siano consentite operazioni che richiedono un processo arrestato. (Ereditato da DkmThread) |
| OnContinueExecution() |
OnContinueExecution viene chiamato dal monitoraggio di debug di base nel thread dell'evento. Questo metodo viene chiamato come parte dell'implementazione di IDkmContinueExecution.ContinueExecution, che è quello usato dall'IDE per continuare il processo di destinazione. Questo metodo viene usato dal Dispatcher per inviare eventi di arresto che non possono essere elaborati in precedenza o per aggiornare lo stato interno dell'oggetto DkmProcess per indicare che il processo di destinazione è ora in esecuzione. Prima di contrassegnare il processo in esecuzione, dispatcher invierà un evento Continue. Un monitoraggio di debug di base deve essere chiamato in modo reentrantly mentre si trova in questo metodo. (Ereditato da DkmThread) |
| OnEmbeddedBreakpointHit(DkmInstructionAddress, Boolean) |
Generare un evento EmbeddedBreakpointHit. I componenti che implementano l'interfaccia del sink di eventi riceveranno la notifica dell'evento. Questo metodo eseguirà la sequenza dell'evento e del controllo restituirà immediatamente al chiamante. (Ereditato da DkmThread) |
| OnInterceptExceptionCompleted(UInt64) |
Generare un evento InterceptExceptionCompleted. I componenti che implementano l'interfaccia del sink di eventi riceveranno la notifica dell'evento. Questo metodo eseguirà la sequenza dell'evento e del controllo restituirà immediatamente al chiamante. (Ereditato da DkmThread) |
| OnThreadNameChange() |
ThreadNameChange viene inviato dal dispatcher quando DkmThread::NameChange viene richiamato dal monitoraggio. Questa API è stata introdotta in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). (Ereditato da DkmThread) |
| RaiseExecutionControlException(UInt32) |
API che può essere chiamata da un'implementazione IDkmSingleStepCompleteReceived o IDkmRuntimeBreakpointReceived per forzare il dm di base a generare l'EXCEPTION_BREAKPOINT o EXCEPTION_SINGLE_STEP eccezione nel processo di destinazione quando l'esecuzione viene ripresa. In genere, il punto di interruzione o l'eccezione a singolo passaggio viene eliminata in modo implicito. In questo modo, il EXCEPTION_BREAKPOINT/EXCEPTION_SINGLE_STEP deve essere gestito dai gestori di eccezioni all'interno del processo di destinazione. Questa API avrà esito negativo se il thread non è attualmente seduto in un passaggio completo o in un evento di punto di interruzione. Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000). (Ereditato da DkmThread) |
| RemoveDataItem<T>() |
Rimuovere l'istanza di 'T' da questo contenitore. In genere non è necessario chiamare questo metodo come contenitore di dati verrà svuotato automaticamente quando l'oggetto viene chiuso. (Ereditato da DkmDataContainer) |
| Resume(Boolean) |
Riprendere questo thread. (Ereditato da DkmThread) |
| SetContext(Byte[]) |
Aggiornare il contesto (valori di registrazione) di un thread. (Ereditato da DkmThread) |
| SetDataItem<T>(DkmDataCreationDisposition, T) |
Inserire un nuovo elemento nel contenitore dati. (Ereditato da DkmDataContainer) |
| SetExtendedRegisterValue(Int32, ReadOnlyCollection<Byte>) |
Imposta il valore del registro esteso nel contesto del thread. (Ereditato da DkmThread) |
| SetTlsValue(Int32, UInt64) |
Archivia un valore nello slot di archiviazione locale del thread di debug per l'indice TLS specificato. Ogni thread di un processo dispone del relativo slot per ciascun indice TLS. (Ereditato da DkmThread) |
| Suspend(Boolean) |
Sospendere questo thread. (Ereditato da DkmThread) |
| Unload(Int32) |
ThreadExit viene inviato dal dispatcher quando DkmThread::Unload viene richiamato dal monitoraggio. Questo metodo può essere chiamato solo dal componente che ha creato l'oggetto. (Ereditato da DkmThread) |