Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Poniższy kod pokazuje, jak zainicjować procedurę obsługi symboli. Funkcja SymSetOptions opóźnia ładowanie symboli do momentu, gdy zostaną zażądane informacje o tych symbolach. Kod ładuje symbole dla każdego modułu, w określonym procesie, przekazując wartość TRUE dla bInvade parametru SymInitialize. (Ta funkcja wywołuje funkcję SymLoadModule64 dla każdego modułu, który został zamapowany do przestrzeni adresowej).
Jeśli określony proces nie jest tym, który wywołał SymInitialize, kod przekazuje identyfikator procesu jako pierwszy parametr funkcji SymInitialize.
Określenie null jako drugiego parametru SymInitialize wskazuje, że program obsługi symboli powinien używać domyślnej ścieżki wyszukiwania do lokalizowania plików symboli. Aby uzyskać szczegółowe informacje o tym, jak program obsługi symboli lokalizuje pliki symboli lub jak aplikacja może określić ścieżkę wyszukiwania symboli, zobacz Ścieżki symboli.
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;
}