Пример #1
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);
        }
Пример #2
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;
        }