Handle raw dvd sectors for iso9660

This commit is contained in:
Rebecca Wallander
2026-04-11 13:37:24 +02:00
parent 70f0d8c0ff
commit 65988263cf
2 changed files with 28 additions and 2 deletions

View File

@@ -434,4 +434,14 @@ public sealed class Sector
return ErrorNumber.NoError;
}
public static byte[] GetUserData(byte[] data)
{
if(data.Length != 2064) return data;
byte[] sector = new byte[2048];
Array.Copy(data, 12, sector, 0, 2048);
return sector;
}
}

View File

@@ -135,7 +135,14 @@ public sealed partial class ISO9660
if(_blockSize == 2048)
{
buffer = Sector.GetUserData(data, interleaved, fileNumber);
if(data.Length == 2064)
{
buffer = Decoders.DVD.Sector.GetUserData(data);
}
else
{
buffer = Sector.GetUserData(data, interleaved, fileNumber);
}
return ErrorNumber.NoError;
}
@@ -232,7 +239,16 @@ public sealed partial class ISO9660
}
}
byte[] sectorData = Sector.GetUserData(data, interleaved, fileNumber);
byte[] sectorData;
if(data.Length == 2064)
{
sectorData = Decoders.DVD.Sector.GetUserData(data);
}
else
{
sectorData = Sector.GetUserData(data, interleaved, fileNumber);
}
ms.Write(sectorData, 0, sectorData.Length);
}