Inicialización del controlador de símbolos
En el código siguiente se muestra cómo inicializar el controlador de símbolos. La función SymSetOptions aplaza la carga de símbolos hasta que se solicita información de símbolos. El código carga los símbolos de cada módulo del proceso especificado pasando un valor de TRUE para el parámetro bInvade de la función SymInitialize . (Esta función llama a la función SymLoadModule64 para cada módulo que el proceso se ha asignado a su espacio de direcciones).
Si el proceso especificado no es el proceso que llamó a SymInitialize, el código pasa un identificador de proceso como primer parámetro de SymInitialize.
Si se especifica NULL como segundo parámetro de SymInitialize , se indica que el controlador de símbolos debe usar la ruta de acceso de búsqueda predeterminada para buscar archivos de símbolos. Para obtener información detallada sobre cómo el controlador de símbolos localiza los archivos de símbolos o cómo una aplicación puede especificar una ruta de búsqueda de símbolos, consulte Rutas de acceso de símbolos.
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;
}