UnDecorateSymbolName 函式反修飾指定已修飾的 C++ 符號名。
語法,參數,Flags,返回值,提醒,要求,
語法
DWORD WINAPI UnDecorateSymbolName( _In_ PCTSTR DecoratedName, _Out_ PTSTR UnDecoratedName, _In_ DWORD UndecoratedLength, _In_ DWORD Flags );
參數
DecoratedName [輸入]
已修飾的 C++ 符號名。此名稱能以始終為問號 (?) 的首字元鑑別。
UnDecoratedName [輸出]
指向字元串緩衝區的指針,該緩衝區接收未修飾的名字。
UndecoratedLength [輸入]
UnDecoratedName 緩衝區的大小,為字元數。
Flags [輸入]
用於反修飾已修飾名稱的方式的選項。此參數能為零或更多個下列值。
Flags
值 | 含義 |
UNDNAME_32_BIT_DECODE 0x0800 | 反修飾 32 位已修飾名。 |
UNDNAME_COMPLETE0x0000 | 啟用完全的反修飾。 |
UNDNAME_NAME_ONLY 0x1000 | 只反修飾初等聲明的名稱。返回 [作用域::]名稱 。不展開模板形參。 |
UNDNAME_NO_ACCESS_SPECIFIERS0x0080 | 禁用成員的訪問指定符的展開。 |
UNDNAME_NO_ALLOCATION_LANGUAGE0x0010 | 禁用聲明語言說明符的展開。 |
UNDNAME_NO_ALLOCATION_MODEL 0x0008 | 禁用聲明模型的展開。 |
UNDNAME_NO_ARGUMENTS0x2000 | 不反修飾函式參數。 |
UNDNAME_NO_CV_THISTYPE0x0040 | 禁用初等聲明的 this 類型上的 CodeView 修飾符的展開。 |
UNDNAME_NO_FUNCTION_RETURNS0x0004 | 禁用初等聲明的返回類型展開。 |
UNDNAME_NO_LEADING_UNDERSCORES0x0001 | 從 Microsoft 關鍵字中移除前導下劃線。 |
UNDNAME_NO_MEMBER_TYPE0x0200 | 禁用成員的 static 或 virtual 屬性的展開。 |
UNDNAME_NO_MS_KEYWORDS0x0002 | 禁用 Microsoft 關鍵字的展開。 |
UNDNAME_NO_MS_THISTYPE0x0020 | 禁用初等聲明的 this 類型上的 Microsoft 關鍵字的展開。 |
UNDNAME_NO_RETURN_UDT_MODEL0x0400 | 禁用用戶定義類型返回的 Microsoft 模型的展開。 |
UNDNAME_NO_SPECIAL_SYMS0x4000 | 不反修飾特殊名稱,如 vtable 、 vcall 、 vector 和 metatype 等。 |
UNDNAME_NO_THISTYPE0x0060 | 禁用 this 類型上的所有修飾符。 |
UNDNAME_NO_THROW_SIGNATURES0x0100 | 禁用函式和函式指針的 throw 簽名的展開。 |
返回值
若函式成功,則返回 UnDecoratedName 緩衝區中的字元數,不包括 NULL 終止符。
若函式失敗,則返回值為零。欲取得額外的錯誤信息,需調用 GetLastError 。
若函式失敗且返回零,則 UnDecoratedName 緩衝區的內容不確定。
提醒
為使用未修飾的符號,請用 SYMOPT_UNDNAME 選項調用 SymSetOptions函式。
所有DbgHelp 函式,譬如此函式,都是單執行緒的。從而從多於一個執行緒調用此函式將很可能導致不期待行為或記憶體錯誤。為避免這種事,你必須同步從多於一個執行緒到此函式的調用。
欲調用此函式的 Unicode 版本,需定義 DBGHELP_TRANSLATE_TCHAR 。
要求
可再發行版 | DbgHelp.dll 5.1 或更新的版本 |
頭檔案 | Dbghelp.h |
庫 | Dbghelp.lib |
DLL | Dbghelp.dll |
Unicode 及 ANSI 名 | UnDecorateSymbolNameW (Unicode) 及 UnDecorateSymbolName (ANSI) |