Commit graph

23 commits

Author SHA1 Message Date
George Bișoc
54a00aa8eb
[CMLIB][NTOS:CM] Deduplicate other common definitions between CMLIB and the NTOS CM
Addendum to commit 8c2454e (r70605). Credits and courtesy go to Hermès BÉLUSCA - MAÏTO.

CORE-10802 CORE-10793
2022-07-10 14:35:53 +02:00
Hermès Bélusca-Maïto
8ed7d4b341
[SDK:CMLIB][FREELDR:NTLDR] Revert commit 168fea0ee and provide a better fix. Addendum to 93d8a1b7b.
Correct fix was to fix the HCELL_INDEX <-> HKEY conversions, much like
is being done with UlongToHandle / HandleToUlong.

The on-disk/in-memory hive file structures are platform-independent:
their layout must not depend on whether code is compiled in 32 or 64
bits.
2022-04-17 16:46:47 +02:00
Stanislav Motylkov
168fea0eee
[CMLIB] Fix 64-bit build. Addendum to 93d8a1b7b.
Thanks to Hervé Poussineau for help.
2022-04-17 16:16:41 +03:00
Hermès Bélusca-Maïto
6a03fb7099
[SDK:CMLIB] Use Hive->Allocate / Hive->Free where possible. 2022-04-16 18:33:24 +02:00
Hermès Bélusca-Maïto
d873865971
[SDK:CMLIB] Const-ify the unicode strings that are only used as input and not modified. 2022-03-27 19:38:54 +02:00
Hermès Bélusca-Maïto
8ccd435eb0
[SDK:CMLIB] HvGetCell is a macro calling the hive's GetCellRoutine callback.
In principle there should be different get-cell routines, depending
on the type of the hive (given by the OperationType parameter of
HvInitialize): for flat hives, memory-mapped hives, etc.
For now in ReactOS we only support a restricted subset of these,
therefore we are still happy with a single get-cell callback...
This may change in the future.
2022-03-27 18:37:16 +02:00
Hermès Bélusca-Maïto
a4cad7be6b
[SDK:CMLIB][MKHIVE][BOOT:ENVIRON][NTOS:CONFIG] Add missing HvGetCell casts. Replace some ASSERT(FALSE). 2022-03-27 18:37:16 +02:00
Hermès Bélusca-Maïto
9d3c3a757a
[SDK:REACTOS][CMLIB][BOOT] Get rid of the FreeLdr-specific __FREELDR_H define, and use the standard NT _BLDR_ instead.
This standard _BLDR_ define is already defined for both FreeLdr and
boot/environ UEFI bootloader lib, so no actual behavioural changes
should occur.
2022-03-25 18:54:18 +01:00
Serge Gautherie
d6002f9475 [CMLIB] arm64: Define PAGE_SIZE
CORE-17518
2021-09-03 23:40:21 +03:00
Serge Gautherie
3051eb0e48
[NTOSKRNL] Add 'DECLSPEC_NORETURN' to a few 'KeBugCheck*()' (#2896) 2020-06-06 17:50:14 +02:00
Victor Perevertkin
7e069ccdb2
[CMAKE] Replace custom functions to built-in ones
add_target_compile_definitions -> target_compile_definitions
add_target_compile_flags -> target_compile_options
add_target_include_directories -> target_include_directories
2020-04-16 15:59:38 +03:00
Mark Jansen
db55933b0c
[CMLIB] Use UNIMPLEMENTED_ONCE in HvHiveWillShrink 2020-01-29 22:58:43 +01:00
Jérôme Gardou
493ceb7ade [CMAKE] Fix host tools build on x86-64 mingw
Dynamically check for sys/types.h and pid_t in wine config.h
Use TARGET_xxx defines instead of _X86_ as this is undefined by GCC
Add some sense in include directories management by using interface
libraries
2019-11-15 16:22:06 +01:00
maharmstone
e6a9aafe58 [CMLIB] Clean volatile registry entries in the same manner as Windows (#1883)
This fixes the crashes in HvpGetCellMapped on Windows Server 2003 when booting from Freeloader, as mentioned in maharmstone/btrfs#16.

When the bootloader loads the system hive, it cleans the data pertaining to any volatile keys. The Windows bootloader does this by setting SubKeyCounts[Volatile] to 0. After boot, the kernel marks any cell where this is 0 but SubKeyLists[Volatile] isn't HCELL_NIL as dirty, meaning that the sanitized version will then get flushed to the disk.

Because Freeloader sets SubKeyLists[Volatile] to HCELL_NIL straightaway, Windows thinks the cell is clean, and can unload it without flushing. If it then reads it from the disk, it will crash in HvpGetCellMapped due to the stale volatile pointers.

If you break on nt!CmpInitializeSystemHive on Windows and "gu" to the let the function run, you'll see that DirtyVector of the HHIVE has only the first 8 bits set. If you run it using the official bootloader, it'll have a lot more than that.
2019-08-27 02:39:27 +02:00
Timo Kreuzer
f47f45dbdd
[TOOLS] Fix/suppress all MSVC/x64 warnings (#1525) 2019-04-28 23:21:48 +02:00
Hermès Bélusca-Maïto
3ddf59e1ed
[CMLIB] Assign a signature to the in-memory HHIVE registry hive structure. CORE-15753
Makes the `!reg hivelist` WinDbg command working in ReactOS.

Dedicated to Mark Jansen.

See for more details:
https://webcache.googleusercontent.com/search?q=cache:fmHJX9eFGkkJ:https://blogs.technet.microsoft.com/ganand/archive/2008/01/05/internal-structures-of-the-windows-registry.aspx
and
http://moyix.blogspot.com/2008/02/enumerating-registry-hives.html
2019-02-17 01:21:37 +01:00
Hermès Bélusca-Maïto
70180ee06a
[CMLIB] Minor code style changes only: Use slightly more explicit signature #define names so that we know to which hive structure they correspond. 2019-02-17 01:21:36 +01:00
Hermès Bélusca-Maïto
bf8a7d2db0
[CMLIB] Adjust parameter types and annotations. Add diagnostic assertions. 2018-10-14 15:59:31 +02:00
Serge Gautherie
cb072fd0fe [CMLIB] Fix compiling as NT6+ (#840)
Addendum to r70582 (734bc291).
CORE-12596
2018-09-05 20:18:14 +02:00
Serge Gautherie
7d6bda16c6
[REACTOS] Improve how some ASSERTMSG() message values are printed: enforce ending "\n".
NB: Not touching calls in "third-party" code: class and classpnp.
2018-08-08 22:03:45 +02:00
Serge Gautherie
fb48381cb4
[CMLIB] Simplify an ASSERTMSG() as an ASSERT(). 2018-08-08 21:45:46 +02:00
Timo Kreuzer
cf77354dce [REACTOS] Fix 64 bit issues 2018-08-04 19:19:34 +02:00
Colin Finck
c2c66aff7d Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00