Partilhar via


Informações do módulo

Um módulo é um arquivo executável ou DLL. Cada processo consiste em um ou mais módulos. Você pode recuperar a lista de identificadores de módulo para um processo chamando a funçãoEnumProcessModules. Esta função preenche uma matriz de valores de HMODULE com os identificadores de módulo para o processo especificado. O primeiro módulo é o arquivo executável. Lembre-se de que esses identificadores de módulo são provavelmente de algum outro processo, portanto, você não pode usá-los com funções como GetModuleFileName. No entanto, você pode usar funções PSAPI para obter informações sobre um módulo de outro processo.

O procedimento a seguir descreve como obter informações do módulo de outro processo.

Para obter informações do módulo de outro processo

  1. Chame o função GetModuleBaseName. Esta função usa um identificador de processo e um identificador de módulo como entrada e preenche um buffer com o nome base de um módulo (por exemplo, Kernel32.dll). Uma função relacionada, GetModuleFileNameEx, usa os mesmos parâmetros que a entrada, mas retorna o caminho completo para o módulo (por exemplo, C:\Windows\System32\Kernel32.dll).
  2. Chame o função GetModuleInformation. Esta função usa uma alça de processo e uma alça de módulo e preenche uma estrutura deMODULEINFOcom o endereço de carga do módulo, o tamanho do espaço de endereçamento linear que ocupa e um ponteiro para seu ponto de entrada.

Se um aplicativo requer informações de módulo para o processo atual, ele deve usar o função GetModuleFileName em vez das funções do módulo PSAPI. Isso ajuda o desempenho do aplicativo de duas maneiras: A função GetModuleFileName é mais eficiente do que as funções do módulo PSAPI, e um aplicativo pode evitar o carregamento de psapi.dll se não usar nenhuma função PSAPI.

O GetModuleBaseName e funções de GetModuleFileNameEx são projetados principalmente para uso por depuradores e aplicativos semelhantes que devem extrair informações do módulo de outro processo. Se a lista de módulos no processo de destino estiver corrompida ou ainda não tiver sido inicializada, ou se a lista de módulos mudar durante a chamada de função como resultado de DLLs sendo carregadas ou descarregadas, essas funções podem falhar ou retornar informações incorretas.