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


структура SYMBOL_INFO (dbghelp.h)

Содержит сведения о символах.

Синтаксис

typedef struct _SYMBOL_INFO {
  ULONG   SizeOfStruct;
  ULONG   TypeIndex;
  ULONG64 Reserved[2];
  ULONG   Index;
  ULONG   Size;
  ULONG64 ModBase;
  ULONG   Flags;
  ULONG64 Value;
  ULONG64 Address;
  ULONG   Register;
  ULONG   Scope;
  ULONG   Tag;
  ULONG   NameLen;
  ULONG   MaxNameLen;
  CHAR    Name[1];
} SYMBOL_INFO, *PSYMBOL_INFO;

Члены

SizeOfStruct

Размер структуры в байтах. Для этого элемента должно быть задано значение sizeof(SYMBOL_INFO). Обратите внимание, что общий размер данных равен SizeOfStruct + (MaxNameLen - 1) * sizeof(TCHAR). Причина вычитания состоит в том, что первый символ в имени учитывается в размере структуры.

TypeIndex

Уникальное значение, определяющее данные типа, описывающие символ. Это значение не сохраняется между сеансами.

Reserved[2]

Этот элемент зарезервирован для использования системой.

Index

Уникальное значение для символа. Значение, связанное с символом, не гарантируется при каждом запуске процесса.

Для символов PDB значение индекса для символа не создается, пока символ не будет перечислен или получен с помощью поиска по имени или адресу. Значения индекса для всех символов CodeView и COFF создаются при загрузке символов.

Size

Размер символа в байтах (или битах, если символ является элементом битового поля).

Это значение имеет смысл только в том случае, если символы модуля относятся к PDB-файлу; В противном случае это значение обычно равно нулю, и его следует игнорировать.

ModBase

Базовый адрес модуля, содержащего символ.

Flags

Этот элемент может иметь одно или несколько из следующих значений.

Значение Значение
SYMFLAG_CLR_TOKEN
0x00040000
Символ является токеном CLR.
SYMFLAG_CONSTANT
0x00000100
Символ является константой.
SYMFLAG_EXPORT
0x00000200
Символ из таблицы экспорта.
SYMFLAG_FORWARDER
0x00000400
Символом является сервер пересылки.
SYMFLAG_FRAMEREL
0x00000020
Смещения являются относительными для кадра.
SYMFLAG_FUNCTION
0x00000800
Символ является известной функцией.
SYMFLAG_ILREL
0x00010000
Адрес символа является смещением относительно начала промежуточного языкового блока. Это относится только к управляемому коду.
SYMFLAG_LOCAL
0x00000080
Символ является локальной переменной.
SYMFLAG_METADATA
0x00020000
Символ — это управляемые метаданные.
SYMFLAG_PARAMETER
0x00000040
Символ является параметром.
SYMFLAG_REGISTER
0x00000008
Символом является регистр. Используется элемент Register .
SYMFLAG_REGREL
0x00000010
Смещения являются относительными по регистру.
SYMFLAG_SLOT
0x00008000
Символ — это слот управляемого кода.
SYMFLAG_THUNK
0x00002000
Символом является ломка.
SYMFLAG_TLSREL
0x00004000
Символ представляет собой смещение в области данных TLS.
SYMFLAG_VALUEPRESENT
0x00000001
Используется элемент Value .
SYMFLAG_VIRTUAL
0x00001000
Символ — это виртуальный символ, созданный функцией SymAddSymbol .

Value

Значение константы.

Address

Виртуальный адрес начала символа.

Register

Регистр.

Scope

область DIA. Дополнительные сведения см. в разделе Пакет SDK для доступа к интерфейсу отладки в документации по Visual Studio. (Этот ресурс может быть недоступен на некоторых языках.

и страны.)

Tag

Классификация PDB. Эти значения определяются в Dbghelp.h в типе перечисления SymTagEnum .

NameLen

Длина имени в символах, не включая завершающий символ null.

MaxNameLen

Размер буфера имен в символах. Если этот элемент равен 0, элемент Name не используется.

Name[1]

Имя символа. Имя может быть необработано, если параметр SYMOPT_UNDNAME используется с функцией SymSetOptions .

Требования

Требование Значение
Заголовок dbghelp.h
Распространяемые компоненты DbgHelp.dll 5.1 или более поздней версии

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

SymEnumSymbolsProc

SymFromAddr

SymFromName

SymGetTypeFromName