This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here

Retrieves part or all of an undecorated name for a C++ decorated (linkage) name.


HRESULT get_undecoratedNameEx(   
   DWORD undecorateOptions,  
   BSTR* pRetval  


[in] Specifies a combination of flags that control what is returned. See the Remarks section for the specific values and what they do.

[out] Returns the undecorated name for a C++ decorated name.

Return Value

If successful, returns S_OK; otherwise, returns S_FALSE or an error code.


A return value of S_FALSE means the property is not available for the symbol.


The undecorateOptions can be a combination of the following flags.


The flag names are not defined in the DIA SDK, so you need to either add the declarations to your code or use the raw values.

Flag Value Description
UNDNAME_COMPLETE 0x0000 Enables full undecoration.
UNDNAME_NO_LEADING_UNDERSCORES 0x0001 Removes leading underscores from Microsoft extended keywords.
UNDNAME_NO_MS_KEYWORDS 0x0002 Disables expansion of Microsoft extended keywords.
UNDNAME_NO_FUNCTION_RETURNS 0x0004 Disables expansion of return type for primary declaration.
UNDNAME_NO_ALLOCATION_MODEL 0x0008 Disables expansion of the declaration model.
UNDNAME_NO_ALLOCATION_LANGUAGE 0x0010 Disables expansion of the declaration language specifier.
UNDNAME_NO_THISTYPE 0x0060 Disables all modifiers on the this type.
UNDNAME_NO_ACCESS_SPECIFIERS 0x0080 Disables expansion of access specifiers for members.
UNDNAME_NO_THROW_SIGNATURES 0x0100 Disables expansion of "throw-signatures" for functions and pointers to functions.
UNDNAME_NO_MEMBER_TYPE 0x0200 Disables expansion of static or virtual members.
UNDNAME_NO_RETURN_UDT_MODEL 0x0400 Disables expansion of the Microsoft model for UDT returns.
UNDNAME_32_BIT_DECODE 0x0800 Undecorates 32-bit decorated names.
UNDNAME_NAME_ONLY 0x1000 Gets only the name for primary declaration; returns just [scope::]name. Expands template params.
UNDNAME_TYPE_ONLY 0x2000 Input is just a type encoding; composes an abstract declarator.
UNDNAME_HAVE_PARAMETERS 0x4000 The real template parameters are available.
UNDNAME_NO_ECSU 0x8000 Suppresses enum/class/struct/union.
UNDNAME_NO_IDENT_CHAR_CHECK 0x10000 Suppresses check for valid identifier characters.
UNDNAME_NO_PTR64 0x20000 Does not include ptr64 in output.

See Also