Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В следующем коде показано, как инициализировать обработчик символов. Функция SymSetOptions откладывает загрузку символов до запроса сведений о символах. Код загружает символы для каждого модуля в указанном процессе путем передачи значения TRUE для параметра bInvade функции SymInitialize. Эта функция вызывает функцию SymLoadModule64 для каждого модуля, который был сопоставлен с адресным пространством процесса.
Если указанный процесс не является тем процессом, который вызвал SymInitialize, код передает идентификатор процесса в качестве первого параметра SymInitialize.
Указание NULL в качестве второго параметра SymInitialize указывает, что обработчик символов должен использовать путь поиска по умолчанию для поиска файлов символов. Подробные сведения о том, как обработчик символов находит файлы символов или как приложение может указать путь поиска символов, см. в разделе Пути символов.
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;
}