StrikerX3 / OpenXBOX

An experimental (Original) Xbox emulator
79 stars 6 forks source link

Implement the Object Manager #12

Closed StrikerX3 closed 6 years ago

StrikerX3 commented 6 years ago

Do what the title says. ;)

The Object Manager defines and manages objects that represent devices (including disks, volumes and files), synchronization objects such as events, semaphores, mutexes and timers, and system objects such as threads, processes, APCs and DPCs. Objects are accessed by their HANDLE on user space, and either handles or pointers by the kernel. There are two reference-counting mechanisms, one for handles and one for pointers.

The Object Manager has very close relations with many other subsystems, such as the I/O system (functions prefixed with Io). Keep in mind that we want to provide secure access to the host file system for both the hard disk and the DVD-ROM drive.

StrikerX3 commented 6 years ago

The kernel object manager is implemented in commit ecd3293. This includes all of the exported Ob functions and several Nt functions that deal with already implemented kernel objects (threads, events, semaphores, timers, and such). This brings the count of fully implemented kernel functions up to 218, or almost 65% of them. There are several Nt functions that deal with device I/O (Io functions) as well as the object manager. These obviously depend on the I/O subsystem being implemented.