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


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

Отменяет определение указанного декорированного имени символа C++.

Синтаксис

DWORD IMAGEAPI UnDecorateSymbolName(
  [in]  PCSTR name,
  [out] PSTR  outputString,
  [in]  DWORD maxStringLength,
  [in]  DWORD flags
);

Параметры

[in] name

Декорированное имя символа C++. Это имя можно определить по первому символу имени, которое всегда является вопросительным знаком (?).

[out] outputString

Указатель на строковый буфер, получающий неоконсервированное имя.

[in] maxStringLength

Размер буфера UnDecoratedName в символах.

[in] flags

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

Значение Значение
UNDNAME_32_BIT_DECODE
0x0800
Отмена оформления 32-разрядных имен.
UNDNAME_COMPLETE
0x0000
Включите полную отмену разврата.
UNDNAME_NAME_ONLY
0x1000
Отмените удаление только имени для основного объявления. Возвращает [область::]имя. Выполняет развертывание параметров шаблона.
UNDNAME_NO_ACCESS_SPECIFIERS
0x0080
Отключите расширение описателей доступа для членов.
UNDNAME_NO_ALLOCATION_LANGUAGE
0x0010
Отключите расширение описателя языка объявления.
UNDNAME_NO_ALLOCATION_MODEL
0x0008
Отключите расширение модели объявления.
UNDNAME_NO_ARGUMENTS
0x2000
Не отменяйте отмену определения аргументов функции.
UNDNAME_NO_CV_THISTYPE
0x0040
Отключите расширение модификаторов CodeView для этого типа для основного объявления.
UNDNAME_NO_FUNCTION_RETURNS
0x0004
Отключите расширение типов возвращаемых значений для первичных объявлений.
UNDNAME_NO_LEADING_UNDERSCORES
0x0001
Удалите символы подчеркивания в начале из ключевых слов Майкрософт.
UNDNAME_NO_MEMBER_TYPE
0x0200
Отключите расширение статического или виртуального атрибута членов.
UNDNAME_NO_MS_KEYWORDS
0x0002
Отключите расширение ключевых слов Майкрософт.
UNDNAME_NO_MS_THISTYPE
0x0020
Отключите расширение ключевых слов Майкрософт для этого типа для основного объявления.
UNDNAME_NO_RETURN_UDT_MODEL
0x0400
Отключите расширение модели Майкрософт для возвращаемых пользователем типов.
UNDNAME_NO_SPECIAL_SYMS
0x4000
Не отменяйте специальные имена, такие как vtable, vcall, vector, метатип и т. д.
UNDNAME_NO_THISTYPE
0x0060
Отключите все модификаторы для этого типа.
UNDNAME_NO_THROW_SIGNATURES
0x0100
Отключите расширение сигнатур throw для функций и указателей на функции.

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

Если функция выполнена успешно, возвращаемое значение — это количество символов в буфере UnDecoratedName , не включая признак конца NULL.

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

Если функция завершается сбоем и возвращает ноль, содержимое буфера UnDecoratedName не определено.

Комментарии

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

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

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

Примеры

Пример см. в разделе Получение имен неоконтированных символов.

Требования

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

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

Функции DbgHelp

SymSetOptions