Inizializzazione del gestore dei simboli
Il codice seguente illustra come inizializzare il gestore dei simboli. La funzione SymSetOptions rinvia il caricamento dei simboli fino a quando non vengono richieste informazioni sui simboli. Il codice carica i simboli per ogni modulo nel processo specificato passando un valore TRUE per il parametro bInvade della funzione SymInitialize. Questa funzione chiama Funzione SymLoadModule64 per ogni modulo di cui è stato eseguito il mapping nello spazio degli indirizzi.
Se il processo specificato non è il processo denominato SymInitialize, il codice passa un identificatore di processo come primo parametro di SymInitialize.
Se si specifica NULL come secondo parametro di SymInitialize , il gestore dei simboli deve usare il percorso di ricerca predefinito per individuare i file di simboli. Per informazioni dettagliate sul modo in cui il gestore dei simboli individua i file di simboli o su come un'applicazione può specificare un percorso di ricerca dei simboli, vedere Percorsi dei simboli.
DWORD error;
HANDLE hCurrentProcess;
HANDLE hProcess;
SymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS);
hCurrentProcess = GetCurrentProcess();
if (!DuplicateHandle(hCurrentProcess, hCurrentProcess, hCurrentProcess, &hProcess, 0, FALSE, DUPLICATE_SAME_ACCESS))
{
// DuplicateHandle failed
error = GetLastError();
printf("DuplicateHandle returned error : %d\n", error);
return FALSE;
}
if (!SymInitialize(hProcess, NULL, TRUE))
{
// SymInitialize failed
error = GetLastError();
printf("SymInitialize returned error : %d\n", error);
return FALSE;
}