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
仅取消修饰主声明的名称。 返回 [scope::]name。 展开模板参数。
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
从 Microsoft 关键字中删除前导下划线。
UNDNAME_NO_MEMBER_TYPE
0x0200
禁用成员的静态或虚拟属性的扩展。
UNDNAME_NO_MS_KEYWORDS
0x0002
禁用 Microsoft 关键字的扩展。
UNDNAME_NO_MS_THISTYPE
0x0020
对主声明禁用 类型的 Microsoft 关键字扩展。
UNDNAME_NO_RETURN_UDT_MODEL
0x0400
对用户定义类型返回禁用 Microsoft 模型的扩展。
UNDNAME_NO_SPECIAL_SYMS
0x4000
请勿取消修饰特殊名称,例如 vtable、vcall、vector、metatype 等。
UNDNAME_NO_THISTYPE
0x0060
禁用 类型上的所有修饰符。
UNDNAME_NO_THROW_SIGNATURES
0x0100
禁用扩展函数的引发签名和指向函数的指针。

返回值

如果函数成功,则返回值为 UnDecoratedName 缓冲区中的字符数,不包括 NULL 终止符。

如果函数失败,则返回值为零。 若要检索扩展的错误信息,请调用 GetLastError

如果函数失败并返回零,则 UnDecoratedName 缓冲区的内容不确定。

备注

若要使用未修饰的符号,请使用 SYMOPT_UNDNAME 选项调用 SymSetOptions 函数。

所有 DbgHelp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。

若要调用此函数的 Unicode 版本,请定义 DBGHELP_TRANSLATE_TCHAR

示例

有关示例,请参阅 检索未修饰的符号名称

要求

   
目标平台 Windows
标头 dbghelp.h
Library Dbghelp.lib
DLL Dbghelp.dll
可再发行组件 DbgHelp.dll 5.1 或更高版本

另请参阅

DbgHelp 函数

SymSetOptions