Compartilhar via


DkmVirtualThread Classe

Definição

DkmVirtualThread representa um thread que não existe fisicamente no processo depurado.

Essa API foi introduzida no Visual Studio 16 Atualização 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
Herança
Herança
DkmVirtualThread
Atributos

Propriedades

Connection

Isso representa uma conexão entre o monitor e o IDE. Ele pode ser uma conexão local se o monitor estiver em execução no mesmo processo que o IDE ou pode ser uma conexão remota. No processo do monitor, há apenas uma conexão.

(Herdado de DkmThread)
IsMainThread

True se esse for o thread main desse processo. O thread main é o primeiro thread a ser iniciado.

(Herdado de DkmThread)
IsUnloaded

Retornará true se um evento 'descarregado' tiver sido gerado para este objeto (exemplo: DkmThread::Unload for chamado) ou se o objeto tiver sido fechado. Observe que o cuidado deve ser usado ao verificar esse status, pois, sem sincronização, o status retornado pode não ser mais preciso após a leitura.

(Herdado de DkmDataContainer)
NativeStartAddress

Se disponível, esse é o endereço inicial do Win32 desse thread (valor passado para a API CreateThread). O valor nem sempre estará disponível, por exemplo, geralmente não está disponível em cenários em que o thread foi iniciado após o depurador anexado ou em minidumps.

(Herdado de DkmThread)
Process

O DkmProcess representa um processo de destino que está sendo depurado. O depurador depura processos, portanto, essa é a unidade básica de depuração. Um DkmProcess pode representar um processo do sistema ou um processo virtual, como minidumps.

(Herdado de DkmThread)
SystemInformation

Contém informações sobre o sistema de computador no qual esse thread está sendo executado. Se esse thread estiver em execução em WOW (emulação de 32 bits em um sistema operacional de 64 bits), essas informações serão para o subsistema de 32 bits em vez do subsistema de 64 bits.

(Herdado de DkmThread)
SystemPart

[Opcional] Descreve as características do thread que são relevantes para um thread Completo do Win32. Atualmente, esse valor é necessário e todos os threads terão um bloco "System". No futuro, esse valor poderá ser NULL se o DkmThread representar algo diferente de um thread Win32 completo.

(Herdado de DkmThread)
TebAddress

Endereço dentro do processo de destino, em que o bloco de ambiente de thread win32 é armazenado. Consulte a documentação sobre a estrutura TEB no MSDN para obter mais informações.

(Herdado de DkmThread)
UniqueId

Guid que identifica exclusivamente esse objeto thread.

(Herdado de DkmThread)

Métodos

BeginFuncEvalExecution(DkmFuncEvalFlags)

Esse método é usado para retomar o processo de destino para que uma avaliação de função possa ocorrer. Essa função é chamada por um monitor de depuração de runtime depois de configurar uma avaliação de função para que o processo de destino seja executado. O monitor de runtime primeiro atualizará o contexto do thread, atualizará qualquer memória necessária no processo de destino e configurará qualquer detecção de que a avaliação da função seja concluída.

Os chamadores desse método DEVEM sempre chamar EndFuncEvalExecution antes de retornar da operação que disparou a avaliação da função. O comportamento será indefinido se um chamador não fizer isso.

Esse método é implementado no monitor de depuração base atualizando primeiro o processo de destino para estar no modo de avaliação de função (DkmThread.OnBeginFuncEvalExecution), suspendendo e/ou retomando threads conforme especificado pelos sinalizadores de avaliação de função e, finalmente, continuando o processo de destino.

Esse método pode ser chamado de qualquer thread, no entanto, OnBeginFuncEvalExecution deve ser chamado do thread de evento de parada, portanto, o monitor de depuração base pode precisar ser executado como o comutador de thread como parte da implementação desse método. O monitor de depuração base não deve retornar de BeginFuncEvalExecution até que o destino seja retomado.

(Herdado de DkmThread)
CanBeginFuncEvalExecution(DkmFuncEvalFlags)

CanBeginFuncEvalExecution pode ser chamado para entender se o estado atual do processo permite avaliações de função. Isso retornará false, por exemplo, se o DM base tiver chamado StoppingEventProcessingBegin, mas não StopEventProcessingContinue.

Restrição de local: a API deve ser chamada de um componente monitor (nível < de componente 100.000).

Essa API foi introduzida no Visual Studio 16 Atualização 5 (DkmApiVersion.VS16Update5).

(Herdado de DkmThread)
Create(DkmProcess, DkmThread+System, DkmDataItem)

Create uma nova instância de objeto DkmVirtualThread.

Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000).

Essa API foi introduzida no Visual Studio 16 Atualização 2 (DkmApiVersion.VS16Update2).

CreateFrameRegisters(DkmUnwoundRegister[], UInt32)

Converta uma matriz de DkmUnwoundRegisters em uma instância de DkmFrameRegisters que contém um DkmReadOnlyCollection classificado de DkmUnwoundRegisters.

(Herdado de DkmThread)
CreateRegistersObject(Byte[], DkmUnwoundRegister[], DkmUnwoundRegister[])

Cria um objeto DkmFrameRegisters da matriz de bytes fornecida que contém uma estrutura CONTEXT Win32.

(Herdado de DkmThread)
EndFuncEvalExecution(DkmFuncEvalFlags)

EndFuncEvalExecution é chamado pelo monitor de depuração de runtime no thread de eventos para sair do modo de avaliação da função. EndFuncEvalExecution atualizará o estado interno do objeto DkmProcess para indicar que a avaliação da função terminou. Isso também enviará um evento FuncEvalEnded e marcará o processo como interrompido.

Esse método pode ser chamado (1) durante o processamento de uma notificação de evento de parada 'recebida' -ou- (2) durante o processamento de um evento sem interrupção, como saída de thread, -ou- (3) enquanto o destino ainda está parado, por exemplo, se a configuração de avaliação de função falhou.

(Herdado de DkmThread)
GetContext(Int32, Byte[])

Obtenha o contexto atual (valores de registro) de um thread.

(Herdado de DkmThread)
GetContext(Int32, Void*, Int32)

Obtenha o contexto atual (valores de registro) de um thread.

(Herdado de DkmThread)
GetCurrentFrameInfo(UInt64, UInt64, UInt64)

GetCurrentFrameInfo é usado para obter a base do quadro e o endereço de retorno para o contexto atual do thread. Isso leva em conta a Omissão do Ponteiro de Quadro e se o ponteiro de instrução atual estiver em um prólogo, epílogo etc... OBSERVAÇÃO: em alguns casos, isso vai errar se o quadro tiver Omissão de Ponteiro de Quadro e não houver símbolos carregados.

Restrição de local: a API deve ser chamada de um componente monitor (nível < de componente 100.000).

(Herdado de DkmThread)
GetCurrentFuncEvalMode()

GetCurrentFuncEvalMode pode ser chamado por componentes como parte do processamento de eventos para determinar se a avaliação da função está habilitada. Essa função só pode ser chamada como parte do processamento de eventos.

(Herdado de DkmThread)
GetCurrentLocation(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentLocationAsyncResult>)

Fornece o local de um thread, como visível na janela threads, ou threads suspensos na barra de ferramentas de local de depuração.

Esse método acrescentará um novo item de trabalho à lista de trabalho especificada e retornará depois que o item de trabalho for acrescentado. O processamento real do item de trabalho é assíncrono. O chamador será notificado de que a solicitação foi concluída por meio da rotina de conclusão.

Restrição de local: a API deve ser chamada de um componente IDE (nível > de componente 100.000).

(Herdado de DkmThread)
GetCurrentRegisters(DkmUnwoundRegister[])

Retorna um objeto DkmFrameRegisters que contém os valores de registro atuais do thread.

(Herdado de DkmThread)
GetDataItem<T>()

Obtém a instância de 'T' que foi adicionada a essa instância de contêiner. Se esse contêiner não contiver um 'T', essa função retornará nulo.

(Herdado de DkmDataContainer)
GetDebuggerSuspensionCount()

Retornar o número total de suspensões causadas pelo depurador (ou seja, chamadas para DkmThread::Suspend sem uma chamada para DkmThread::Resume). Isso exclui todas as suspensões externas ao depurador.

(Herdado de DkmThread)
GetExtendedRegisters()

Obtém os registros estendidos do contexto de thread.

(Herdado de DkmThread)
GetManagedThreadProperties(DkmWorkList, DkmCompletionRoutine<DkmGetManagedThreadPropertiesAsyncResult>)

Obter as propriedades de um thread gerenciado.

Esse método acrescentará um novo item de trabalho à lista de trabalho especificada e retornará depois que o item de trabalho for acrescentado. O processamento real do item de trabalho é assíncrono. O chamador será notificado de que a solicitação foi concluída por meio da rotina de conclusão.

(Herdado de DkmThread)
GetManagedThreadProperties(Int32)

Obter as propriedades de um thread gerenciado.

(Herdado de DkmThread)
GetMinidumpThreadInfo(DkmMinidumpThreadInfo)

Obtém informações de estado do thread armazenadas no Minidump.

Essa API foi introduzida no Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

(Herdado de DkmThread)
GetStackAddressRange()

Recupera o limite de pilha/base de pilha do thread fornecido. Observe que é possível que esse valor seja alterado ao longo do tempo, por exemplo, no caso de fibras.

(Herdado de DkmThread)
GetSteppers()

GetSteppers enumera os elementos DkmStepper deste objeto DkmThread.

(Herdado de DkmThread)
GetSuspensionCount(Boolean)

Retornar a contagem de suspensão atual desse thread.

(Herdado de DkmThread)
GetSuspensionCount(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSuspensionCountAsyncResult>)

Retornar a contagem de suspensão atual desse thread.

Esse método acrescentará um novo item de trabalho à lista de trabalho especificada e retornará depois que o item de trabalho for acrescentado. O processamento real do item de trabalho é assíncrono. O chamador será notificado de que a solicitação foi concluída por meio da rotina de conclusão.

(Herdado de DkmThread)
GetThreadCurrentWinRtErrorInfo()

GetThreadCurrentWinRtErrorInfo é usado para obter o endereço do objeto IErrorInfo atual para esse thread.

Essa API foi introduzida no Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Herdado de DkmThread)
GetTlsValue(Int32)

Recupera o valor no slot TLS (armazenamento local de thread) do thread de depuração para o índice TLS especificado. Cada thread de um processo tem seu próprio slot para cada índice TLS.

(Herdado de DkmThread)
GetTopStackFrame()

Retorna o quadro de pilha de chamadas superior para um thread. Esse valor normalmente é armazenado em cache após a primeira caminhada da pilha e limpo em continuar. Isso só pode ser chamado acima do provedor de pilha no processo do cliente. Para obter o quadro superior no processo do servidor, chame GetTopStackWalkFrame.

Restrição de local: a API deve ser chamada de um componente IDE (nível > de componente 100.000).

(Herdado de DkmThread)
GetTopStackWalkFrame(DkmRuntimeInstance)

Retornar o quadro de pilha superior para um thread. Esse quadro pode vir de uma instância de runtime ou de um desenrolador de monitor. Isso só pode ser chamado do processo do servidor. Para obter o quadro superior no processo do cliente, use GetTopStackFrame.

Restrição de local: a API deve ser chamada de um componente monitor (nível < de componente 100.000).

(Herdado de DkmThread)
GetVolatileFlags()

Obter sinalizadores voláteis sobre um thread. Por exemplo, retorne se um thread for um thread agendado no modo de usuário.

(Herdado de DkmThread)
GetVolatileFlags(DkmWorkList, DkmCompletionRoutine<DkmGetVolatileFlagsAsyncResult>)

Obter sinalizadores voláteis sobre um thread. Por exemplo, retorne se um thread for um thread agendado no modo de usuário.

Esse método acrescentará um novo item de trabalho à lista de trabalho especificada e retornará depois que o item de trabalho for acrescentado. O processamento real do item de trabalho é assíncrono. O chamador será notificado de que a solicitação foi concluída por meio da rotina de conclusão.

(Herdado de DkmThread)
GetVolatileProperties(DkmWorkList, DkmCompletionRoutine<DkmGetVolatilePropertiesAsyncResult>)

Obter as propriedades dinâmicas de um thread.

Esse método acrescentará um novo item de trabalho à lista de trabalho especificada e retornará depois que o item de trabalho for acrescentado. O processamento real do item de trabalho é assíncrono. O chamador será notificado de que a solicitação foi concluída por meio da rotina de conclusão.

(Herdado de DkmThread)
GetVolatileProperties(Int32, UInt64)

Obtenha as propriedades dinâmicas de um thread.

(Herdado de DkmThread)
IsStoppingEventQueued(Boolean)

Indica se o thread fornecido tem um evento de interrupção na fila. Essas informações são usadas pelo gerenciador de execução para decidir se um thread pode ser escorregado.

(Herdado de DkmThread)
OnBeginFuncEvalExecution(DkmFuncEvalFlags)

OnBeginFuncEvalExecution é chamado pelo monitor de depuração base no thread de evento. Esse método é chamado como parte da implementação de IDkmBaseFuncEvalService.BeginFuncEvalExecution, que é chamado para retomar o processo para uma avaliação de função. OnBeginFuncEvalExecution atualizará o estado interno do objeto DkmProcess para indicar que uma avaliação de função está em andamento. Isso também enviará um evento FuncEvalStarting e marcará o processo como em execução, para que nenhuma operação que exija um processo interrompido seja permitida.

(Herdado de DkmThread)
OnContinueExecution()

OnContinueExecution é chamado pelo monitor de depuração base no thread de eventos. Esse método é chamado como parte da implementação de IDkmContinueExecution.ContinueExecution, que é o que é usado pelo IDE para continuar o processo de destino. Esse método é usado pelo Dispatcher para expedir eventos de interrupção que não puderam ser processados anteriormente ou para atualizar o estado interno do objeto DkmProcess para indicar que o processo de destino agora está em execução. Antes de marcar o processo como em execução, o Dispatcher enviará um evento Continue.

Um monitor de depuração base deve esperar ser chamado novamente enquanto ele estiver nesse método.

(Herdado de DkmThread)
OnEmbeddedBreakpointHit(DkmInstructionAddress, Boolean)

Gerar um evento EmbeddedBreakpointHit. Os componentes que implementam a interface do coletor de eventos receberão a notificação de evento. Esse método enfileirará o evento e o controle retornará imediatamente ao chamador.

(Herdado de DkmThread)
OnInterceptExceptionCompleted(UInt64)

Gerar um evento InterceptExceptionCompleted. Os componentes que implementam a interface do coletor de eventos receberão a notificação de evento. Esse método enfileirará o evento e o controle retornará imediatamente ao chamador.

(Herdado de DkmThread)
OnThreadNameChange()

ThreadNameChange é enviado pelo dispatcher quando DkmThread::NameChange é invocado pelo monitor.

Essa API foi introduzida no Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

(Herdado de DkmThread)
RaiseExecutionControlException(UInt32)

A API que pode ser chamada de uma implementação IDkmSingleStepCompleteReceived ou IDkmRuntimeBreakpointReceived para forçar o DM base a disparar o EXCEPTION_BREAKPOINT ou EXCEPTION_SINGLE_STEP exceção no processo de destino quando a execução for retomada. Normalmente, o ponto de interrupção ou a exceção de etapa única é suprimido implicitamente. Isso permite que o EXCEPTION_BREAKPOINT/EXCEPTION_SINGLE_STEP seja tratado por manipuladores de exceção dentro do processo de destino. Essa API falhará se o thread não estiver em um evento de etapa concluída ou de ponto de interrupção.

Restrição de local: a API deve ser chamada de um componente Monitor (nível < de componente 100.000).

(Herdado de DkmThread)
RemoveDataItem<T>()

Remova a instância de 'T' desse contêiner. Geralmente, é desnecessário chamar esse método, pois um contêiner de dados será esvaziado automaticamente quando o objeto for fechado.

(Herdado de DkmDataContainer)
Resume(Boolean)

Retomar este thread.

(Herdado de DkmThread)
SetContext(Byte[])

Atualize o contexto (registrar valores) de um thread.

(Herdado de DkmThread)
SetDataItem<T>(DkmDataCreationDisposition, T)

Coloque um novo item no contêiner de dados.

(Herdado de DkmDataContainer)
SetExtendedRegisterValue(Int32, ReadOnlyCollection<Byte>)

Define o valor do registro estendido no contexto do thread.

(Herdado de DkmThread)
SetTlsValue(Int32, UInt64)

Armazena um valor no slot TLS (armazenamento local de thread) do thread de depuração para o índice TLS especificado. Cada thread de um processo tem seu próprio slot para cada índice TLS.

(Herdado de DkmThread)
Suspend(Boolean)

Suspenda esse thread.

(Herdado de DkmThread)
Unload(Int32)

ThreadExit é enviado pelo dispatcher quando DkmThread::Unload é invocado pelo monitor.

Esse método só pode ser chamado pelo componente que criou o objeto .

(Herdado de DkmThread)

Aplica-se a