Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le code suivant montre comment initialiser le gestionnaire de symboles. La fonction SymSetOptions reporte le chargement des symboles jusqu’à ce que les informations de symboles soit demandées. Le code charge les symboles de chaque module dans le processus spécifié en passant une valeur de TRUE pour le paramètre bInvade de la fonction SymInitialize. (Cette fonction appelle la fonction SymLoadModule64 pour chaque module que le processus a mappé dans son espace d’adressage.)
Si le processus spécifié n’est pas le processus appelé SymInitialize, le code transmet un identificateur de processus en tant que premier paramètre de SymInitialize.
La spécification NULL comme deuxième paramètre de SymInitialize indique que le gestionnaire de symboles doit utiliser le chemin de recherche par défaut pour localiser les fichiers de symboles. Pour plus d’informations sur la façon dont le gestionnaire de symboles localise les fichiers de symboles ou comment une application peut spécifier un chemin de recherche de symboles, consultez chemins d’accès aux symboles.
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;
}