mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 12:30:32 +00:00
39 lines
1.1 KiB
C#
39 lines
1.1 KiB
C#
using System;
|
|
|
|
namespace Cosmos.HAL.BlockDevice
|
|
{
|
|
public class Partition : BlockDevice
|
|
{
|
|
private readonly BlockDevice mHost;
|
|
private readonly UInt64 mStartingSector;
|
|
|
|
public Partition(BlockDevice aHost, UInt64 aStartingSector, UInt64 aSectorCount)
|
|
{
|
|
mHost = aHost;
|
|
mStartingSector = aStartingSector;
|
|
mBlockCount = aSectorCount;
|
|
mBlockSize = aHost.BlockSize;
|
|
}
|
|
|
|
public override void ReadBlock(UInt64 aBlockNo, UInt64 aBlockCount, ref byte[] aData)
|
|
{
|
|
CheckDataSize(aData, aBlockCount);
|
|
UInt64 xHostBlockNo = mStartingSector + aBlockNo;
|
|
CheckBlockNo(xHostBlockNo, aBlockCount);
|
|
mHost.ReadBlock(xHostBlockNo, aBlockCount, ref aData);
|
|
}
|
|
|
|
public override void WriteBlock(UInt64 aBlockNo, UInt64 aBlockCount,ref byte[] aData)
|
|
{
|
|
CheckDataSize(aData, aBlockCount);
|
|
UInt64 xHostBlockNo = mStartingSector + aBlockNo;
|
|
CheckBlockNo(xHostBlockNo, aBlockCount);
|
|
mHost.WriteBlock(xHostBlockNo, aBlockCount, ref aData);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return "Partition";
|
|
}
|
|
}
|
|
}
|