Módulos

Uma imagem é um executável, DLL ou driver que o Windows carregou como parte de um processo de modo de usuário ou do kernel. O arquivo do qual a imagem foi carregada é chamado de arquivo de imagem.

O mecanismo de depurador armazena em cache uma lista de módulos para cada processo (ou, no modo kernel, o processo virtual). Normalmente, cada módulo nesta lista representa uma imagem no processo. A lista de módulos do mecanismo pode ser sincronizada com o destino usando Recarregar.

Nota Na depuração do modo kernel, a lista de módulos do mecanismo para o processo virtual contém os módulos do modo kernel em todo o sistema e os módulos do modo de usuário do processo atual.

Um módulo pode ser especificado por seu endereço base no espaço de endereço virtual do destino ou por seu índice na lista de módulos que o mecanismo mantém para o destino. O índice do módulo é igual à sua posição na lista de módulos e, portanto, esse índice será alterado se um módulo com um índice inferior for descarregado. Todos os módulos descarregados têm índices; eles são sempre maiores do que os índices de módulos carregados. O endereço base de um módulo não será alterado enquanto ele permanecer carregado; em alguns casos, ele poderá ser alterado se o módulo for descarregado e recarregado.

O índice é um número entre zero e o número de módulos no destino menos um. O número de módulos no processo atual pode ser encontrado chamando GetNumberModules.

O índice pode ser usado para localizar o endereço base chamando GetModuleByIndex. O endereço base de um módulo que possui um símbolo com um determinado nome pode ser encontrado usando GetSymbolModule.

Os seguintes métodos retornam o índice e o endereço base do módulo especificado:

  • Para localizar um módulo com um determinado nome de módulo, use GetModuleByModuleName.

  • O módulo cujo intervalo de endereços virtuais contém um determinado endereço é retornado por GetModuleByOffset. Esse método pode ser usado para localizar o índice do módulo dado o endereço base do módulo.

Os seguintes métodos retornam informações sobre módulos especificados por endereço base ou índice:

Módulos descarregados

Durante a depuração do modo de usuário, os módulos descarregados são rastreados somente no Windows Server 2003 e versões posteriores do Windows. Versões anteriores do Windows rastreavam apenas módulos descarregados no modo kernel. Quando eles são rastreados, eles são indexados após os módulos carregados. Portanto, qualquer método que pesquisa os módulos do destino pesquisará todos os módulos carregados e, em seguida, os módulos descarregados. Os módulos descarregados podem ser usados para analisar falhas causadas por uma tentativa de chamar o código descarregado.

Módulos sintéticos

Os módulos sintéticos podem ser criados como uma maneira de rotular uma região de memória. Esses módulos não podem conter símbolos reais, mas podem conter símbolos sintéticos. O método AddSyntheticModule cria um novo módulo sintético. Os módulos sintéticos podem ser removidos usando RemoveSyntheticModule. Recarregar todos os módulos no destino exclui todos os módulos sintéticos.

Caminho da imagem

O caminho da imagem executável é usado pelo mecanismo ao pesquisar imagens executáveis.

O caminho da imagem executável pode consistir em vários diretórios separados por ponto e vírgula (;). Esses diretórios são pesquisados em ordem.

Para obter uma visão geral do caminho da imagem executável, consulte Caminho da imagem executável.

Para adicionar um diretório ao caminho da imagem executável, use o método AppendImagePath. Todo o caminho de imagem executável é retornado por GetImagePath e pode ser alterado usando SetImagePath.

Informações adicionais

Para obter mais informações sobre processos e processos virtuais, consulte Threads and Processes.