CSPspEmu.Hle.Loader.ElfLoader.SectionHeaderMemoryStream C# (CSharp) Метод

SectionHeaderMemoryStream() публичный Метод

public SectionHeaderMemoryStream ( Elf SectionHeader ) : Stream
SectionHeader Elf
Результат Stream
        public Stream SectionHeaderMemoryStream(Elf.SectionHeader SectionHeader)
        {
            return this.MemoryStream.SliceWithLength(BaseAddress + SectionHeader.Address, SectionHeader.Size);
        }

Usage Example

Пример #1
0
        protected void LoadModuleInfo()
        {
            var    sectionHeaderName = ".rodata.sceModuleInfo";
            var    programHeader     = ElfLoader.ProgramHeaders.FirstOrDefault();
            Stream stream;

            if (ElfLoader.SectionHeadersByName.ContainsKey(sectionHeaderName))
            {
                var sectionHeader = ElfLoader.SectionHeadersByName[".rodata.sceModuleInfo"];
                stream = ElfLoader.SectionHeaderMemoryStream(sectionHeader);
                Logger.Info("LoadModuleInfo: .rodata.sceModuleInfo 0x{0:X8}[{1}]",
                            BaseAddress + sectionHeader.Address, sectionHeader.Size);
            }
            else
            {
                var moduleInfoAddress =
                    (uint)(BaseAddress + (programHeader.PsysicalAddress & 0x7FFFFFFFL) - programHeader.Offset);
                var size = Marshal.SizeOf(typeof(ElfPsp.ModuleInfo));
                stream = ElfLoader.MemoryStream.SliceWithLength(moduleInfoAddress, size);
                Logger.Info("LoadModuleInfo: 0x{0:X8}[{1}]", moduleInfoAddress, size);
            }

            HleModuleGuest.ModuleInfo = stream.ReadStruct <ElfPsp.ModuleInfo>();
            Logger.Info("{0}", HleModuleGuest.ModuleInfo.ToStringDefault());
        }