public byte[] GetStreamData(RootStream rs) { MemoryStream m = new MemoryStream(); foreach (uint page in rs.pages) { CopyPage(page, raw, m); } byte[] data = new byte[rs.size]; m.Seek(0, 0); m.Read(data, 0, (int)rs.size); return(data); }
public void ReadRootStreams() { MemoryStream m = new MemoryStream(); foreach (uint page in adIndexPages) { CopyPage(page, raw, m); } m.Seek(0, 0); uint count = StreamHelper.ReadU32(m); rootStreams = new RootStream[count]; for (int i = 0; i < count; i++) { rootStreams[i] = new RootStream(); rootStreams[i].size = StreamHelper.ReadU32(m); if (rootStreams[i].size == 0xFFFFFFFF) { rootStreams[i].size = 0; } } for (int i = 0; i < count; i++) { uint subcount = rootStreams[i].size / dPageBytes; if ((rootStreams[i].size % dPageBytes) != 0) { subcount++; } rootStreams[i].pages = new uint[subcount]; for (int j = 0; j < subcount; j++) { rootStreams[i].pages[j] = StreamHelper.ReadU32(m); } } rootStreams[0].name1 = "Old Directory"; rootStreams[1].name1 = "TOC Stream"; rootStreams[2].name1 = "TPI Stream"; rootStreams[3].name1 = "DBI Stream"; }