public override int GetNestedHierarchy(UInt32 itemId, ref Guid iidHierarchyNested, out IntPtr ppHierarchyNested, out uint pItemId)
{
pItemId = VSConstants.VSITEMID_ROOT;
ppHierarchyNested = IntPtr.Zero;
if(this.FirstChild != null)
{
for(HierarchyNode n = this.FirstChild; n != null; n = n.NextSibling)
{
NestedProjectNode p = n as NestedProjectNode;
if(p != null && p.Id == itemId)
{
if(p.NestedHierarchy != null)
{
IntPtr iunknownPtr = IntPtr.Zero;
int returnValue = VSConstants.S_OK;
try
{
iunknownPtr = Marshal.GetIUnknownForObject(p.NestedHierarchy);
Marshal.QueryInterface(iunknownPtr, ref iidHierarchyNested, out ppHierarchyNested);
}
catch(COMException e)
{
returnValue = e.ErrorCode;
}
finally
{
if(iunknownPtr != IntPtr.Zero)
{
Marshal.Release(iunknownPtr);
}
}
return returnValue;
}
break;
}
}
}
return VSConstants.E_FAIL;
}