Ejemplo n.º 1
0
		public FileHandle Open(string FileName, HleIoFlags Flags, SceMode Mode)
		{
			var PathInfo = HleIoManager.ParsePath(FileName);
			PathInfo.HleIoDrvFileArg.HleIoDriver.IoOpen(PathInfo.HleIoDrvFileArg, PathInfo.LocalPath, Flags, Mode);
			//return new FileHandle(this.HleIoManager, PathInfo.HleIoDrvFileArg);
			return new FileHandle(PathInfo.HleIoDrvFileArg);
		}
Ejemplo n.º 2
0
            public int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
            {
                var PspIoDrvFileArgPartition = Alloc(new PspIoDrvFileArg()
                {
                    fs_num = 0,
                    drv    = PspMemory.PointerToPspAddressUnsafe(PspIoDrv),
                });
                var FileNamePartition = Alloc(FileName);

                try
                {
                    //Console.Error.WriteLineColored(ConsoleColor.Blue, "{0}", FileName);
                    //Console.Error.WriteLineColored(ConsoleColor.Blue, "{0}", Flags);
                    //Console.Error.WriteLineColored(ConsoleColor.Blue, "{0}", (int)Flags);
                    return((int)HleInterop.ExecuteFunctionNow(
                               PspIoDrvFuncs->IoOpen,
                               PspIoDrvFileArgPartition.Low,
                               FileNamePartition.Low,
                               Flags,
                               Mode
                               ));
                }
                finally
                {
                    FileNamePartition.DeallocateFromParent();
                }
            }
Ejemplo n.º 3
0
			public int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
			{
				//HleInterop.ExecuteFunctionNow(PspIoDrvFuncs->IoOpen);
				ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.Red, () => { Console.WriteLine("Not Implemented: GuestHleIoDriver.IoOpen"); });
				//throw new NotImplementedException();
				return 0;
			}
Ejemplo n.º 4
0
        public FileHandle Open(string fileName, HleIoFlags flags, SceMode mode)
        {
            var pathInfo = _hleIoManager.ParsePath(fileName);

            pathInfo.HleIoDrvFileArg.HleIoDriver.IoOpen(pathInfo.HleIoDrvFileArg, pathInfo.LocalPath, flags, mode);
            //return new FileHandle(this.HleIoManager, PathInfo.HleIoDrvFileArg);
            return(new FileHandle(pathInfo.HleIoDrvFileArg));
        }
Ejemplo n.º 5
0
        public int sceIoOpenAsync(string FileName, HleIoFlags Flags, SceMode Mode)
        {
            var FileHandle = sceIoOpen(FileName, Flags, Mode);
            var File       = HleState.HleIoManager.HleIoDrvFileArgPool.Get(FileHandle);

            File.AsyncLastResult = FileHandle;
            return(FileHandle);
        }
Ejemplo n.º 6
0
 public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     try
     {
         HleIoDrvFileArg.FileArgument = ZipArchive[FileName].OpenUncompressedStream();
         return(0);
     }
     catch (KeyNotFoundException)
     {
         throw new FileNotFoundException("Can't find file '" + FileName + "' on ZipFile");
     }
 }
Ejemplo n.º 7
0
        public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
        {
            var        RealFileName = GetFullNormalizedAndSanitizedPath(FileName);
            FileMode   FileMode     = FileMode.Open;
            FileAccess FileAccess   = 0;
            bool       Append       = Flags.HasFlag(HleIoFlags.Append);
            bool       Read         = Flags.HasFlag(HleIoFlags.Read);
            bool       Write        = Flags.HasFlag(HleIoFlags.Write);
            bool       Truncate     = Flags.HasFlag(HleIoFlags.Truncate);
            bool       Create       = Flags.HasFlag(HleIoFlags.Create);

            if (Read)
            {
                FileAccess |= FileAccess.Read;
            }
            if (Write)
            {
                FileAccess |= FileAccess.Write;
            }

            if (Append)
            {
                FileMode = FileMode.OpenOrCreate;
            }
            else if (Create)
            {
                FileMode = FileMode.Create;
            }
            else if (Truncate)
            {
                FileMode = FileMode.Truncate;
            }

            //if (Append) FileMode |= FileMode.Open;

            var Stream = File.Open(RealFileName, FileMode, FileAccess, FileShare.Delete | FileShare.ReadWrite);

            HleIoDrvFileArg.FileArgument = Stream;

            if (Append)
            {
                Stream.Position = Stream.Length;
            }

            return(0);
        }
Ejemplo n.º 8
0
        public SceUID _sceIoOpen(string FileName, HleIoFlags Flags, SceMode Mode, bool Async)
        {
            var Info = HleIoManager.ParsePath(FileName);

            try
            {
                ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.DarkGreen,
                                                     () => { Console.WriteLine("Opened ({0}): '{1}'", Async ? "Async" : "NO Async", FileName); });
                Info.HleIoDrvFileArg.HleIoDriver.IoOpen(Info.HleIoDrvFileArg, Info.LocalPath, Flags, Mode);
                Info.HleIoDrvFileArg.FullFileName = FileName;
                var Uid = HleIoManager.HleIoDrvFileArgPool.Create(Info.HleIoDrvFileArg);
                if (Async)
                {
                    Info.HleIoDrvFileArg.AsyncLastResult = (long)Uid;
                }
                return(Uid);
            }
            catch (IOException IOException)
            {
                Logger.Error("IOException: {0}", IOException);
            }
            catch (InvalidOperationException InvalidOperationException)
            {
                Logger.Error("InvalidOperationException: {0}", InvalidOperationException);
            }
            finally
            {
                if (!Async)
                {
                    _DelayIo(IoDelayType.Open);
                }
            }

            if (Async)
            {
                Info.HleIoDrvFileArg.AsyncLastResult = (long)SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND;
                return(HleIoManager.HleIoDrvFileArgPool.Create(Info.HleIoDrvFileArg));
            }
            else
            {
                //Console.Error.WriteLine("Didn't find file '{0}'", FileName);
                throw new SceKernelException(SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND,
                                             $"Didn't find file '{FileName}'");
            }
        }
Ejemplo n.º 9
0
        public int sceIoOpen(string FileName, HleIoFlags Flags, SceMode Mode)
        {
            var Info = HleState.HleIoManager.ParsePath(FileName);

            try
            {
                Info.HleIoDrvFileArg.HleIoDriver.IoOpen(Info.HleIoDrvFileArg, Info.LocalPath, Flags, Mode);
                return(HleState.HleIoManager.HleIoDrvFileArgPool.Create(Info.HleIoDrvFileArg));
            }
            catch (DirectoryNotFoundException)
            {
            }
            catch (FileNotFoundException)
            {
            }
            Console.Error.WriteLine("Didn't find file '{0}'", FileName);
            return(unchecked ((int)SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND));
        }
Ejemplo n.º 10
0
		public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
		{
			var RealFileName = GetFullNormalizedAndSanitizedPath(FileName);
			FileMode FileMode = FileMode.Open;
			FileAccess FileAccess = 0;
			bool Append = (Flags & HleIoFlags.Append) != 0;
			bool Read = (Flags & HleIoFlags.Read) != 0;
			bool Write = (Flags & HleIoFlags.Write) != 0;
			bool Truncate = (Flags & HleIoFlags.Truncate) != 0;
			bool Create = (Flags & HleIoFlags.Create) != 0;

			if (Read) FileAccess |= FileAccess.Read;
			if (Write) FileAccess |= FileAccess.Write;

			if (Append)
			{
				FileMode = FileMode.OpenOrCreate;
			}
			else if (Create)
			{
				FileMode = FileMode.Create;
			}
			else if (Truncate)
			{
				FileMode = FileMode.Truncate;
			}

			//if (Append) FileMode |= FileMode.Open;

			var Stream = File.Open(RealFileName, FileMode, FileAccess, FileShare.Delete | FileShare.ReadWrite);
			HleIoDrvFileArg.FileArgument = Stream;

			if (Append)
			{
				Stream.Position = Stream.Length;
			}

			return 0;
		}
Ejemplo n.º 11
0
        public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
        {
            // disc0:/sce_lbn0x5fa0_size0x1428
            //Console.WriteLine(":::::::::" + FileName);
            if (FileName.StartsWith("/sce_"))
            {
                int Sector = 0, Size = 0;
                var Parts = FileName.Substring(5).Split('_');
                foreach (var Part in Parts)
                {
                    if (Part.StartsWith("lbn"))
                    {
                        var Number = Part.Substring(3);
                        Sector = NumberUtils.ParseIntegerConstant(Number);
                    }
                    else if (Part.StartsWith("size"))
                    {
                        var Number = Part.Substring(4);
                        Size = NumberUtils.ParseIntegerConstant(Number);
                    }
                    else
                    {
                        throw(new NotImplementedException("Can't handle special filename '" + FileName + "' part '" + Part + "'"));
                    }
                    //Console.WriteLine(Part);
                }
                //Console.WriteLine("SPECIAL({0}, {1})", lbn, size);
                //Console.WriteLine("SPECIAL!!!!!!!!!!!!!!!!!!!!");
                HleIoDrvFileArg.FileArgument = Iso.Stream.SliceWithLength(Sector * IsoFile.SectorSize, Size);
                return(0);
            }

            //Console.WriteLine(FileName);
            var IsoNode = Iso.Root.Locate(FileName);

            HleIoDrvFileArg.FileArgument = IsoNode.Open();
            return(0);
        }
Ejemplo n.º 12
0
        public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
        {
            var        RealFileName = GetFullNormalizedAndSanitizedPath(FileName);
            FileMode   FileMode     = FileMode.Open;
            FileAccess FileAccess   = 0;
            bool       Append       = (Flags & HleIoFlags.Append) != 0;
            bool       Read         = (Flags & HleIoFlags.Read) != 0;
            bool       Write        = (Flags & HleIoFlags.Write) != 0;
            bool       Truncate     = (Flags & HleIoFlags.Truncate) != 0;
            bool       Create       = (Flags & HleIoFlags.Create) != 0;

            if (Append)
            {
                FileMode = FileMode.Append;
            }
            else if (Create)
            {
                FileMode = FileMode.Create;
            }
            else if (Truncate)
            {
                FileMode = FileMode.Truncate;
            }

            if (Read)
            {
                FileAccess |= FileAccess.Read;
            }
            if (Write)
            {
                FileAccess |= FileAccess.Write;
            }
            //if (Append) FileMode |= FileMode.Open;

            HleIoDrvFileArg.FileArgument = File.Open(RealFileName, FileMode, FileAccess, FileShare.Read);
            return(0);
        }
Ejemplo n.º 13
0
 public SceUID sceIoOpen(string FileName, HleIoFlags Flags, SceMode Mode)
 {
     return(_sceIoOpen(FileName, Flags, Mode, Async: false));
 }
Ejemplo n.º 14
0
 public virtual int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     return(ParentDriver.IoOpen(HleIoDrvFileArg, FileName, Flags, Mode));
 }
Ejemplo n.º 15
0
 public int sceIoReopen(string NewFileName, HleIoFlags SceIoFlags, SceMode SceMode, SceUID FileDescriptor)
 {
     //throw(new NotImplementedException());
     return(0);
 }
Ejemplo n.º 16
0
 public SceUID sceIoOpenAsync(string FileName, HleIoFlags Flags, SceMode Mode)
 {
     var FileId = (SceUID)_sceIoOpen(FileName, Flags, Mode, Async: true);
     var File = HleIoManager.HleIoDrvFileArgPool.Get(FileId);
     File.AsyncLastResult = (long)FileId;
     _DelayIo(IoDelayType.Open);
     //PspRtc.slee
     return FileId;
 }
Ejemplo n.º 17
0
		public SceUID sceIoOpen(string FileName, HleIoFlags Flags, SceMode Mode)
		{
			return _sceIoOpen(FileName, Flags, Mode, Async: false);
		}
Ejemplo n.º 18
0
 public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 19
0
 public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     ReLocatePathHandle(ref HleIoDrvFileArg, ref FileName);
     return HleIoDrvFileArg.HleIoDriver.IoOpen(HleIoDrvFileArg, FileName, Flags, Mode);
 }
Ejemplo n.º 20
0
 public StdHandle sceKernelStderrReopen(string File, HleIoFlags Flags, Vfs.SceMode Mode)
 {
     StdError = (StdHandle)IoFileMgrForUser.sceIoOpen(File, Flags, Mode);
     return StdError;
 }
		public SceUID sceIoOpenAsync(string FileName, HleIoFlags Flags, SceMode Mode)
		{
			return (SceUID)_sceIoOpen(FileName, Flags, Mode, Async: true);
		}
Ejemplo n.º 22
0
        public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
        {
            // Ignore the filename in "umd0:xxx".
            // Using umd0: is always opening the whole UMD in sector block mode,
            // ignoring the file name specified after the colon.
            if (HleIoDrvFileArg.DriverName.ToLower().StartsWith("umd"))
            {
                FileName = "";
            }

            // disc0:/sce_lbn0x5fa0_size0x1428
            //Console.WriteLine(":::::::::" + FileName);
            if (FileName == "")
            {
                HleIoDrvFileArg.FileArgument = new IsoFileArgument()
                {
                    IsoNode = null,
                    StartSector = 0,
                    Size = Iso.Stream.Length,
                    Stream = Iso.Stream,
                };
                return 0;
            }

            if (FileName.StartsWith("/sce_"))
            {
                int Sector = 0, Size = 0;
                var Parts = FileName.Substring(5).Split('_');
                foreach (var Part in Parts)
                {
                    if (Part.StartsWith("lbn"))
                    {
                        var Number = Part.Substring(3);
                        Sector = NumberUtils.ParseIntegerConstant(Number, 16);
                    }
                    else if (Part.StartsWith("size"))
                    {
                        var Number = Part.Substring(4);
                        Size = NumberUtils.ParseIntegerConstant(Number, 16);
                    }
                    else
                    {
                        throw(new NotImplementedException("Can't handle special filename '" + FileName + "' part '" + Part + "'"));
                    }
                    //Console.WriteLine(Part);
                }
                //Console.WriteLine("SPECIAL({0}, {1})", lbn, size);
                //Console.WriteLine("SPECIAL!!!!!!!!!!!!!!!!!!!!");
                HleIoDrvFileArg.FileArgument = new IsoFileArgument()
                {
                    IsoNode = null,
                    StartSector = Sector,
                    Size = Size,
                    Stream = Iso.Stream.SliceWithLength(Sector * IsoFile.SectorSize, Size),
                };
                return 0;
            }

            //Console.WriteLine(FileName);
            var IsoNode = Iso.Root.Locate(FileName);
            ;
            HleIoDrvFileArg.FileArgument = new IsoFileArgument()
            {
                IsoNode = IsoNode,
                StartSector = IsoNode.DirectoryRecord.Extent,
                Size = IsoNode.DirectoryRecord.Size,
                Stream = IsoNode.Open(),
            };
            return 0;
        }
Ejemplo n.º 23
0
 public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     try
     {
         HleIoDrvFileArg.FileArgument = ZipArchive[FileName].OpenUncompressedStream();
         return 0;
     }
     catch (KeyNotFoundException)
     {
         throw(new FileNotFoundException("Can't find file '" + FileName + "' on ZipFile"));
     }
 }
Ejemplo n.º 24
0
 public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     ReLocatePathHandle(ref HleIoDrvFileArg, ref FileName);
     return(HleIoDrvFileArg.HleIoDriver.IoOpen(HleIoDrvFileArg, FileName, Flags, Mode));
 }
Ejemplo n.º 25
0
 public int sceIoReopen(string NewFileName, HleIoFlags SceIoFlags, SceMode SceMode, SceUID FileDescriptor)
 {
     throw(new NotImplementedException());
 }
Ejemplo n.º 26
0
 public int sceIoOpen(string FileName, HleIoFlags Flags, SceMode Mode)
 {
     var Info = HleState.HleIoManager.ParsePath(FileName);
     try
     {
         Info.HleIoDrvFileArg.HleIoDriver.IoOpen(Info.HleIoDrvFileArg, Info.LocalPath, Flags, Mode);
         return HleState.HleIoManager.HleIoDrvFileArgPool.Create(Info.HleIoDrvFileArg);
     }
     catch (DirectoryNotFoundException)
     {
     }
     catch (FileNotFoundException)
     {
     }
     Console.Error.WriteLine("Didn't find file '{0}'", FileName);
     return unchecked((int)SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND);
 }
Ejemplo n.º 27
0
 public SceUID sceIoOpenAsync(string FileName, HleIoFlags Flags, SceMode Mode)
 {
     return((SceUID)_sceIoOpen(FileName, Flags, Mode, Async: true));
 }
Ejemplo n.º 28
0
 public virtual int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     return ParentDriver.IoOpen(HleIoDrvFileArg, FileName, Flags, Mode);
 }
Ejemplo n.º 29
0
 public StdHandle sceKernelStdoutReopen(string File, HleIoFlags Flags, Vfs.SceMode Mode)
 {
     StdOut = (StdHandle)IoFileMgrForUser.sceIoOpen(File, Flags, Mode);
     //Console.WriteLine("StdOut: {0}", StdOut);
     return StdOut;
 }
 public int sceIoOpenAsync(string FileName, HleIoFlags Flags, SceMode Mode)
 {
     var FileHandle = sceIoOpen(FileName, Flags, Mode);
     var File = HleState.HleIoManager.HleIoDrvFileArgPool.Get(FileHandle);
     File.AsyncLastResult = FileHandle;
     return FileHandle;
 }
Ejemplo n.º 31
0
        public SceUID _sceIoOpen(string FileName, HleIoFlags Flags, SceMode Mode, bool Async)
        {
            try
            {
                var Info = HleIoManager.ParsePath(FileName);
                Console.WriteLine("Opened ({3}) '{0}' with driver '{1}' and local path '{2}' : '{2}'", FileName, Info.HleIoDriver, Info.LocalPath, Async ? "Async" : "NO Async");
                Info.HleIoDrvFileArg.HleIoDriver.IoOpen(Info.HleIoDrvFileArg, Info.LocalPath, Flags, Mode);
                Info.HleIoDrvFileArg.FullFileName = FileName;
                return HleIoManager.HleIoDrvFileArgPool.Create(Info.HleIoDrvFileArg);
            }
            catch (DirectoryNotFoundException)
            {
            }
            catch (FileNotFoundException)
            {
            }
            catch (InvalidOperationException InvalidOperationException)
            {
                Console.Error.WriteLine(InvalidOperationException);
            }
            catch (IOException IOException)
            {
                Console.Error.WriteLine(IOException);
            }
            finally
            {
                _DelayIo(IoDelayType.Open);
            }

            //Console.Error.WriteLine("Didn't find file '{0}'", FileName);
            throw (new SceKernelException(SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND, String.Format("Didn't find file '{0}'", FileName)));
        }
Ejemplo n.º 32
0
 public StdHandle sceKernelStdoutReopen(string File, HleIoFlags Flags, Vfs.SceMode Mode)
 {
     StdOut = (StdHandle)IoFileMgrForUser.sceIoOpen(File, Flags, Mode);
     //Console.WriteLine("StdOut: {0}", StdOut);
     return(StdOut);
 }
Ejemplo n.º 33
0
		public SceUID _sceIoOpen(string FileName, HleIoFlags Flags, SceMode Mode, bool Async)
		{
			var Info = HleIoManager.ParsePath(FileName);

			try
			{
				Console.WriteLine("Opened ({3}) '{0}' with driver '{1}' and local path '{2}' : '{2}'", FileName, Info.HleIoDriver, Info.LocalPath, Async ? "Async" : "NO Async");
				Info.HleIoDrvFileArg.HleIoDriver.IoOpen(Info.HleIoDrvFileArg, Info.LocalPath, Flags, Mode);
				Info.HleIoDrvFileArg.FullFileName = FileName;
				var Uid = HleIoManager.HleIoDrvFileArgPool.Create(Info.HleIoDrvFileArg);
				if (Async)
				{
					Info.HleIoDrvFileArg.AsyncLastResult = (long)Uid;
				}
				return Uid;
			}
			catch (IOException IOException)
			{
				Logger.Notice("IOException: {0}", IOException);
			}
			catch (InvalidOperationException InvalidOperationException)
			{
				Logger.Warning("InvalidOperationException: {0}", InvalidOperationException);
			}
			finally
			{
				if (!Async)
				{
					_DelayIo(IoDelayType.Open);
				}
			}

			if (Async)
			{
				Info.HleIoDrvFileArg.AsyncLastResult = (long)SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND;
				return HleIoManager.HleIoDrvFileArgPool.Create(Info.HleIoDrvFileArg);
			}
			else
			{
				//Console.Error.WriteLine("Didn't find file '{0}'", FileName);
				throw (new SceKernelException(SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND, String.Format("Didn't find file '{0}'", FileName)));
			}
		}
Ejemplo n.º 34
0
        public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
        {
            // disc0:/sce_lbn0x5fa0_size0x1428
            //Console.WriteLine(":::::::::" + FileName);
            if (FileName.StartsWith("/sce_"))
            {
                int Sector = 0, Size = 0;
                var Parts = FileName.Substring(5).Split('_');
                foreach (var Part in Parts)
                {
                    if (Part.StartsWith("lbn"))
                    {
                        var Number = Part.Substring(3);
                        Sector = NumberUtils.ParseIntegerConstant(Number);
                    }
                    else if (Part.StartsWith("size"))
                    {
                        var Number = Part.Substring(4);
                        Size = NumberUtils.ParseIntegerConstant(Number);
                    }
                    else
                    {
                        throw(new NotImplementedException("Can't handle special filename '" + FileName + "' part '" + Part + "'"));
                    }
                    //Console.WriteLine(Part);
                }
                //Console.WriteLine("SPECIAL({0}, {1})", lbn, size);
                //Console.WriteLine("SPECIAL!!!!!!!!!!!!!!!!!!!!");
                HleIoDrvFileArg.FileArgument = Iso.Stream.SliceWithLength(Sector * IsoFile.SectorSize, Size);
                return 0;
            }

            //Console.WriteLine(FileName);
            var IsoNode = Iso.Root.Locate(FileName);
            HleIoDrvFileArg.FileArgument = IsoNode.Open();
            return 0;
        }
Ejemplo n.º 35
0
 public StdHandle sceKernelStderrReopen(string File, HleIoFlags Flags, Vfs.SceMode Mode)
 {
     StdError = (StdHandle)IoFileMgrForUser.sceIoOpen(File, Flags, Mode);
     return(StdError);
 }
Ejemplo n.º 36
0
 public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     throw new NotImplementedException();
 }
 public override int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     //if (Mode)
     // ...
     return(base.IoOpen(HleIoDrvFileArg, FileName, Flags, Mode));
 }
Ejemplo n.º 38
0
 public override int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
 {
     //if (Mode)
     // ...
     return base.IoOpen(HleIoDrvFileArg, FileName, Flags, Mode);
 }
Ejemplo n.º 39
0
        public unsafe int IoOpen(HleIoDrvFileArg HleIoDrvFileArg, string FileName, HleIoFlags Flags, SceMode Mode)
        {
            // Ignore the filename in "umd0:xxx".
            // Using umd0: is always opening the whole UMD in sector block mode,
            // ignoring the file name specified after the colon.
            if (HleIoDrvFileArg.DriverName.ToLower().StartsWith("umd"))
            {
                FileName = "";
            }

            // disc0:/sce_lbn0x5fa0_size0x1428
            //Console.WriteLine(":::::::::" + FileName);
            if (FileName == "")
            {
                HleIoDrvFileArg.FileArgument = new IsoFileArgument()
                {
                    IsoNode     = null,
                    StartSector = 0,
                    Size        = Iso.Stream.Length,
                    Stream      = Iso.Stream,
                };
                return(0);
            }

            if (FileName.StartsWith("/sce_"))
            {
                int Sector = 0, Size = 0;
                var Parts = FileName.Substring(5).Split('_');
                foreach (var Part in Parts)
                {
                    if (Part.StartsWith("lbn"))
                    {
                        var Number = Part.Substring(3);
                        Sector = NumberUtils.ParseIntegerConstant(Number, 16);
                    }
                    else if (Part.StartsWith("size"))
                    {
                        var Number = Part.Substring(4);
                        Size = NumberUtils.ParseIntegerConstant(Number, 16);
                    }
                    else
                    {
                        throw(new NotImplementedException("Can't handle special filename '" + FileName + "' part '" +
                                                          Part + "'"));
                    }
                    //Console.WriteLine(Part);
                }
                //Console.WriteLine("SPECIAL({0}, {1})", lbn, size);
                //Console.WriteLine("SPECIAL!!!!!!!!!!!!!!!!!!!!");
                HleIoDrvFileArg.FileArgument = new IsoFileArgument()
                {
                    IsoNode     = null,
                    StartSector = Sector,
                    Size        = Size,
                    Stream      = Iso.Stream.SliceWithLength(Sector * IsoFile.SectorSize, Size),
                };
                return(0);
            }

            //Console.WriteLine(FileName);
            var IsoNode = Iso.Root.Locate(FileName);

            ;
            HleIoDrvFileArg.FileArgument = new IsoFileArgument()
            {
                IsoNode     = IsoNode,
                StartSector = IsoNode.DirectoryRecord.Extent,
                Size        = IsoNode.DirectoryRecord.Size,
                Stream      = IsoNode.Open(),
            };
            return(0);
        }