Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task: Implement I/O File System #2361

Open
8 of 27 tasks
RadWolfie opened this issue May 15, 2022 · 0 comments
Open
8 of 27 tasks

Task: Implement I/O File System #2361

RadWolfie opened this issue May 15, 2022 · 0 comments
Assignees
Labels
HLE High Level Emulation kernel xbox kernel related request a task to be performed

Comments

@RadWolfie
Copy link
Member

RadWolfie commented May 15, 2022

Quick summary

To able emulate at lowest level of kernel's APIs for file system, we need drivers for device and file system. There will be multiple edits to this post to add more details and/or functions that are in need to implement before have full completion of I/O file system.

Details

Excluding higher level of Nt/Io implements, what will need to implement are...
Top Priority: (Managed by Object Manager, pr #2365)

  • Io(Create|Delete)Device
  • IoCreateFile / NtDeleteFile
  • NtDuplicateObject
  • Io(Create|Delete)SymbolicLink
  • IopParseFile (forward call to IoParseDevice)
  • IoParseDevice (Part 1)
    (currently emulated with host's NtDll::NtCreateFile)
  • NtSetInformationFile (Part 1)

High Priority: (irp work)

  • IoAllocateIrp and its relative irp functions
  • Implement functions which require IRP_MJ_ for MajorFunction usage.
    • Emulated device drivers (currently stub yet has enough to emulate at IoParseDevice function)
      • EmuDisk
      • EmuCdRom
      • EmuMu
      • EmuMediaBoard
        (NOTE: One or more hack(s) are required in order to continue support in higher level emulation)
    • IofCompleteRequest
    • Iop(Close|Delete)File
    • IopQueryDeviceInformation
    • NtFlushBuffersFile
    • NtSetInformationFile (Part 2)
    • NtQueryInformationFile
    • Nt(Read|Write)File
    • ...check for any other missing implement... even if it's exported kernel APIs.
    • IoParseDevice (Part 2)
      (use irp process instead of direct call to host's NtDll::NtCreateFile)

After above priorities are done: (assumed lowest level functions of kernel APIs)

  • Io(Check|Set|Removed)SharedAccess functions
    (pr I/O filesystem partial update #2365)
  • IoDismountVolume(ByName)
  • ...check for any other missing implement... even if it's exported kernel APIs.
  • file system driver (only occur after device driver)

Title regression(s):

  • Panzer Dragoon Orta (demo): Dirty or damaged disc error (FIXED)
    • Title is generating files with ".tmp" extension at the end. First, it generate files in partition# folder inside pdodemo folder. Then move them into partition# folder which is currently absent action.
    • NtSetInformationFile is not updated with new change
  • Grand Theft Auto (series): Reboot to dashboard and show xbox requires service. (FIXED)
    • There's an issue with format partition folder, the cause was absent sharing permission override.

System Configuration:

N/A

Additional Information (if any):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
HLE High Level Emulation kernel xbox kernel related request a task to be performed
Projects
None yet
Development

No branches or pull requests

1 participant