IVsHierarchy.GetCanonicalName(UInt32, String) Method


Returns a unique, string name for an item in the hierarchy. Used for workspace persistence, such as remembering window positions.

 int GetCanonicalName(System::UInt32 itemid, [Runtime::InteropServices::Out] System::String ^ % pbstrName);
int GetCanonicalName(unsigned int itemid, [Runtime::InteropServices::Out] std::wstring const & & pbstrName);
public int GetCanonicalName (uint itemid, out string pbstrName);
abstract member GetCanonicalName : uint32 * string -> int
Public Function GetCanonicalName (itemid As UInteger, ByRef pbstrName As String) As Integer



[in] Identifier of the hierarchy item. For a list of itemid values, see VSITEMID.


[out] Pointer to the canonical name of the hierarchy item.



If the method succeeds, it returns S_OK. If it fails, it returns an error code.


A hierarchy is an object that contains many items, but does not necessarily contain an object for each of those items. Thus, to get information about any of the hierarchy items, you need to query the hierarchy object for that information. The item identifier (itemid) is used to identify the requested item in that query. Using the GetCanonicalName method, you pass in the itemid and the canonical name is returned. The canonical name is a unique name used to distinguish a particular item in the hierarchy from every other item in the hierarchy.

Canonical names do not change between sessions of the environment, but item identifiers do. Use this method to manage workspace persistence, such as remembering window positions.


The environment typically calls this method, but it can be called by anyone with a hierarchy object and a particular item identifier.

Use ParseCanonicalName to determine an item identifier (item ID), given the canonical name for an item.

COM Signature

From vsshell.idl:

HRESULT IVsHierarchy::GetCanonicalName(  
   [in] VSITEMID itemid,  
   [out] BSTR *pbstrName  

Applies to