// Token: 0x06000953 RID: 2387 RVA: 0x0002BB40 File Offset: 0x00029D40
        private static EseDatabaseReader BuildEseDatabaseReader(string serverName, Guid dbGuid, string dbName, string dbPath)
        {
            EseDatabaseReader       eseDatabaseReader       = new EseDatabaseReader(dbName, dbGuid);
            SafeBackupContextHandle safeBackupContextHandle = eseDatabaseReader;

            SafeBackupContextHandle.GetAndSetIntPtrInCER(serverName, dbName, null, ref safeBackupContextHandle);
            bool flag = false;

            try
            {
                JET_DBINFOMISC jet_DBINFOMISC;
                int            databaseInfo = CReplicaSeederInterop.GetDatabaseInfo(eseDatabaseReader.handle, dbPath, out jet_DBINFOMISC);
                if (databaseInfo != 0)
                {
                    throw new FailedToGetDatabaseInfo(databaseInfo);
                }
                eseDatabaseReader.m_pageSize = (long)jet_DBINFOMISC.cbPageSize;
                eseDatabaseReader.m_dbPath   = dbPath;
                if (jet_DBINFOMISC.cbPageSize != 4096 && jet_DBINFOMISC.cbPageSize != 8192 && jet_DBINFOMISC.cbPageSize != 32768)
                {
                    throw new UnExpectedPageSizeException(dbPath, (long)jet_DBINFOMISC.cbPageSize);
                }
                flag = true;
            }
            finally
            {
                if (!flag)
                {
                    eseDatabaseReader.ReleaseHandle();
                }
            }
            return(eseDatabaseReader);
        }
        // Token: 0x06001A2F RID: 6703 RVA: 0x0006DD74 File Offset: 0x0006BF74
        public static EseDatabaseBackupReader GetESEDatabaseBackupReader(string serverName, string dbName, Guid dbGuid, string transferAddress, string sourceFileToBackupFullPath, uint readHintSizeBytes)
        {
            bool   flag  = false;
            int    num   = 0;
            IntPtr value = new IntPtr(-1);
            EseDatabaseBackupReader eseDatabaseBackupReader = new EseDatabaseBackupReader(dbName, dbGuid);
            SafeBackupContextHandle safeBackupContextHandle = eseDatabaseBackupReader;
            EseDatabaseBackupReader result;

            try
            {
                EseDatabaseBackupReader.SetupNativeLogger();
                SafeBackupContextHandle.GetAndSetIntPtrInCER(serverName, dbName, transferAddress, ref safeBackupContextHandle);
                flag = true;
                RuntimeHelpers.PrepareConstrainedRegions();
                try
                {
                }
                finally
                {
                    num = CReplicaSeederInterop.OpenBackupFileHandle(eseDatabaseBackupReader.handle, sourceFileToBackupFullPath, readHintSizeBytes, out eseDatabaseBackupReader.m_backupFileHandle, out eseDatabaseBackupReader.m_sourceFileSizeBytes);
                }
                if (num != 0 || eseDatabaseBackupReader.m_backupFileHandle == IntPtr.Zero || eseDatabaseBackupReader.m_backupFileHandle == value)
                {
                    eseDatabaseBackupReader.Close();
                    throw new FailedToOpenBackupFileHandleException(dbName, serverName, num, SeedHelper.TranslateSeederErrorCode((long)num, serverName));
                }
                result = eseDatabaseBackupReader;
            }
            finally
            {
                if (!flag)
                {
                    EseDatabaseBackupReader.CleanupNativeLogger();
                }
            }
            return(result);
        }