0

私は C# が初めてで、現在 COSMOS を使用して OS クラス用の単純なファイルシステムを作成しています。現在、「再フォーマット」という単語がコンソールに入力されると、OS(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 のドキュメンテーションは実際にはあまり多くを語っていません。ソース コードは、関数がどのように機能するか、または何をするかについてのコメントがまったくないため、私のような初心者にとっては正直わかりにくいものです。Visual Studio C# 2008 で動作する唯一の COSMOS (Milestone 4) の古いバージョンを使用しています。新しいバージョンは Visual Studio C# 2010 でのみ動作します。

4

1 に答える 1