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); }
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; } }