private void Init()
{
lock (this) {
SetDataAreaSize(DataAreaOffset);
using (var stream = new MemoryStream((int) BinAreaOffset)) {
using (BinaryWriter writer = new BinaryWriter(stream, Encoding.Unicode)) {
// The file MAGIC
writer.Write(Magic); // 0
// The file version
writer.Write(1); // 4
// The number of areas (chunks) input the file (currently unused)
writer.Write(-1L); // 8
// File open/close status byte
writer.Write((byte) 0); // 16
writer.Flush();
byte[] buffer = new byte[(int) DataAreaOffset];
byte[] temp = stream.ToArray();
Array.Copy(temp, 0, buffer, 0, temp.Length);
for (int i = (int) BinAreaOffset; i < (int) DataAreaOffset; ++i) {
buffer[i] = 255;
}
Write(0, buffer, 0, buffer.Length);
}
}
}
}