private LfsRestartPage ReadRestartPage() { byte[] firstPageBytes = ReadData(0, Volume.BytesPerSector); uint systemPageSize = LfsRestartPage.GetSystemPageSize(firstPageBytes, 0); int bytesToRead = (int)systemPageSize - firstPageBytes.Length; if (bytesToRead > 0) { byte[] temp = ReadData((ulong)firstPageBytes.Length, bytesToRead); firstPageBytes = ByteUtils.Concatenate(firstPageBytes, temp); } MultiSectorHelper.RevertUsaProtection(firstPageBytes, 0); LfsRestartPage firstRestartPage = new LfsRestartPage(firstPageBytes, 0); byte[] secondPageBytes = ReadData(systemPageSize, (int)systemPageSize); MultiSectorHelper.RevertUsaProtection(secondPageBytes, 0); LfsRestartPage secondRestartPage = new LfsRestartPage(secondPageBytes, 0); if (secondRestartPage.RestartArea.CurrentLsn > firstRestartPage.RestartArea.CurrentLsn) { m_restartPage = secondRestartPage; m_isFirstRestartPageTurn = true; } else { m_restartPage = firstRestartPage; } return(m_restartPage); }
private LfsRestartPage ReadRestartPage() { byte[] pageBytes = ReadData(0, Volume.BytesPerSector); uint systemPageSize = LfsRestartPage.GetSystemPageSize(pageBytes, 0); int bytesToRead = (int)systemPageSize - pageBytes.Length; if (bytesToRead > 0) { byte[] temp = ReadData((ulong)pageBytes.Length, bytesToRead); pageBytes = ByteUtils.Concatenate(pageBytes, temp); } MultiSectorHelper.RevertUsaProtection(pageBytes, 0); m_restartPage = new LfsRestartPage(pageBytes, 0); return(m_restartPage); }