public IEnumerable<long> GetAllAreas()
{
var list = new List<long>();
long endOfDataArea = DataAreaEndOffset;
long[] header = new long[2];
// The first header
long offset = DataAreaOffset;
while (offset < endOfDataArea) {
ReadAreaHeader(offset, header);
long areaSize = (header[0] & ActiveFlag);
if ((header[0] & DeletedFlag) == 0)
list.Add(offset);
offset += areaSize;
}
return list;
}