kernel32.dll
- Remove locks from Wine code, and from simple stub or forward type of functions
- Add file headers to all files (except shared completely with Wine)
- Mark a pair of functions as shared with Wine (to be changed later when adding correct function headers)
svn path=/trunk/; revision=22043
- Thanks to this, the long-lasting ExpDesktopCreate hack is gone, and so is OB_ROS_FIND_METHOD and OB_ROS_CREATE_METHOD in win32k. Next patch can fully remove WIN32_CALLOUT_DATA and use the NT type instead.
- Add official OBJECT_ macros in obtypes.h
svn path=/trunk/; revision=22041
- Change ObFindObject's prototype to be able to accomodate these two parameters so that they can be sent to the parse routine.
svn path=/trunk/; revision=22037
- Remove directory object parsing. Directory objects don't have parse routines. Instead, inline the lookup in ObFindObject (this hasn't been optimized yet, a lot of the code is now setting a = b, c = a, c = b.
svn path=/trunk/; revision=22029
- 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
wait.c: These are simple wrapper routines around the KeWaitForXxx functions which reference the objects and get their pointers, just like any other Nt* function does. Some parts are non-trivial, such as: various failures: these can be tested with the wait regression test however; The usage of THREAD_WAIT_OBJECTS is documented in the DDK; The failure for WaitAll with duplicated objects is documented on MSDN; The check for SYNCHRONIZE object is documented on MSDN.
svn path=/trunk/; revision=22005
dirobj.c: The directory object implementation is also generic and currently uses different structures from NT. Object lookup/parsing is entirely different and has nothing in common with NT. The actual Nt* APIs which expose the interface are ultra-generic and trivial.
svn path=/trunk/; revision=22004
- Use OBJECT_SYMBOLIC_LINK structure as used by Windows NT (and added the structure to the NDK)
- Changed code to use the new names in the structure
- Only free the symlink's name if it has one, to avoid a bugcheck.
- Optimize parsing: if the new name is actually shorter then the target name, then don't allocate from pool, but re-use the buffer. This improves symlink parsing speed. Also fix a bug which made it depend on the incorrect implementation of NtCreateSymbolicLinkObject
- Re-align the link target maximum length in NtCreateSymbolicLinkObject if it's odd, and fail if the length is odd, smaller then the maximum, or if the maximum is zero.
- Originally allocate the symlink name in Paged Pool.
- Initialize new members of the structure.
- Fail in no-memory case, instead of continuing.
- Properly probe the LinkTarget in NtQuerySymbolicLinkObject.
- Properly handle which length is chosen for the copy and for the return in NtQuerySymbolicObject.
- Lock the symbolic link object type while querying it. Eventually many more parts of Ob need to do this kind of locking.
- SymLinkTest now only gives 2 failures.
- Fix some NDK bugs
svn path=/trunk/; revision=22000