diff --git a/src/xenia/kernel/xobject.h b/src/xenia/kernel/xobject.h index 2c8a2fdf4..2a6fd5049 100644 --- a/src/xenia/kernel/xobject.h +++ b/src/xenia/kernel/xobject.h @@ -54,6 +54,42 @@ typedef struct { xe::be wait_list_blink; } X_DISPATCH_HEADER; +// http://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; + }; + xe::be object_type_ptr; + 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 security_descriptor; + + // Object lives after this header. + // (There's actually a body field here which is the object itself) +}; + +struct X_OBJECT_CREATE_INFORMATION { + xe::be attributes; + xe::be root_directory_ptr; + xe::be parse_context_ptr; + xe::be probe_mode; + xe::be paged_pool_charge; + xe::be non_paged_pool_charge; + xe::be security_descriptor_charge; + xe::be security_descriptor; + xe::be security_qos_ptr; + + // Security QoS here (SECURITY_QUALITY_OF_SERVICE) too! +}; + class XObject { public: enum Type {