当前位置: 首页>>代码示例>>C#>>正文


C# HleIoDrvFileArg类代码示例

本文整理汇总了C#中HleIoDrvFileArg的典型用法代码示例。如果您正苦于以下问题:C# HleIoDrvFileArg类的具体用法?C# HleIoDrvFileArg怎么用?C# HleIoDrvFileArg使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


HleIoDrvFileArg类属于命名空间,在下文中一共展示了HleIoDrvFileArg类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: IoClose

 public unsafe int IoClose(HleIoDrvFileArg HleIoDrvFileArg)
 {
     var Stream = ((Stream)HleIoDrvFileArg.FileArgument);
     Stream.Close();
     return 0;
     //throw new NotImplementedException();
 }
开发者ID:mrcmunir,项目名称:cspspemu,代码行数:7,代码来源:HleIoDriverIso.cs

示例2: IoDevctl

        public unsafe int IoDevctl(HleIoDrvFileArg HleIoDrvFileArg, string DeviceName, uint Command, byte* InputPointer, int InputLength, byte* OutputPointer, int OutputLength)
        {
            switch (DeviceName)
            {
                case "emulator:": break;
                case "kemulator:": break;
                default: throw (new InvalidOperationException());
            }

            //Console.Error.WriteLine("     {0}", (EmulatorDevclEnum)Command);
            switch ((EmulatorDevclEnum)Command)
            {
                case EmulatorDevclEnum.GetHasDisplay:
                    *((int*)OutputPointer) = DisplayConfig.Enabled ? 1 : 0;
                    break;
                case EmulatorDevclEnum.SendOutput:
                    var OutputString = new String((sbyte*)InputPointer, 0, InputLength, Encoding.ASCII);
                    this.HleOutputHandler.Output(OutputString);
                    //Console.Error.WriteLine("{0}", OutputString);
                    break;
                case EmulatorDevclEnum.IsEmulator:
                    return 0;
                case EmulatorDevclEnum.EmitScreenshot:
                    if (PspHleRunningConfig.FileNameBase == null || PspHleRunningConfig.FileNameBase == "") throw (new Exception("PspHleRunningConfig.FileNameBase is empty"));
                    this.PspDisplay.TakeScreenshot().Save(String.Format("{0}.lastoutput.{1}.png", PspHleRunningConfig.FileNameBase, ScreenShotCount++), ImageFormat.Png);
                    break;
                default:
                    Console.Error.WriteLine("Unknown emulator command '{0}':0x{1:X} <- {2}", DeviceName, Command, (EmulatorDevclEnum)Command);
                    return -1;
            }
            return -1;
        }
开发者ID:soywiz,项目名称:cspspemu,代码行数:32,代码来源:HleIoDriverEmulator.cs

示例3: IoDopen

 public unsafe int IoDopen(HleIoDrvFileArg HleIoDrvFileArg, string Name)
 {
     //throw new NotImplementedException();
     var IsoNode = Iso.Root.Locate(Name);
     HleIoDrvFileArg.FileArgument = new DirectoryEnumerator<IsoNode>(IsoNode.Childs.ToArray());
     return 0;
 }
开发者ID:mrcmunir,项目名称:cspspemu,代码行数:7,代码来源:HleIoDriverIso.cs

示例4: IoGetstat

 public unsafe int IoGetstat(HleIoDrvFileArg HleIoDrvFileArg, string FileName, SceIoStat* Stat)
 {
     try
     {
         var ZipEntry = ZipArchive[FileName];
         Stat->Attributes = IOFileModes.CanRead | IOFileModes.File;
         Stat->Mode = SceMode.All;
         Stat->Size = ZipEntry.OpenUncompressedStream().Length;
         return 0;
     }
     catch (KeyNotFoundException)
     {
         throw (new FileNotFoundException("Can't find file '" + FileName + "' on ZipFile"));
     }
 }
开发者ID:soywiz,项目名称:cspspemu,代码行数:15,代码来源:HleIoDriverZip.cs

示例5: IoDread

        public unsafe int IoDread(HleIoDrvFileArg HleIoDrvFileArg, HleIoDirent* IoDirent)
        {
            var Enumerator = (DirectoryEnumerator<IsoNode>)HleIoDrvFileArg.FileArgument;

            // More items.
            if (Enumerator.MoveNext())
            {
                //Console.Error.WriteLine("'{0}'", Enumerator.Current.ToString());
                var IsoNode = Enumerator.Current;
                {
                    PointerUtils.StoreStringOnPtr(IsoNode.Name, Encoding.UTF8, IoDirent->Name);
                    _IoGetstat(IsoNode, &IoDirent->Stat);
                }
            }
            // No more items.
            else
            {
            }

            return Enumerator.GetLeft();
        }
开发者ID:mrcmunir,项目名称:cspspemu,代码行数:21,代码来源:HleIoDriverIso.cs

示例6: IoDopen

 public unsafe int IoDopen(HleIoDrvFileArg HleIoDrvFileArg, string Name)
 {
     var RealFileName = GetFullNormalizedAndSanitizedPath(Name);
     try
     {
         //Console.Error.WriteLine("'{0}'", RealFileName);
         var FileSystemInfo = new DirectoryInfo(RealFileName).EnumerateFileSystemInfos().ToArray();
         /*
         foreach (var Info in FileSystemInfo)
         {
             Console.Error.WriteLine(Info);
         }
         */
         HleIoDrvFileArg.FileArgument = new DirectoryEnumerator<FileSystemInfo>(FileSystemInfo);
         return 0;
     }
     catch (DirectoryNotFoundException DirectoryNotFoundException)
     {
         Console.WriteLine(DirectoryNotFoundException);
         return -1;
     }
 }
开发者ID:mrcmunir,项目名称:cspspemu,代码行数:22,代码来源:HleIoDriverLocalFileSystem.cs

示例7: IoOpen

		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;
		}
开发者ID:shin527,项目名称:cspspemu,代码行数:39,代码来源:HleIoDriverLocalFileSystem.cs

示例8: IoDevctl

        public unsafe int IoDevctl(HleIoDrvFileArg HleIoDrvFileArg, string DeviceName, uint Command, byte* InputPointer, int InputLength, byte* OutputPointer, int OutputLength)
        {
            switch (DeviceName)
            {
                case "emulator:": break;
                case "kemulator:": break;
                default: throw(new InvalidOperationException());
            }

            Console.WriteLine("     {0}", (EmulatorDevclEnum)Command);
            switch ((EmulatorDevclEnum)Command)
            {
                case EmulatorDevclEnum.GetHasDisplay:
                    *((int*)OutputPointer) = HleState.CpuProcessor.PspConfig.HasDisplay ? 1 : 0;
                    break;
                case EmulatorDevclEnum.SendOutput:
                    HleState.HleOutputHandler.Output(new String((sbyte*)InputPointer, 0, InputLength, Encoding.ASCII));
                    break;
                case EmulatorDevclEnum.IsEmulator:
                    return 0;
            }
            return 0;
        }
开发者ID:mrcmunir,项目名称:cspspemu,代码行数:23,代码来源:HleIoDriverEmulator.cs

示例9: IoLseek

 public unsafe long IoLseek(HleIoDrvFileArg HleIoDrvFileArg, long Offset, SeekAnchor Whence)
 {
     var IsoFileArgument = ((IsoFileArgument)HleIoDrvFileArg.FileArgument);
     //Stream.Seek(
     return IsoFileArgument.Stream.Seek(Offset, (SeekOrigin)Whence);
 }
开发者ID:soywiz,项目名称:cspspemu,代码行数:6,代码来源:HleIoDriverIso.cs

示例10: IoIoctl

        public unsafe int IoIoctl(HleIoDrvFileArg HleIoDrvFileArg, uint Command, byte* InputPointer, int InputLength, byte* OutputPointer, int OutputLength)
        {
            var IsoFileArgument = ((IsoFileArgument)HleIoDrvFileArg.FileArgument);

            ActionIntPVoid ExpectedOutputSize = (int MinimumSize) =>
            {
                if (OutputLength < MinimumSize || OutputPointer == null) throw (new SceKernelException(SceKernelErrors.ERROR_INVALID_ARGUMENT));
                return OutputPointer;
            };

            ActionIntPVoid ExpectedInputSize = (int MinimumSize) =>
            {
                if (InputLength < MinimumSize || InputPointer == null) throw (new SceKernelException(SceKernelErrors.ERROR_INVALID_ARGUMENT));
                return InputPointer;
            };

            switch ((UmdCommandEnum)Command)
            {
            #if false
                case UmdCommandEnum.DefineDecryptionKey:
                    {
                        return 0;
                    }
            #endif
                case UmdCommandEnum.FileSeekSet:
                    {
                        var In = (uint *)ExpectedInputSize(sizeof(uint));
                        IsoFileArgument.Stream.Position = *In;
                        return 0;
                    }
                case UmdCommandEnum.ReadSectors:
                    {
                        var In = (uint *)ExpectedInputSize(sizeof(uint));
                        var NumberOfSectors = *In;
                        var CopySize = (int)(IsoFile.SectorSize * NumberOfSectors);
                        var Out = (byte*)ExpectedOutputSize(CopySize);
                        var BytesReaded = IsoFileArgument.Stream.ReadBytes(CopySize);
                        PointerUtils.Memcpy(Out, BytesReaded, BytesReaded.Length);
                        return 0;
                    }
                case UmdCommandEnum.FileSeek:
                    {
                        var In = (FileSeekIn*)ExpectedInputSize(sizeof(FileSeekIn));
                        IsoFileArgument.Stream.Seek(In->Offset, (SeekOrigin)In->Whence);
                        return 0;
                    }
                case UmdCommandEnum.GetFilePointer:
                    {
                        var Out = (uint*)ExpectedOutputSize(sizeof(uint));
                        *Out = (uint)IsoFileArgument.Stream.Position;
                        return 0;
                    }
                case UmdCommandEnum.GetStartSector:
                    {
                        var Out = (uint*)ExpectedOutputSize(sizeof(uint));
                        *Out = (uint)IsoFileArgument.StartSector;
                        return 0;
                    }
                case UmdCommandEnum.GetSectorSize:
                    {
                        var Out = (uint*)ExpectedOutputSize(sizeof(uint));
                        *Out = IsoFile.SectorSize;
                        return 0;
                    }
                case UmdCommandEnum.GetLengthInBytes:
                    {
                        var Out = (ulong*)ExpectedOutputSize(sizeof(ulong));
                        *Out = (uint)IsoFileArgument.Size;
                        return 0;
                    }
                case UmdCommandEnum.GetPrimaryVolumeDescriptor:
                    {
                        var Out = (PrimaryVolumeDescriptor*)ExpectedOutputSize(sizeof(PrimaryVolumeDescriptor));
                        *Out = Iso.PrimaryVolumeDescriptor;
                        return 0;
                    }
                default:
                    throw new NotImplementedException(String.Format("Not implemented command 0x{0:X} : {1}", Command, (UmdCommandEnum)Command));
            }
        }
开发者ID:soywiz,项目名称:cspspemu,代码行数:80,代码来源:HleIoDriverIso.cs

示例11: IoGetstat

        public unsafe int IoGetstat(HleIoDrvFileArg HleIoDrvFileArg, string FileName, SceIoStat* Stat)
        {
            //Console.WriteLine(FileName);
            _IoGetstat(Iso.Root.Locate(FileName), Stat);

            return 0;
        }
开发者ID:soywiz,项目名称:cspspemu,代码行数:7,代码来源:HleIoDriverIso.cs

示例12: IoDread

        public unsafe int IoDread(HleIoDrvFileArg HleIoDrvFileArg, HleIoDirent* IoDirent)
        {
            //var Enumerator = (DirectoryEnumerator<IsoNode>)(DisposableDummy<DirectoryEnumerator<IsoNode>>)HleIoDrvFileArg.FileArgument;
            var Enumerator = (DirectoryEnumerator<IsoNode>)HleIoDrvFileArg.FileArgument;

            // More items.
            if (Enumerator.MoveNext())
            {
                //Console.Error.WriteLine("'{0}'", Enumerator.Current.ToString());
                var IsoNode = Enumerator.Current;
                {
                    IoDirent->Name = IsoNode.Name;
                    _IoGetstat(IsoNode, &IoDirent->Stat);
                }
            }
            // No more items.
            else
            {
            }

            return Enumerator.GetLeft();
        }
开发者ID:soywiz,项目名称:cspspemu,代码行数:22,代码来源:HleIoDriverIso.cs

示例13: IoGetstat

        public unsafe int IoGetstat(HleIoDrvFileArg HleIoDrvFileArg, string FileName, SceIoStat* Stat)
        {
            var RealFileName = GetFullNormalizedAndSanitizedPath(FileName);
            //Console.WriteLine(RealFileName);

            Stat->Attributes = IOFileModes.CanExecute | IOFileModes.CanRead | IOFileModes.CanWrite;
            Stat->Mode = 0;
            Stat->Mode = SceMode.UserCanExecute | SceMode.UserCanRead | SceMode.UserCanWrite;
            Stat->Mode = SceMode.GroupCanExecute | SceMode.GroupCanRead | SceMode.GroupCanWrite;
            Stat->Mode = SceMode.OtherCanExecute | SceMode.OtherCanRead | SceMode.OtherCanWrite;

            FileSystemInfo FileSystemInfo = null;
            if (File.Exists(RealFileName))
            {
                var FileInfo = new FileInfo(RealFileName);
                FileSystemInfo = FileInfo;
                Stat->Size = FileInfo.Length;
                Stat->Mode |= SceMode.File;
                Stat->Attributes |= IOFileModes.File;
            }
            else if (Directory.Exists(RealFileName))
            {
                var DirectoryInfo = new DirectoryInfo(RealFileName);
                FileSystemInfo = DirectoryInfo;
                Stat->Mode |= SceMode.Directory;
                Stat->Attributes |= IOFileModes.Directory;
            }
            else
            {
                throw(new FileNotFoundException("Can't find file '" + RealFileName + "'"));
            }

            Stat->TimeCreation = ScePspDateTime.FromDateTime(FileSystemInfo.CreationTimeUtc);
            Stat->TimeLastAccess = ScePspDateTime.FromDateTime(FileSystemInfo.LastAccessTimeUtc);
            Stat->TimeLastModification = ScePspDateTime.FromDateTime(FileSystemInfo.LastWriteTimeUtc);

            return 0;
        }
开发者ID:e-COS,项目名称:cspspemu,代码行数:38,代码来源:HleIoDriverLocalFileSystem.cs

示例14: IoChdir

 public unsafe int IoChdir(HleIoDrvFileArg HleIoDrvFileArg, string DirectoryName)
 {
     throw new NotImplementedException();
 }
开发者ID:soywiz,项目名称:cspspemu,代码行数:4,代码来源:HleIoDriverIso.cs

示例15: IoMkdir

 public unsafe int IoMkdir(HleIoDrvFileArg HleIoDrvFileArg, string Name, SceMode Mode)
 {
     var RealFileName = GetFullNormalizedAndSanitizedPath(Name);
     Directory.CreateDirectory(RealFileName);
     //HleIoDrvFileArg.
     //throw new NotImplementedException();
     return 0;
 }
开发者ID:e-COS,项目名称:cspspemu,代码行数:8,代码来源:HleIoDriverLocalFileSystem.cs


注:本文中的HleIoDrvFileArg类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。