コード例 #1
0
ファイル: FFU.cs プロジェクト: mteletin/WPinternals
        internal string GetOSVersion()
        {
            byte[]       efiesp = GetPartition("EFIESP");
            MemoryStream s      = new MemoryStream(efiesp);

            DiscUtils.Fat.FatFileSystem fs = new DiscUtils.Fat.FatFileSystem(s);
            Stream       mss  = fs.OpenFile(@"Windows\System32\Boot\mobilestartup.efi", FileMode.Open, FileAccess.Read);
            MemoryStream msms = new MemoryStream();

            mss.CopyTo(msms);
            byte[]  mobilestartup = msms.ToArray();
            Version OSVersion     = PE.GetProductVersion(mobilestartup);

            s.Close();

            return(OSVersion.ToString());
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: brandonlw/vicar
        private static void _DoMassStorageDemo(VicarDevice vicar)
        {
            //Create an instance of a FAT32 file system image
              var stream = new DiscUtilsStream(new MassStorageHelper(vicar));
              var fat = new DiscUtils.Fat.FatFileSystem(stream);
              var currentDir = "\\";
              bool running = true;
              Console.WriteLine("Type 'help' for options or 'quit' to quit.");
              while (running)
              {
            Console.Write(currentDir.TrimStart('\\') + "> ");
            var line = Console.ReadLine();
            var parts = line.Split(new char[] { ' ' });

            try
            {
              switch (parts[0].ToLower())
              {
            case "flush":
              {
                stream.Flush();
                break;
              }

            case "ls":
            case "dir":
              {
                try
                {
                  //List all directories
                  foreach (var dir in fat.GetDirectories(currentDir))
                  {
                    Console.WriteLine("\t" + dir);
                  }

                  //Now list all files
                  foreach (var file in fat.GetFiles(currentDir))
                  {
                    Console.WriteLine("\t" + Path.GetFileName(file));
                  }
                }
                catch (Exception ex)
                {
                  Console.WriteLine("ERROR: " + ex.Message);
                }

                break;
              }

            case "pwd":
              {
                Console.WriteLine(currentDir);
                break;
              }

            case "get":
              {
                var file = fat.OpenFile(currentDir + "\\" + parts[1], FileMode.Open);
                var data = new byte[file.Length];
                file.Read(data, 0, data.Length);
                file.Close();

                File.WriteAllBytes(parts[1], data);
                break;
              }

            case "put":
              {
                var data = File.ReadAllBytes(parts[1]);
                var file = fat.OpenFile(currentDir + "\\" + parts[1], FileMode.Create);
                file.Write(data, 0, data.Length);
                file.Close();

                break;
              }

            case "cd":
              {
                if (parts[1] == "..")
                {
                  var idx = currentDir.LastIndexOf("\\");
                  if (idx != -1)
                  {
                    currentDir = currentDir.Substring(0, idx);
                  }
                }
                else
                {
                  currentDir += "\\" + parts[1];
                }

                break;
              }

            case "exit":
            case "quit":
              {
                running = false;
                break;
              }

            case "help":
              {
                Console.WriteLine("Help:");
                Console.WriteLine("cd\tChanges to specified directory.");
                Console.WriteLine("dir\tDisplays current directory's contents.");
                Console.WriteLine("ls");
                Console.WriteLine("pwd\tPrints current directory.");
                Console.WriteLine("get\tGets specified file to disk.");
                break;
              }

            default:
              {
                break;
              }
              }
            }
            catch (Exception ex)
            {
              Console.WriteLine("Error handling command: " + ex.ToString());
            }
              }
        }
コード例 #3
0
        private static void _DoMassStorageDemo(VicarDevice vicar)
        {
            //Create an instance of a FAT32 file system image
            var  stream     = new DiscUtilsStream(new MassStorageHelper(vicar));
            var  fat        = new DiscUtils.Fat.FatFileSystem(stream);
            var  currentDir = "\\";
            bool running    = true;

            Console.WriteLine("Type 'help' for options or 'quit' to quit.");
            while (running)
            {
                Console.Write(currentDir.TrimStart('\\') + "> ");
                var line  = Console.ReadLine();
                var parts = line.Split(new char[] { ' ' });

                try
                {
                    switch (parts[0].ToLower())
                    {
                    case "flush":
                    {
                        stream.Flush();
                        break;
                    }

                    case "ls":
                    case "dir":
                    {
                        try
                        {
                            //List all directories
                            foreach (var dir in fat.GetDirectories(currentDir))
                            {
                                Console.WriteLine("\t" + dir);
                            }

                            //Now list all files
                            foreach (var file in fat.GetFiles(currentDir))
                            {
                                Console.WriteLine("\t" + Path.GetFileName(file));
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("ERROR: " + ex.Message);
                        }

                        break;
                    }

                    case "pwd":
                    {
                        Console.WriteLine(currentDir);
                        break;
                    }

                    case "get":
                    {
                        var file = fat.OpenFile(currentDir + "\\" + parts[1], FileMode.Open);
                        var data = new byte[file.Length];
                        file.Read(data, 0, data.Length);
                        file.Close();

                        File.WriteAllBytes(parts[1], data);
                        break;
                    }

                    case "put":
                    {
                        var data = File.ReadAllBytes(parts[1]);
                        var file = fat.OpenFile(currentDir + "\\" + parts[1], FileMode.Create);
                        file.Write(data, 0, data.Length);
                        file.Close();

                        break;
                    }

                    case "cd":
                    {
                        if (parts[1] == "..")
                        {
                            var idx = currentDir.LastIndexOf("\\");
                            if (idx != -1)
                            {
                                currentDir = currentDir.Substring(0, idx);
                            }
                        }
                        else
                        {
                            currentDir += "\\" + parts[1];
                        }

                        break;
                    }

                    case "exit":
                    case "quit":
                    {
                        running = false;
                        break;
                    }

                    case "help":
                    {
                        Console.WriteLine("Help:");
                        Console.WriteLine("cd\tChanges to specified directory.");
                        Console.WriteLine("dir\tDisplays current directory's contents.");
                        Console.WriteLine("ls");
                        Console.WriteLine("pwd\tPrints current directory.");
                        Console.WriteLine("get\tGets specified file to disk.");
                        break;
                    }

                    default:
                    {
                        break;
                    }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error handling command: " + ex.ToString());
                }
            }
        }