Поделиться через


Функция SymGetSymFromName (dbghelp.h)

Находит символ для указанного имени.

Примечание Эта функция предоставляется только для обеспечения совместимости. Приложения должны использовать SymFromName.
 

Синтаксис

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 или более поздней версии

См. также раздел

Функции DbgHelp

IMAGEHLP_SYMBOL64

SymFromName

SymInitialize