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


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

Перечисляет все символы в процессе.

Синтаксис

BOOL IMAGEAPI SymEnumSymbols(
  [in]           HANDLE                         hProcess,
  [in]           ULONG64                        BaseOfDll,
  [in, optional] PCSTR                          Mask,
  [in]           PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
  [in, optional] PVOID                          UserContext
);

Параметры

[in] hProcess

Дескриптор процесса. Этот дескриптор должен быть ранее передан в функцию SymInitialize .

[in] BaseOfDll

Базовый адрес модуля. Если это значение равно нулю и Mask содержит восклицательный знак (!), функция выполняет поиск по модулям. Если это значение равно нулю и Mask не содержит восклицательный знак, функция использует область, установленный функцией SymSetContext.

[in, optional] Mask

Строка с подстановочными знаками, указывающая имена перечисляемых символов. При необходимости текст может содержать подстановочные знаки "*" и "?".

Чтобы указать конкретный модуль или набор модулей, начинайте текст строкой с подстановочными знаками, указывающей модуль, а затем восклицательным знаком. При указании модуля BaseOfDll игнорируется.

Значение Значение
Foo
Если baseOfDll не равен нулю, то SymEnumSymbols будет искать глобальный символ с именем foo.

Если значение BaseOfDll равно нулю, SymEnumSymbols будет искать локальный символ с именем foo в область, установленной последним вызовом функции SymSetContext.

Foo?
Если BaseOfDll не равен нулю, то SymEnumSymbols будет искать глобальный символ, который начинается с foo и содержит один дополнительный символ, например "дурак" и "фут".

Если BaseOfDll равно нулю, то SymEnumSymbols будет искать символ, который начинается с "foo" и содержит один дополнительный символ, например "fool" и "foot". Поиск будет находиться в область, установленном последним вызовом функции SymSetContext.

foo*!bar
SymEnumSymbols будет искать в каждом загруженном модуле, который начинается с текста foo для символа с именем "bar". Он может найти такие совпадения, как "foot!bar", "footlocker!bar" и "fool!bar".
*!*
SymEnumSymbols перечисляет каждый символ в каждом загруженном модуле.

[in] EnumSymbolsCallback

Функция обратного вызова SymEnumSymbolsProc , которая получает сведения о символах.

[in, optional] UserContext

Определяемое пользователем значение, передаваемое в функцию обратного вызова, или ЗНАЧЕНИЕ NULL. Этот параметр обычно используется приложением для передачи указателя на структуру данных, которая предоставляет контекст для функции обратного вызова.

Возвращаемое значение

Если функция выполняется успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError.

Комментарии

Все функции DbgHelp, такие как эта, являются однопоточными. Поэтому вызовы из нескольких потоков к этой функции, скорее всего, приведут к непредвиденному поведению или повреждению памяти. Чтобы избежать этого, необходимо синхронизировать все параллельные вызовы из нескольких потоков в эту функцию.

Чтобы вызвать версию этой функции в Юникоде, определите DBGHELP_TRANSLATE_TCHAR.

Примеры

Пример см. в разделе Перечисление символов.

Требования

   
Целевая платформа Windows
Header dbghelp.h
Библиотека Dbghelp.lib
DLL Dbghelp.dll
Распространяемые компоненты DbgHelp.dll 5.1 или более поздней версии

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

Функции DbgHelp

SymEnumSymbolsProc