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