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);
        }
Esempio n. 2
0
        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);
        }