Funzione SymLoadModuleEx (dbghelp.h)
Carica la tabella dei simboli per il modulo specificato.
Sintassi
DWORD64 IMAGEAPI SymLoadModuleEx(
[in] HANDLE hProcess,
[in] HANDLE hFile,
[in] PCSTR ImageName,
[in] PCSTR ModuleName,
[in] DWORD64 BaseOfDll,
[in] DWORD DllSize,
[in] PMODLOAD_DATA Data,
[in] DWORD Flags
);
Parametri
[in] hProcess
Handle per il processo passato originariamente alla funzione SymInitialize .
[in] hFile
Handle per il file per l'immagine eseguibile. Questo argomento viene usato principalmente dai debugger, in cui il debugger passa l'handle di file ottenuto da un evento di debug. Un valore NULL indica che hFile non viene usato.
[in] ImageName
Nome dell'immagine eseguibile. Questo nome può contenere un percorso parziale, un percorso completo o nessun percorso. Se il file non può trovarsi in base al nome specificato, viene utilizzato il percorso di ricerca dei simboli.
[in] ModuleName
Nome del collegamento per il modulo. Se il valore del puntatore è NULL, la libreria crea un nome usando il nome di base del file di simboli.
[in] BaseOfDll
Indirizzo di caricamento del modulo. Se il valore è zero, la libreria ottiene l'indirizzo di caricamento dal file di simboli. L'indirizzo di caricamento contenuto nel file di simboli non è necessariamente l'indirizzo di caricamento effettivo. I debugger e altre applicazioni con un indirizzo di carico effettivo devono usare l'indirizzo di caricamento reale quando si chiama questa funzione.
Se l'immagine è un file con estensione pdb, questo parametro non può essere zero.
[in] DllSize
Dimensioni del modulo, in byte. Se il valore è zero, la libreria ottiene le dimensioni dal file di simboli. Le dimensioni contenute nel file di simboli non sono necessariamente le dimensioni effettive. I debugger e altre applicazioni con dimensioni effettive devono usare le dimensioni reali quando si chiama questa funzione.
Se l'immagine è un file con estensione pdb, questo parametro non può essere zero.
[in] Data
Puntatore a una struttura MODLOAD_DATA che rappresenta intestazioni diverse dall'intestazione PE standard. Questo parametro è facoltativo e può essere NULL.
[in] Flags
Questo parametro può essere zero o uno o più dei valori seguenti. Se questo parametro è zero, la funzione carica i moduli e i simboli per il modulo.
Valore | Significato |
---|---|
|
Carica il modulo ma non i simboli per il modulo. |
|
Crea un modulo virtuale denominato ModuleName nell'indirizzo specificato in BaseOfDll. Per aggiungere simboli a questo modulo, chiamare la funzione SymAddSymbol . |
Valore restituito
Se la funzione ha esito positivo, il valore restituito è l'indirizzo di base del modulo caricato.
Se la funzione ha esito negativo, il valore restituito è zero. Per recuperare informazioni sull'errore estese, chiamare GetLastError.
Se il modulo è già caricato, il valore restituito è zero e GetLastError restituisce ERROR_SUCCESS.
Commenti
Il gestore dei simboli crea una voce per il modulo e, se l'opzione di caricamento dei simboli posticipati è disattivata, viene effettuato un tentativo di caricare i simboli. Se il caricamento posticipato dei simboli è abilitato, il modulo viene contrassegnato come posticipato e i simboli non vengono caricati fino a quando non viene eseguito un riferimento a un simbolo nel modulo. È pertanto consigliabile chiamare sempre la funzione SymGetModuleInfo64 dopo aver chiamato SymLoadModuleEx.
Per scaricare la tabella dei simboli, usare la funzione SymUnloadModule64 .
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.
Esempio
Per un esempio, vedere Caricamento di un modulo symbol.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | dbghelp.h |
Libreria | Dbghelp.lib |
DLL | Dbghelp.dll |
Componente ridistribuibile | DbgHelp.dll 6.0 o versione successiva |