Функция SymGetSymFromName (dbghelp.h)
Находит символ для указанного имени.
Синтаксис
BOOL IMAGEAPI SymGetSymFromName(
[in] HANDLE hProcess,
[in] PCSTR Name,
[in, out] PIMAGEHLP_SYMBOL Symbol
);
Параметры
[in] hProcess
Дескриптор процесса, который изначально был передан в функцию SymInitialize .
[in] Name
Имя символа, для которого должен находиться символ.
[in, out] Symbol
Указатель на структуру IMAGEHLP_SYMBOL64 .
Возвращаемое значение
Если функция выполняется успешно, возвращается значение TRUE.
Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError.
Комментарии
Функция SymGetSymFromName64 используется для поиска символа для указанного имени. Имя может содержать префикс модуля, который изолирует поиск символов в таблице символов одного модуля.
Префикс модуля имеет вид "module!". Символ "!" — это разделитель между именем модуля и именем символа. Если префикс модуля отсутствует, поиск выполняется в таблице символов каждого модуля линейным образом, начиная с первого загруженного модуля.
Использовать префикс модуля предпочтительнее по двум причинам. Во-первых, поиск символов выполняется гораздо быстрее. Во-вторых, если включена отложенная загрузка символов, поиск приводит к загрузке символов для каждого модуля, в который выполняется поиск. При обнаружении символа сведения о символах копируются в буфер символов , предоставленный вызывающим объектом. Вызывающий объект должен правильно выделить буфер символов и заполнить необходимые параметры в структуре IMAGEHLP_SYMBOL64 перед вызовом SymGetSymFromName64.
Все функции DbgHelp, такие как эта, являются однопоточными. Поэтому вызовы из нескольких потоков к этой функции, скорее всего, приведут к непредвиденному поведению или повреждению памяти. Чтобы избежать этого, необходимо синхронизировать все параллельные вызовы из нескольких потоков в эту функцию.
Эта функция заменяет функцию SymGetSymFromName . Дополнительные сведения см. в разделе Обновленная поддержка платформы. SymGetSymFromName определяется следующим образом в Dbghelp.h.
#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetSymFromName SymGetSymFromName64
#else
BOOL
IMAGEAPI
SymGetSymFromName(
__in HANDLE hProcess,
__in PCSTR Name,
__inout PIMAGEHLP_SYMBOL Symbol
);
#endif
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | dbghelp.h |
Библиотека | Dbghelp.lib |
DLL | Dbghelp.dll |
Распространяемые компоненты | DbgHelp.dll 5.1 или более поздней версии |