- Booting/installing still works, but the system will possibly be unstable. However I'm choosing to commit this because it shows correct Ob behavior and will allow Art to fix Cm's referencing properly.
- Implement ObCheckObjectAccess and call it to perform access verification checks.
- Properly create devices, processes and controllers with an extra reference count, so that when the code closes their handle they don't die.
- Check for invalid uses of ObfDereferenceObject for our current debugging purposes.
- Add SEH to NtQueryObject.
svn path=/trunk/; revision=22685
No longer need hacks to check reference counts.
Deleted a ton of wierd code.
Fixed bug where we allocated uninitialized memory for child nodes we never
populated.
Now reference counting mirrors pointers exactly:
- Hold one reference for the parent key pointer
- Hold one reference for the list entry in the connected hive list
svn path=/trunk/; revision=22684
- Also add a REALLY nasty hack that forces OBJ_CASE_INSENSITIVE on all Registry APIs... this is needed because we seem to completely mess up case sensitivity otherwise and any user-mode caller that doesn't specify that flag will fail.
- These two fixes fix all the WINE failures for the "ntdll reg" test and should increase compatibility with some applications.
- Runtime Library Registry Wrappers Fixes and Optimizations:
- Use an array of registry paths instead of duplicating them
- Fix implenmentation of RTL_REGISTRY_HANDLE.
- Verify all Appends for failure before continuing.
- Use the strict minimum key permissions isntead of KEY_ALL_ACCESS.
- Don't use OBJ_OPENIF
- Use CAPS for \\REGISTRY\\USER (required to match a Windows quirk exposed by a WINE test)
- Use the correct length in RtlpNtQueryValueKey
- Generic cleanups, formatting and commenting.
svn path=/trunk/; revision=22682
- Also adds implementations for RtlFindMostSignificantBit , RtlFindLeastSignificantBit, RtlFindNextForwardRunClear, RtlFindClearRuns.
- The RtlBitmap* package is essential for compatibility with NTFS.SYS and other File System Drivers, but these fixes should not really improve user-mode app. compat.
svn path=/trunk/; revision=22679
- A->W converstion through static TEB buffer.
- Failure if opening without a name.
- Special warning code for objects that already exist (fixes some WINE test failures and probably makes a myriad of applications work).
- Use BasepConvertObjectAttributes when creating an object to remove code duplication.
- InitializeCrticalSectionAndSpinCount shouldn't raise an exception on failure.
- Optimize WaitForMultipleObjects to cache 8 objects on the stack instead of only 3.
- Reformat and comment all the files to ROS standards.
svn path=/trunk/; revision=22676
- Make CheckRemoteDebuggerPresent fail if no process was specified.
- Implement DebugActiveProcess, DebugActiveProcessStop, DebugBreakProcess, DebugSetProcessKillOnExit.
- Add *.vcproj to ignore lists.
svn path=/trunk/; revision=22675
- Add proper function headers, including links to publically-available documentation
- One internal function is subject to further review/audit
svn path=/trunk/; revision=22672
- Add proper function headers, including links to documentation
- All exported functions have publically-available information sources
- The only internal function is actually quite self-explanatory by its name
- Implementation is partly wrong as pointed by Gunnar
svn path=/trunk/; revision=22671
- Create the BNO Global and Local symbolic links in kernel32.
- We pass all the Ob+Native tests in ntdll_winetest om now (we fail some named pipe ones, but I have no idea why WINE calls them "Object Manager" related...)
svn path=/trunk/; revision=22652
- We also now correctly dereference the object in ObInsertObject, which should reduce one source of leaks (But there is still one). OTOH, this makes the Cm code crash at shutdown (I'll fix this ASAP, this fix is worth having atm.)
svn path=/trunk/; revision=22651
- Fix two critical bugs in ObInsertObject: We were creating a handle for the wrong object (in ObInsertObject) and we were not passing the ReferencedObject parameter to ObpCreateHandle, so that object was never being returned properly to the caller.
- ObfDereferenceObject shouldn't check for the OB_FLAG_PERMANENT flag, or else it would never be possible to kill permanent objects while in kernel mode (permanent objects only apply to user-mode handles).
svn path=/trunk/; revision=22650
- Lesson Two: What do you know! En and De.rc actually *are* our files, not James Brown's (his is sol.rc, which hasn't been altered with a ROS Header).
- Lesson Three: It is official (voted) ROS Policy that all ROS files have a header. Reverting this header violated it.
svn path=/trunk/; revision=22649
- Add imm32 dependency to user32, which is needed for edit control. This may not be a good solution, since Windows XP's user32.dll doesn't import imm32.dll. So maybe in future this should change to dynamic binding instead. But for now it works
- Update Wine-sync doc
This update reduces number of failing "user32_winetest.exe edit" tests from 44 to 43.
svn path=/trunk/; revision=22631