Compartilhar via


DkmModuleInstance Classe

Definição

A classe Instância do Módulo representa um pacote de código (ex: dll ou exe) que é carregado em um processo específico em um local específico. Os objetos da Instância do Módulo são 1:1 com a noção do ambiente de execução de um pacote de código. Por exemplo, no código nativo, os objetos da Instância do Módulo são 1:1 com endereço base.

Classes derivadas: DkmClrModuleInstance, DkmClrNcModuleInstance, DkmCustomModuleInstance, DkmNativeModuleInstance, DkmClrNcContainerModuleInstance

public ref class DkmModuleInstance abstract : Microsoft::VisualStudio::Debugger::DkmDataContainer
[System.Runtime.InteropServices.Guid("74857b6f-618d-66e3-149e-6cebf4c4123e")]
public abstract class DkmModuleInstance : Microsoft.VisualStudio.Debugger.DkmDataContainer
[<System.Runtime.InteropServices.Guid("74857b6f-618d-66e3-149e-6cebf4c4123e")>]
type DkmModuleInstance = class
    inherit DkmDataContainer
Public MustInherit Class DkmModuleInstance
Inherits DkmDataContainer
Herança
Herança
DkmModuleInstance
Derivado
Atributos

Propriedades

BaseAddress

[Opcional] O endereço de memória inicial de onde o módulo foi carregado. Esse valor será zero se o módulo não tiver sido carregado em um bloco contíguo de memória.

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 de monitor, há apenas uma conexão.

Flags

Sinalizadores que indicam características de um DkmModuleInstance.

FullName

Nome do módulo totalmente qualificado. Para módulos baseados em arquivo, esse é o caminho completo para o módulo (por exemplo: c:\windows\system32\kernel32.dll.

IsDisabled

Indica se esta instância de módulo foi desabilitada. Os módulos desabilitados são amplamente ignorados pelo depurador. Para módulos nativos, o intervalo de endereços do módulo desabilitado é tratado como se fosse não mapeado. Para módulos CLR, todos os quadros desses módulos estão ocultos da pilha de chamadas.

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 como, sem sincronização, o status retornado pode não ser mais preciso após a leitura.

(Herdado de DkmDataContainer)
LoadContext

Descrição da cadeia de caracteres do contexto sob o qual este módulo foi carregado. ex: 'Win32' ou 'CLR v2.0.50727: domínio padrão'.

LoadOrder

A contagem de inteiros do número de instâncias de módulo carregadas até e incluindo este módulo. Cada instância de runtime controla sua própria contagem de pedidos de carga.

MemoryLayout

Enumeração que indica como um módulo é disposto na memória.

MinidumpInfoPart

[Opcional] 'MinidumpInfoPart' é usado para transmitir informações adicionais sobre módulos em um DkmProcess para um minidespejo.

Module

[Opcional] A representação do manipulador de símbolos de um módulo (DkmModule) que está associado a essa instância de módulo. Esse valor é inicialmente nulo e é atribuído se e quando os símbolos estão associados a essa instância de módulo.

Name

Representação curta do nome do módulo. Para módulos baseados em arquivo, esse é o nome e a extensão do arquivo (por exemplo: kernel32.dll).

Process

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

RuntimeInstance

A classe DkmRuntimeInstance representa um ambiente de execução que é carregado em um DkmProcess e que contém o código a ser depurado.

Size

[Opcional] O número de bytes na região de memória do módulo. Esse valor será zero se o módulo não tiver sido carregado em um bloco contíguo de memória.

SymbolFileId

[Opcional] Contém informações necessárias para localizar símbolos para este módulo. No Win32, essas informações estão contidas no IMAGE_DEBUG_DIRECTORY.

TagValue

DkmModuleInstance é uma classe base abstrata. Essa enumeração indica de qual classe derivada esse objeto é uma instância do .

TimeDateStamp

Data/hora de quando o módulo carregado foi criado. Esse valor é obtido do IMAGE_NT_HEADERS do módulo carregado. A unidade de medida é um valor FILETIME, que é um valor de 64 bits que representa o número de intervalos de 100 nanossegundos desde 1º de janeiro de 1601 (UTC).

UniqueId

Identifica exclusivamente o objeto DkmModuleInstance.

Version

[Opcional] Informações de versão do arquivo.

Métodos

ClearTransitionModuleFlag()

As instâncias de runtime chamam esse método para marcar um módulo como um módulo de limite. Ao pisar, os runtimes devem marcar se a etapa atingiu um módulo de limite e começar a intervir na arbitragem se tiverem. Observe que alguns runtimes podem não ser capazes de atender a essa solicitação. O dispatcher manterá uma contagem do número de vezes que FlagAsTransitionModule foi chamado. Somente quando um número correspondente de chamadas para ClearTransitionModuleFlag deixará de ser considerado um módulo de transição.

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

Decompile()

Descompile o código de um módulo em C# e cria um novo PDB portátil com essa fonte inserida. Todos os módulos que compartilham esse arquivo de símbolo começarão a usar esses símbolos atualizados.

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

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

Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult>)

Descompile o código de um módulo em C# e cria um novo PDB portátil com essa fonte inserida. Todos os módulos que compartilham esse arquivo de símbolo começarão a usar esses símbolos atualizados.

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

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

Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult173>)

Descompile o código de um módulo em C# e cria um novo PDB portátil com essa fonte inserida. Todos os módulos que compartilham esse arquivo de símbolo começarão a usar esses símbolos atualizados. As implementações devem retornar S_OK em caso de falha e retornar o HRESULT real e quaisquer informações de erro adicionais por meio dos parâmetros 'HR' e 'ErrorMessage'.

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

Essa API foi introduzida no Visual Studio 17 Atualização 3 (DkmApiVersion.VS17Update3).

Decompile(String, Int32)

Descompile o código de um módulo em C# e cria um novo PDB portátil com essa fonte inserida. Todos os módulos que compartilham esse arquivo de símbolo começarão a usar esses símbolos atualizados. As implementações devem retornar S_OK em caso de falha e retornar o HRESULT real e quaisquer informações de erro adicionais por meio dos parâmetros 'HR' e 'ErrorMessage'.

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

Essa API foi introduzida no Visual Studio 17 Atualização 3 (DkmApiVersion.VS17Update3).

FlagAsTransitionModule()

As instâncias de runtime chamam esse método para marcar um módulo como um módulo de limite. Ao pisar, os runtimes devem marcar se a etapa atingiu um módulo de limite e começar a intervir na arbitragem se tiverem. Observe que alguns runtimes podem não ser capazes de atender a essa solicitação. O dispatcher manterá uma contagem do número de vezes que isso foi chamado. Somente quando um número correspondente de chamadas para ClearTransitionModuleFlag tiver sido feito, o módulo não será mais considerado um módulo de transição.

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

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)
GetGPUDisassembly(UInt64, UInt32, Boolean, Boolean)

Obtenha a desmontagem do intervalo de endereços na instância do módulo de depuração.

GetGPUDisassemblySize()

Retorna o tamanho de desmontagem na instância do módulo de depuração.

GetNextGPUInstructionAddress(UInt64)

Retorna o endereço da próxima instrução em relação a um endereço inicial.

GetSymbolLoadInformation()

Retorna uma cadeia de caracteres que descreve os vários locais nos quais os símbolos foram pesquisados e o resultado da verificação desse local. Essas informações são usadas para preencher as 'Informações de Carregamento de Símbolo' na janela de módulos.

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

GetSymbolSearchResult()

Recupera todos os resultados de pesquisa de símbolo associados a esta instância de módulo.

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

Essa API foi introduzida no Visual Studio 17 Atualização 3 (DkmApiVersion.VS17Update3).

GetSymbolSearchResult(DkmWorkList, DkmCompletionRoutine<DkmGetSymbolSearchResultAsyncResult>)

Recupera todos os resultados de pesquisa de símbolo associados a esta instância de módulo.

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

Essa API foi introduzida no Visual Studio 17 Atualização 3 (DkmApiVersion.VS17Update3).

GetSymbolStatusMessage(Boolean)

Obtenha uma descrição de cadeia de caracteres localizada do símbolo atual status.

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

GetSymbolStatusMessage(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSymbolStatusMessageAsyncResult>)

Obtenha uma descrição de cadeia de caracteres localizada do símbolo atual status.

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

IsSuppressed()

Esse método permite que um componente determine se o evento de carregamento do módulo para um módulo foi suprimido.

Essa API foi introduzida no Visual Studio 12 Atualização 3 (DkmApiVersion.VS12Update3).

IsTransitionModule()

Retornará true se qualquer instância de runtime tiver sinalizado este módulo como um módulo de transição.

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

IsUserCode()

Determina se um módulo é considerado código do usuário.

Restrição de local: esse método pode ser chamado de um componente IDE. A partir do Visual Studio 2013 Atualização 2, também é possível chamar isso de um componente de monitor para código gerenciado. No Visual Studio 2017 Atualização 8, o CallDirection da API se tornou 'Bidirecional' de 'Normal' e agora pode ser chamado de qualquer componente, AsyncCaller foi definido como 'true' e CallerLocationConstraint foi definido como 'None' de 'NoMarshalling'.

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

IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmModuleInstanceIsUserCodeAsyncResult>)

Determina se um módulo é considerado código do 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.

Restrição de local: esse método pode ser chamado de um componente IDE. A partir do Visual Studio 2013 Atualização 2, também é possível chamar isso de um componente de monitor para código gerenciado. No Visual Studio 2017 Atualização 8, o CallDirection da API se tornou 'Bidirecional' de 'Normal' e agora pode ser chamado de qualquer componente, AsyncCaller foi definido como 'true' e CallerLocationConstraint foi definido como 'None' de 'NoMarshalling'.

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

OnBinaryLoaded(String)

Gerar um evento BinaryLoaded. Os componentes que implementam a interface do coletor de eventos receberão a notificação de evento. O controle retornará depois que todos os componentes forem notificados.

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

OnBinaryReloadOpportunity()

Gere um evento BinaryReloadOpportunity. Os componentes que implementam a interface do coletor de eventos receberão a notificação de evento. O controle retornará depois que todos os componentes forem notificados.

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 12 Atualização 2 (DkmApiVersion.VS12Update2).

OnModuleModified()

Esse método é chamado quando um módulo é alterado devido ao EnC ou ao código emitido dinamicamente.

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 14 RTM (DkmApiVersion.VS14RTM).

OnSymbolsLoaded(DkmModule, Boolean)

Esse método é invocado por monitores de depuração base em resposta a uma chamada para IDkmModuleSymbolsLoaded.RaiseSymbolsLoadedEvent. Esse método deve ser invocado do thread de evento ou do thread de solicitação como parte de um recarregamento. Os monitores de depuração base devem alternar de forma síncrona para o thread de evento, pausar o processo de destino e invocar OnSymbolsLoaded.

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

OnSymbolsUpdated(DkmModule)

Gere um evento ModuleSymbolsUpdated. Os componentes que implementam a interface do coletor de eventos receberão a notificação de evento. O controle retornará depois que todos os componentes forem notificados.

ReadSymbols()

Esse método é invocado por manipuladores de símbolos para ler símbolos para DkmModuleInstances cujos símbolos residem na memória do depurador.

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)
SetDataItem<T>(DkmDataCreationDisposition, T)

Coloque um novo item no contêiner de dados.

(Herdado de DkmDataContainer)
SetDisabled(Boolean)

Atualizações a status desabilitada em um módulo. Esse método só pode ser chamado de um evento ModuleInstanceLoad. Ao desabilitar um módulo, é comum suprimir também o evento de carregamento do módulo.

SetModule(DkmModule, Boolean)

Esse método é invocado por um provedor de símbolos para associar um DkmModule a um DkmModuleInstance e disparar um evento ModuleSymbolsLoaded. Ele pode ser chamado apenas uma vez para um objeto DkmModuleInstance. Chamar essa API estabelecerá a associação DkmModule-DkmModuleInstance<>, bem como fará com que um evento ModuleSymbolsLoaded seja acionado.

TryLoadBinary()

Tentativa de carregar um binário que falhou anteriormente ao carregar usando caminhos de símbolo atualizados.

TryLoadBinary(DkmWorkList, DkmCompletionRoutine<DkmTryLoadBinaryAsyncResult>)

Tentativa de carregar um binário que falhou anteriormente ao carregar usando caminhos de símbolo atualizados.

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.

TryLoadSymbols()

Chamado para iniciar o carregamento de símbolos para DkmModuleInstances cujos símbolos não foram encontrados quando o módulo foi carregado.

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

TryLoadSymbols(DkmSymbolLoadFlags)

Chamado para iniciar o carregamento de símbolos para DkmModuleInstances cujos símbolos não foram encontrados quando o módulo foi carregado.

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

Essa API foi introduzida no Visual Studio 17 Atualização 4 (DkmApiVersion.VS17Update4).

TryLoadSymbols(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>)

Chamado para iniciar o carregamento de símbolos para DkmModuleInstances cujos símbolos não foram encontrados quando o módulo foi carregado.

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

TryLoadSymbols(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>)

Chamado para iniciar o carregamento de símbolos para DkmModuleInstances cujos símbolos não foram encontrados quando o módulo foi carregado.

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

Essa API foi introduzida no Visual Studio 17 Atualização 4 (DkmApiVersion.VS17Update4).

TryLoadSymbolsCallback()

Chamado para iniciar o carregamento de símbolos para DkmModuleInstances cujos símbolos não foram encontrados quando o módulo foi carregado.

Restrição de local: isso pode ser chamado do cliente ou do servidor. A implementação do servidor desse é um cache para evitar chamadas de rede desnecessárias. O cliente vai diretamente para a implementação "real", o que também garante que os reattempts retornem antecipadamente.

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

TryLoadSymbolsCallback(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsCallbackAsyncResult>)

Chamado para iniciar o carregamento de símbolos para DkmModuleInstances cujos símbolos não foram encontrados quando o módulo foi carregado.

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: isso pode ser chamado do cliente ou do servidor. A implementação do servidor desse é um cache para evitar chamadas de rede desnecessárias. O cliente vai diretamente para a implementação "real", que também garante que os reattempts retornem mais cedo.

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

TryLoadSymbolsCallback177(DkmSymbolLoadFlags)

Chamado para iniciar o carregamento de símbolos presentes localmente para DkmModuleInstances cujos símbolos não foram encontrados quando o módulo foi carregado.

Restrição de local: isso pode ser chamado do cliente ou do servidor. A implementação do servidor desse é um cache para evitar chamadas de rede desnecessárias. O cliente vai diretamente para a implementação "real", que também garante que os reattempts retornem mais cedo.

Essa API foi introduzida no Visual Studio 17 Atualização 7 (DkmApiVersion.VS17Update7).

TryLoadSymbolsCallback177(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsCallback177AsyncResult>)

Chamado para iniciar o carregamento de símbolos presentes localmente para DkmModuleInstances cujos símbolos não foram encontrados quando o módulo foi carregado.

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: isso pode ser chamado do cliente ou do servidor. A implementação do servidor desse é um cache para evitar chamadas de rede desnecessárias. O cliente vai diretamente para a implementação "real", que também garante que os reattempts retornem mais cedo.

Essa API foi introduzida no Visual Studio 17 Atualização 7 (DkmApiVersion.VS17Update7).

Unload()

Marque o objeto Unload como descarregado e notifique os componentes que implementam a interface do coletor de eventos. O controle retornará depois que todos os componentes forem notificados.

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

Aplica-se a