/// <summary>
        /// Reads  sctructure form given handle if possible
        /// </summary>
        /// <param name="pObjectInfo">object info struct</param>
        /// <param name="handle">context handle</param>
        /// <param name="address">calculate rva address</param>
        /// <param name="baseOfView">base of mapped minidump file</param>
        /// <returns>Information structure or default value if no info detected</returns>
        public static unsafe MINIDUMP_HANDLE_OBJECT_INFORMATION DealWithHandleInfo(MINIDUMP_HANDLE_OBJECT_INFORMATION pObjectInfo, 
            MiniDumpHandle handle, IntPtr address, IntPtr baseOfView)
        {
            switch (pObjectInfo.InfoType)
            {
                case MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE.MiniHandleObjectInformationNone:
                    SetMiniHandleObjectInformationNone(handle, address); break;
                case MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE.MiniThreadInformation1:
                    SetMiniThreadInformation1(handle, address); break;
                case MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE.MiniMutantInformation1:
                    SetMiniMutantInformation1(handle, address); break;
                case MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE.MiniMutantInformation2:
                    SetMiniMutantInformation2(handle, address); break;
                case MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE.MiniProcessInformation1:
                    SetMiniProcessInformation1(handle, address); break;
                case MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE.MiniProcessInformation2:
                    SetMiniProcessInformation2(handle, address); break;
                case MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE.MiniEventInformation1:
                    SetMiniEventInformation1(handle, address); break;
                case MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE.MiniSectionInformation1:
                    SetMiniSectionInformation1(handle, address); break;
                case MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE.MiniHandleObjectInformationTypeMax: SetMiniHandleObjectInformationTypeMax(handle, address); break;
                default:
                    break;
            }

            if (pObjectInfo.NextInfoRva == 0)
            {
                return default(MINIDUMP_HANDLE_OBJECT_INFORMATION);
            }
            else
            {
                pObjectInfo = SafeMemoryMappedViewStreamHandler
                    .ReadStruct<MINIDUMP_HANDLE_OBJECT_INFORMATION>(IntPtr.Add(baseOfView, (int)pObjectInfo.NextInfoRva));
            }

            return pObjectInfo;
        }
 public MiniDumpHandleInfo(MINIDUMP_HANDLE_OBJECT_INFORMATION info)
 {
     this.NextInfoRva = info.NextInfoRva;
     this.SizeOfInfo = info.SizeOfInfo;
     this.InfoType = info.InfoType;
 }
 internal void AddInfo(MINIDUMP_HANDLE_OBJECT_INFORMATION info, string infoName)
 {
     HandleInfo = new MiniDumpHandleInfo(info);
 }