本文整理汇总了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();
}
示例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;
}
示例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;
}
示例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"));
}
}
示例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();
}
示例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;
}
}
示例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;
}
示例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;
}
示例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);
}
示例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));
}
}
示例11: IoGetstat
public unsafe int IoGetstat(HleIoDrvFileArg HleIoDrvFileArg, string FileName, SceIoStat* Stat)
{
//Console.WriteLine(FileName);
_IoGetstat(Iso.Root.Locate(FileName), Stat);
return 0;
}
示例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();
}
示例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;
}
示例14: IoChdir
public unsafe int IoChdir(HleIoDrvFileArg HleIoDrvFileArg, string DirectoryName)
{
throw new NotImplementedException();
}
示例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;
}