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); }
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; }