public ACI0(Stream Stream, int Offset) { Stream.Seek(Offset, SeekOrigin.Begin); BinaryReader Reader = new BinaryReader(Stream); if (Reader.ReadInt32() != ACI0Magic) { throw new InvalidNpdmException("ACI0 Stream doesn't contain ACI0 section!"); } Stream.Seek(0xc, SeekOrigin.Current); TitleId = Reader.ReadInt64(); //Reserved. Stream.Seek(8, SeekOrigin.Current); int FsAccessHeaderOffset = Reader.ReadInt32(); int FsAccessHeaderSize = Reader.ReadInt32(); int ServiceAccessControlOffset = Reader.ReadInt32(); int ServiceAccessControlSize = Reader.ReadInt32(); int KernelAccessControlOffset = Reader.ReadInt32(); int KernelAccessControlSize = Reader.ReadInt32(); FsAccessHeader FsAccessHeader = new FsAccessHeader(Stream, Offset + FsAccessHeaderOffset, FsAccessHeaderSize); FsVersion = FsAccessHeader.Version; FsPermissionsBitmask = FsAccessHeader.PermissionsBitmask; ServiceAccessControl = new ServiceAccessControl(Stream, Offset + ServiceAccessControlOffset, ServiceAccessControlSize); KernelAccessControl = new KernelAccessControl(Stream, Offset + KernelAccessControlOffset, KernelAccessControlSize); }
public Aci0(Stream stream, int offset) { stream.Seek(offset, SeekOrigin.Begin); BinaryReader reader = new BinaryReader(stream); if (reader.ReadInt32() != Aci0Magic) { throw new InvalidNpdmException("ACI0 Stream doesn't contain ACI0 section!"); } stream.Seek(0xc, SeekOrigin.Current); TitleId = reader.ReadInt64(); //Reserved. stream.Seek(8, SeekOrigin.Current); int fsAccessHeaderOffset = reader.ReadInt32(); int fsAccessHeaderSize = reader.ReadInt32(); int serviceAccessControlOffset = reader.ReadInt32(); int serviceAccessControlSize = reader.ReadInt32(); int kernelAccessControlOffset = reader.ReadInt32(); int kernelAccessControlSize = reader.ReadInt32(); FsAccessHeader fsAccessHeader = new FsAccessHeader(stream, offset + fsAccessHeaderOffset, fsAccessHeaderSize); FsVersion = fsAccessHeader.Version; FsPermissionsBitmask = fsAccessHeader.PermissionsBitmask; ServiceAccessControl = new ServiceAccessControl(stream, offset + serviceAccessControlOffset, serviceAccessControlSize); KernelAccessControl = new KernelAccessControl(stream, offset + kernelAccessControlOffset, kernelAccessControlSize); }