Compartilhar via


Função SymGetModuleInfo (dbghelp.h)

Recupera as informações do módulo do módulo especificado.

Sintaxe

BOOL IMAGEAPI SymGetModuleInfo(
  [in]  HANDLE           hProcess,
  [in]  DWORD            dwAddr,
  [out] PIMAGEHLP_MODULE ModuleInfo
);

Parâmetros

[in] hProcess

Um identificador para o processo que foi originalmente passado para a função SymInitialize .

[in] dwAddr

O endereço virtual contido em um dos módulos carregados pela função SymLoadModule64

[out] ModuleInfo

Um ponteiro para uma estrutura IMAGEHLP_MODULE64 . O membro SizeOfStruct deve ser definido como o tamanho da estrutura IMAGEHLP_MODULE64 . Um valor inválido resultará em um erro.

Valor retornado

Se a função for bem-sucedida, o valor retornado será TRUE.

Se a função falhar, o valor retornado será FALSE. Para recuperar informações de erro estendidas, chame GetLastError.

Comentários

A tabela de módulos é pesquisada por um módulo que contém o dwAddr. O módulo está localizado com base no endereço de carga e no tamanho de cada módulo. Se um módulo válido for encontrado, o parâmetro ModuleInfo será preenchido com as informações sobre o módulo.

O tamanho da estrutura de IMAGEHLP_MODULE64 usada por essa função mudou ao longo dos anos. Se uma versão do DbgHelp.dll for chamada que seja mais antiga do que o DbgHelp.h usado para compilar o código de chamada, essa função poderá falhar com um código de erro de ERROR_INVALID_PARAMETER. Isso geralmente ocorre quando a versão do sistema (%WinDir%\System32\DbgHelp.dll) é chamada. O código que chama a versão do sistema de DbgHelp.dll deve ser compilado usando o SDK apropriado para essa versão do Windows ou o SDK para uma versão anterior.

O modelo recomendado é redistribuir a versão necessária do DbgHelp.dll junto com o software de chamada. Isso permite que o chamador use as versões mais robustas do DbgHelp.dll, bem como uma simplificação de atualizações. A versão mais recente do DbgHelp.dll sempre pode ser encontrada no pacote Ferramentas de Depuração para Windows . Como regra geral, o código compilado para trabalhar com versões mais antigas sempre funcionará com versões mais recentes.

Todas as funções DbgHelp, como esta, são threaded único. Portanto, chamadas de mais de um thread para essa função provavelmente resultarão em comportamento inesperado ou corrupção de memória. Para evitar isso, você deve sincronizar todas as chamadas simultâneas de mais de um thread para essa função.

Para chamar a versão Unicode dessa função, defina DBGHELP_TRANSLATE_TCHAR. SymGetModuleInfoW64 é definido da seguinte maneira em DbgHelp.h.


BOOL
IMAGEAPI
SymGetModuleInfoW64(
    __in HANDLE hProcess,
    __in DWORD64 qwAddr,
    __out PIMAGEHLP_MODULEW64 ModuleInfo
    );

#ifdef DBGHELP_TRANSLATE_TCHAR
#define SymGetModuleInfo64   SymGetModuleInfoW64
#endif

Essa função substitui a função SymGetModuleInfo . Para obter mais informações, consulte Suporte de plataforma atualizado. SymGetModuleInfo é definido da seguinte maneira em DbgHelp.h.

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetModuleInfo   SymGetModuleInfo64
#define SymGetModuleInfoW  SymGetModuleInfoW64
#else
BOOL
IMAGEAPI
SymGetModuleInfo(
    __in HANDLE hProcess,
    __in DWORD dwAddr,
    __out PIMAGEHLP_MODULE ModuleInfo
    );

BOOL
IMAGEAPI
SymGetModuleInfoW(
    __in HANDLE hProcess,
    __in DWORD dwAddr,
    __out PIMAGEHLP_MODULEW ModuleInfo
    );
#endif

Requisitos

   
Plataforma de Destino Windows
Cabeçalho dbghelp.h
Biblioteca Dbghelp.lib
DLL Dbghelp.dll
Redistribuível DbgHelp.dll 5.1 ou posterior

Confira também

Funções DbgHelp

IMAGEHLP_MODULE64

SymInitialize

SymLoadModule64