Funzione SymGetModuleInfo (dbghelp.h)
Recupera le informazioni sul modulo del modulo specificato.
Sintassi
BOOL IMAGEAPI SymGetModuleInfo(
[in] HANDLE hProcess,
[in] DWORD dwAddr,
[out] PIMAGEHLP_MODULE ModuleInfo
);
Parametri
[in] hProcess
Handle per il processo passato originariamente alla funzione SymInitialize .
[in] dwAddr
Indirizzo virtuale contenuto in uno dei moduli caricati dalla funzione SymLoadModule64
[out] ModuleInfo
Puntatore a una struttura IMAGEHLP_MODULE64 . Il membro SizeOfStruct deve essere impostato sulle dimensioni della struttura IMAGEHLP_MODULE64 . Un valore non valido genererà un errore.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è TRUE.
Se la funzione ha esito negativo, il valore restituito è FALSE. Per recuperare informazioni sull'errore estese, chiamare GetLastError.
Commenti
Viene eseguita la ricerca di un modulo contenente dwAddr. Il modulo si trova in base all'indirizzo di carico e alle dimensioni di ogni modulo. Se viene trovato un modulo valido, il parametro ModuleInfo viene compilato con le informazioni sul modulo.
Le dimensioni della struttura IMAGEHLP_MODULE64 utilizzata da questa funzione sono cambiate nel corso degli anni. Se viene chiamata una versione di DbgHelp.dll precedente a DbgHelp.h usata per compilare il codice chiamante, questa funzione potrebbe non riuscire con un codice di errore di ERROR_INVALID_PARAMETER. Questo problema si verifica in genere quando viene chiamata la versione di sistema (%WinDir%\System32\DbgHelp.dll). Il codice che chiama la versione di sistema di DbgHelp.dll deve essere compilato usando l'SDK appropriato per tale versione di Windows o l'SDK per una versione precedente.
Il modello consigliato consiste nel ridistribuire la versione richiesta di DbgHelp.dll insieme al software chiamante. In questo modo il chiamante può usare le versioni più affidabili di DbgHelp.dll e un'operazione di semplificazione degli aggiornamenti. La versione più recente di DbgHelp.dll è sempre disponibile nel pacchetto Strumenti di debug per Windows . Come regola generale, il codice compilato per funzionare con le versioni precedenti funzionerà sempre con le versioni più recenti.
Tutte le funzioni DbgHelp, ad esempio questa, sono a thread singolo. Di conseguenza, le chiamate da più thread a questa funzione genereranno un comportamento imprevisto o un danneggiamento della memoria. Per evitare questo problema, è necessario sincronizzare tutte le chiamate simultanee da più thread a questa funzione.
Per chiamare la versione Unicode di questa funzione, definire DBGHELP_TRANSLATE_TCHAR. SymGetModuleInfoW64 è definito come segue in DbgHelp.h.
BOOL
IMAGEAPI
SymGetModuleInfoW64(
__in HANDLE hProcess,
__in DWORD64 qwAddr,
__out PIMAGEHLP_MODULEW64 ModuleInfo
);
#ifdef DBGHELP_TRANSLATE_TCHAR
#define SymGetModuleInfo64 SymGetModuleInfoW64
#endif
Questa funzione sostituisce la funzione SymGetModuleInfo . Per altre informazioni, vedere Aggiornamento del supporto della piattaforma. SymGetModuleInfo è definito come segue in 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
Requisiti
Piattaforma di destinazione | Windows |
Intestazione | dbghelp.h |
Libreria | Dbghelp.lib |
DLL | Dbghelp.dll |
Componente ridistribuibile | DbgHelp.dll 5.1 o versione successiva |