[NTOSKRNL/CONFIG]
authorAleksey Bragin <aleksey@reactos.org>
Sat, 3 Apr 2010 20:22:32 +0000 (20:22 +0000)
committerAleksey Bragin <aleksey@reactos.org>
Sat, 3 Apr 2010 20:22:32 +0000 (20:22 +0000)
commit71d61c9c591aea715413ae7e795ee27cc5cdcb45
tree798d2abf89bcfa40bd3301d425e618c61bce6a0e
parenteb82a3b915400c6765b20acda649c8bba8b6594d
[NTOSKRNL/CONFIG]
- Flusher lock fixes: wrong kind of lock,total mess (and the wrong kind of lock). Properly fixed throughout cmapi.c, but still missing in many other places.
- Add support for detecting loading of an already loaded hive.
- Start adding calls to CmpReportNotify to support registry callbacks.
- Do work needed to flush notifications for a deleted node (but CmpFlushNotify not yet implemented).
- Add support for adding each newly loaded hive to the HiveList key in the registry (but CmpAddHiveToFileList not yet implemented).
- Add some ViewLock acquire/releases where needed.
- Load the key in a faster way (Ob vs Zw)
- Add checks everywhere for HvMarkCellDirty success. In future (when log/backup file is enabled), it can return FALSE (e.g. when we are out of space).
- Change logic in CmpDoFlushAll to only flush a hive if it won't shrink (in the future, flushing may lead to hive shrinkage for efficiency).
- Add SEH2 protection to all CmApis that may deal with user-mode data.
- Add HvTrackCellRef/HvReleaseCellRef for tracking cell references in scenarios where we might need many GetCell/ReleaseCell calls. For now stubbed to only work with up to 4 static references.
- Properly unlock/free in some failure paths in some of the CM APIs.
- Add some missing HvReleaseCell in paths where it was missing.
- Try to fix hack in enumerate key.
- Fix wrong usage of KeQuerySystemTime. It was called twice to save it in 2 different places. Instead, there should be only one call, and then duplicate the value across.
- Fix logic in CmpSetValueExistingData/Key.

Tested with winetests and .NET framework 1.1 installation which fully completes.

svn path=/trunk/; revision=46702
reactos/lib/cmlib/cmlib.h
reactos/lib/cmlib/hivecell.c
reactos/lib/cmlib/hivewrt.c
reactos/ntoskrnl/config/cmapi.c
reactos/ntoskrnl/config/cmhvlist.c
reactos/ntoskrnl/config/cminit.c
reactos/ntoskrnl/config/cmkcbncb.c
reactos/ntoskrnl/config/cmparse.c