コード例 #1
0
ファイル: HiiPackage.cs プロジェクト: lbulej/fork-IfrViewer
        public HiiPackageForm(IfrRawDataBlock raw) : base(raw)
        {
            data_payload = new IfrRawDataBlock(data);
            data_payload.IncreaseOffset(_Header.GetPhysSize());

            // Parse all IFR opcodes..
            uint offset = 0;

            ParseIfrScope(null, ref offset);
        }
コード例 #2
0
ファイル: HiiPackage.cs プロジェクト: lbulej/fork-IfrViewer
        public HiiPackageString(IfrRawDataBlock raw) : base(raw)
        {
            data_payload = new IfrRawDataBlock(data);
            data_payload.IncreaseOffset(_Header.GetPhysSize());

            _Payload.Language = data_payload.CopyOfAsciiNullTerminatedString;

            // Parse all string information block types..
            uint offset = (uint)_Payload.Language.Length + 1;

            while (offset < data_payload.Length)
            {
                IfrRawDataBlock      raw_data  = new IfrRawDataBlock(data_payload.Bytes, data_payload.Offset + offset, data_payload.Length - offset);
                EFI_HII_STRING_BLOCK block_hdr = raw_data.ToIfrType <EFI_HII_STRING_BLOCK>();
                HPKElement           hpk_element;

                switch (block_hdr.BlockType)
                {
                case EFI_HII_SIBT_e.EFI_HII_SIBT_END: hpk_element = new HiiSibtBlockNoPayload <EFI_HII_STRING_BLOCK>(raw_data); break;

                /*case EFI_HII_SIBT_e.EFI_HII_SIBT_STRING_SCSU:
                 * case EFI_HII_SIBT_e.EFI_HII_SIBT_STRING_SCSU_FONT:
                 * case EFI_HII_SIBT_e.EFI_HII_SIBT_STRINGS_SCSU:
                 * case EFI_HII_SIBT_e.EFI_HII_SIBT_STRINGS_SCSU_FONT:*/
                case EFI_HII_SIBT_e.EFI_HII_SIBT_STRING_UCS2: hpk_element = new HiiSibtBlockStringUcs2(raw_data); break;

                /*case EFI_HII_SIBT_e.EFI_HII_SIBT_STRING_UCS2_FONT:
                 * case EFI_HII_SIBT_e.EFI_HII_SIBT_STRINGS_UCS2:
                 * case EFI_HII_SIBT_e.EFI_HII_SIBT_STRINGS_UCS2_FONT:
                 * case EFI_HII_SIBT_e.EFI_HII_SIBT_DUPLICATE:*/
                case EFI_HII_SIBT_e.EFI_HII_SIBT_SKIP2: hpk_element = new HiiSibtBlockNoPayload <EFI_HII_SIBT_SKIP2_BLOCK>(raw_data); break;

                case EFI_HII_SIBT_e.EFI_HII_SIBT_SKIP1: hpk_element = new HiiSibtBlockNoPayload <EFI_HII_SIBT_SKIP1_BLOCK>(raw_data); break;

                case EFI_HII_SIBT_e.EFI_HII_SIBT_EXT1: hpk_element = new HiiSibtBlockExt <EFI_HII_SIBT_EXT1_BLOCK>(raw_data); break;

                case EFI_HII_SIBT_e.EFI_HII_SIBT_EXT2: hpk_element = new HiiSibtBlockExt <EFI_HII_SIBT_EXT2_BLOCK>(raw_data); break;

                case EFI_HII_SIBT_e.EFI_HII_SIBT_EXT4: hpk_element = new HiiSibtBlockExt <EFI_HII_SIBT_EXT4_BLOCK>(raw_data); break;

                /*case EFI_HII_SIBT_e.EFI_HII_SIBT_FONT:*/
                default:
                    //raw_data.GenerateAndLogDump(ifr_hdr.OpCode.ToString());
                    LogMessage(LogSeverity.UNIMPLEMENTED, block_hdr.BlockType.ToString());
                    LogMessage(LogSeverity.ERROR, "Parsing aborted due to unimplemented type!");
                    return;
                }
                Childs.Add(hpk_element);

                offset += hpk_element.PhysicalSize;
            }
        }