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
仅取消对主声明的名称取消编码。 返回 [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

例子

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

注意

dbghelp.h 标头将 UnDecorateSymbolName 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
目标平台 窗户
标头 dbghelp.h
Dbghelp.lib
DLL Dbghelp.dll
可再发行组件 DbgHelp.dll 5.1 或更高版本

另请参阅

DbgHelp 函数

SymSetOptions