Я новичок в C# и в настоящее время использую COSMOS для создания простой файловой системы для своего класса ОС. В настоящее время я пытаюсь реализовать функцию «переформатирования», которая, когда слово «переформатировать» вводится в консоль, ОС (эмулируемая через QEMU) разбивает диск на разделы. В настоящее время это мой код:
public static void console()
{
while (true)
{
Console.WriteLine("Console: ");
String input = Console.ReadLine();
if (input == "exit")
{
Cosmos.Sys.Deboot.ShutDown();
}
else if (input == "cpumem")
{
Console.WriteLine(Cosmos.Kernel.CPU.AmountOfMemory.ToString());
}
else if (input == "restart")
{
Cosmos.Sys.Deboot.Reboot();
}
else if (input == "devices")
{
var devices = Cosmos.Sys.FileSystem.Disk.Devices.ToArray();
}
else if (input == "reformat")
{
try
{
Partition part = null;
for (int j = 0; j < Cosmos.Hardware.BlockDevice.Devices.Count; j++)
{
if (Cosmos.Hardware.BlockDevice.Devices[j] is Partition)
{
part = (Partition)Cosmos.Hardware.BlockDevice.Devices[j];
}
}
var fs = new Cosmos.Sys.FileSystem.FAT32.FAT32(part);
uint cluster = 100;
fs.Format("newCluster", cluster);
}
catch
{
//Do Something warn user.
}
}
}
}
Наиболее важным является этот бит:
else if (input == "reformat")
{
try
{
Partition part = null;
for (int j = 0; j < Cosmos.Hardware.BlockDevice.Devices.Count; j++)
{
if (Cosmos.Hardware.BlockDevice.Devices[j] is Partition)
{
part = (Partition)Cosmos.Hardware.BlockDevice.Devices[j];
}
}
var fs = new Cosmos.Sys.FileSystem.FAT32.FAT32(part);
uint cluster = 100;
fs.Format("newCluster", cluster);
}
catch
{
//Do Something warn user.
}
}
Что аналогично тому, что находится здесь: http://cosmos-tutorials.webs.com/atafat.html
Однако, когда я запускаю его, я получаю эту ошибку:
Я считаю, что это потому, что мне не хватает этой строки:
Cosmos.System.Filesystem.FileSystem.AddMapping("C", FATFS);
FATFileList = FATFS.GetRoot();
Находится по ссылке выше. Есть ли другой способ сделать карту? Или я что-то совсем упускаю? Документация COSMOS на самом деле мало что говорит, исходный код, честно говоря, сбивает с толку новичка вроде меня, поскольку в нем нет никаких комментариев о том, как работают функции или что они делают. Я использую более старую версию COSMOS (Milestone 4), так как она единственная работает с Visual Studio C# 2008. Более новые версии работают только в Visual Studio C# 2010.