public DbRecord(string name, byte[] signature, VirusTypes type = VirusTypes.Trojan) { this.Name = name; this.Signature = signature; this.Type = type; this.Summ = 0; foreach (byte i in signature) { this.Summ += i; } }
/// <summary> /// Загрузить БД из файла /// </summary> /// <param name="PathToFile"></param> private static void LoadDbFromFile(string PathToFile) { IsolatedStorageFileStream DbFile = DbStorage.OpenFile(PathToFile, FileMode.Open); BinaryReader reader = new BinaryReader(DbFile); byte[] signature; string name; int signatureLen = 0; VirusTypes type = 0; while (reader.BaseStream.Position < reader.BaseStream.Length) { { type = (VirusTypes)DbFile.ReadByte(); signatureLen = reader.ReadByte(); if (signatureLen == -1 || signatureLen == 0) { break; } } { signature = new byte[signatureLen]; DbFile.Read(signature, 0, signatureLen); } { name = reader.ReadString(); } DbSync.WaitOne(); { Array.Resize(ref DbTable, DbTable.Length + 1); DbTable[DbTable.Length - 1] = new DbRecord( name, signature, type ); Connectors.Logger.WriteLine($"[DbLoaderFromFile] Загружен вирус -> {name}, тип {type}, длина сигнатуры {signatureLen}", LogLevel.OK); } DbSync.ReleaseMutex(); } DbFile.Close(); }