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


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

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

Синтаксис

DWORD IMAGEAPI UnDecorateSymbolNameW(
  [in]  PCWSTR name,
  [out] PWSTR  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
Отключите расширение сигнатур для функций и указателей на функции.

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

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

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

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

Замечания

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

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

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

Примеры

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

Заметка

Заголовок dbghelp.h определяет UnDecorateSymbolName как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
целевая платформа Виндоус
заголовка dbghelp.h
библиотеки Dbghelp.lib
DLL Dbghelp.dll
распространяемый DbgHelp.dll 5.1 или более поздней версии

См. также

функций DbgHelp

SymSetOptions