- Reorganize most of /ob so that functions inside each module actually follow some sort of cohesive model instead of complete randomness. svn path=/trunk/; revision=22024
- Wipe out PROS_OBJECT_HEADER and use OBJECT_HEADER since we are now compatible. svn path=/trunk/; revision=22016
- Rewrote the Object Directory implementation to follow the NT Structures in the NDK. This got rid of the last remaining OBJECT_HEADER difference and switched over to OBJECT_DIRECTORY. - The low-level implementation is based on information from "Undocumented Windows 2000 Internals: A Programmer's Cookbook", with some modifications done by myself to match the updated 2003 structures. This implementation was hackishly stuck into our messed up high-level object lookup implementation, which now has 4 more band-aids. Still needs a lot of work done to the upper echelons of object lookup, but at least this gets rid of ROS-internal stuff. svn path=/trunk/; revision=22015
- Move all object directory stuff in dirobj.c and implement a simple profiler to measure the time spent in those functions until the desktop appears. Enable with #define OBP_PROFILE. svn path=/trunk/; revision=22003
- NDK 0.98, now with versionned headers. Too many changes to list, see the TinyKRNL SVN Logs for more detailed information. Thanks to Andrew (Wax), Thomas and Aleksey for testing. svn path=/trunk/; revision=21880
- support for kernel handles - attach to owning process before accessing the handle table if necessary svn path=/trunk/; revision=20038
- Support INIT section pragmas for msvc. Patch by Brezenbak. svn path=/trunk/; revision=19732
ntoskrnl header cleanups svn path=/trunk/; revision=17845
- Fix a large amount of bugs in ObpAllocateObjectAttributes & Name svn path=/trunk/; revision=17227
revert my last changes back to Alex's version of ObpCaptureObjectAttributes as I'm being an incompetent ass. This will introduce several vulnerabilities and bugs again. svn path=/trunk/; revision=17217
- reverted ObpCaptureObjectAttributes back to my old implementation (slightly modified and extended) because that one at least does what it's supposed to correctly svn path=/trunk/; revision=17205
- Initialize more fields when creating an Object Type - Correct the Pool Charge for Object Types, select a Default Object, always use a security procedure, read global flag for maintaing type lists, set the pool type - Initialize a Default Wait Object. - Fix security callback for objects. - Implement SeDefaultObjectMethod for security callbacks of objects which don't have a custom one. svn path=/trunk/; revision=17176
Lock the directory while it is parsed. svn path=/trunk/; revision=15664
remove debug message svn path=/trunk/; revision=15490
Fix Tag Usage svn path=/trunk/; revision=15487
Fix memory leaks in object manager, use tags and use some more public types svn path=/trunk/; revision=15486
Free the capture buffer in ObReferenceObjectByName. svn path=/trunk/; revision=15452
Object Manager Patch. This patch continues the work done in the previous patch and makes the following changes in order to support OB 2.0 (it basically temporarily fixes a highly incorrect implementation so that caller code will be ready to work with the OB 2.0 without change): 1) The documented Object Create Information Structure and semantics implemented. All Object Attributes and passed data from user-mode is now probed and saved into this object create structure when ObCreateObject is called. 2) ObCreateObject does NOT PERFORM ANY OTHER OPERATION EXCEPT CREATING THE OBJECT ANYMORE. ObCreateObject will NOT insert the Object into the tree and other operations. These are now done correctly by ObInsertObject. Therefore, the biggest hurdle was changing pieces of code which assumed ObCreateObject would be enough. 3) ObInsertObject uses the captured create info for all operations isntead of the Object Attributes. 4) ObFindObject now uses the captured info as well. 5) The OBject name and directory are now stored in the documented Object Name Information, always allocated and freed from non paged pool. HACKS: 5) Because the registry code is horribly broken and doesn't use ObFindObjectByName, the old ObFindObject had to be temporarily duplicated into CmpFindObject. 7) Win32k used ObInsertObject in CsrInsertObject as a way to create a handle inside csrss. However, OBInsertObject now does more then this. As a temporary hack, ObpCreateHandle is exported from the kernel and called from win32k. A fix needs to be done for this, but I don't know the design of win32k+csrss well enough to find a solution. 8) SEH has been commented out in some places of the new probing code because it breaks smss and explorer. These need to be investigated (seh did not exist in the previous code, so this is not really a hack) 9) Named objects with a parent directory are NOT allowed. However because of bugs in kernel32, the new check has been temporarily disabled. (this check did not exist in the previous code, so this is not really a hack) The next patch will add a proper ObFindObject which will support a more complete Parse Procedure with context and security information. This is needed for proper registry access (requested by Eric Kohl) and for proper functionality of the Desktop/File creation, which should use the Parse routine, and not the Create Handle Routine. This will also make it possible to remove some previous hacks and pave the way for a fixed Iop/IoCreateFile svn path=/trunk/; revision=15395
Properly create the Object Type Type and remove previous hacks added svn path=/trunk/; revision=15319
Make Object Type creation compatible with OB 2.0 from the caller's point of view. Use real structures for Object Type and ObjectType Initializer. Added two more hacks that I'll remove in the next commit svn path=/trunk/; revision=15317