diff --git a/src/xenia/kernel/util/kernel_fwd.h b/src/xenia/kernel/util/kernel_fwd.h index 4e605cad9..a77aa84f4 100644 --- a/src/xenia/kernel/util/kernel_fwd.h +++ b/src/xenia/kernel/util/kernel_fwd.h @@ -18,7 +18,6 @@ struct XAPC; struct X_KPCR; struct X_KTHREAD; struct X_OBJECT_HEADER; -struct X_OBJECT_CREATE_INFORMATION; } // namespace xe::kernel diff --git a/src/xenia/kernel/xobject.h b/src/xenia/kernel/xobject.h index 6524d0991..87f7dacbd 100644 --- a/src/xenia/kernel/xobject.h +++ b/src/xenia/kernel/xobject.h @@ -74,42 +74,17 @@ typedef struct { } X_DISPATCH_HEADER; static_assert_size(X_DISPATCH_HEADER, 0x10); -// https://www.nirsoft.net/kernel_struct/vista/OBJECT_HEADER.html struct X_OBJECT_HEADER { - xe::be pointer_count; - union { - xe::be handle_count; - xe::be next_to_free; - }; - uint8_t name_info_offset; - uint8_t handle_info_offset; - uint8_t quota_info_offset; - uint8_t flags; - union { - xe::be object_create_info; // X_OBJECT_CREATE_INFORMATION - xe::be quota_block_charged; - }; - xe::be object_type_ptr; // -0x8 POBJECT_TYPE - xe::be unk_04; // -0x4 - + xe::be pointer_count; + xe::be handle_count; + xe::be object_type_ptr; // X_OBJECT_TYPE* + xe::be flags; + xe::be hash_index; + xe::be padding; + xe::be used; // Object lives after this header. - // (There's actually a body field here which is the object itself) -}; - -// https://www.nirsoft.net/kernel_struct/vista/OBJECT_CREATE_INFORMATION.html -struct X_OBJECT_CREATE_INFORMATION { - xe::be attributes; // 0x0 - xe::be root_directory_ptr; // 0x4 - xe::be parse_context_ptr; // 0x8 - xe::be probe_mode; // 0xC - xe::be paged_pool_charge; // 0x10 - xe::be non_paged_pool_charge; // 0x14 - xe::be security_descriptor_charge; // 0x18 - xe::be security_descriptor; // 0x1C - xe::be security_qos_ptr; // 0x20 - - // Security QoS here (SECURITY_QUALITY_OF_SERVICE) too! }; +static_assert_size(X_OBJECT_HEADER, 0x18); class XObject { public: