我是C#的新手,目前正在使用COSMOS爲我的操作系統類創建一個簡單的FileSystem。目前,我試圖實現一個「重新格式化」功能,當「控制檯重新格式化」一詞輸入到控制檯中時,操作系統(通過QEMU模擬)對磁盤進行分區。目前,這是我的代碼:Cosmos自定義操作系統,addmapping?
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中運行。
這是不對的。你說VMWare和你在QEMU中模擬它: - |。 –
你對對不起 – Erasmus