mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
[NTOS:CM] Implement Win7+ VolatileBoot support.
Its support is controlled with a REG_DWORD value named `VolatileBoot` inside the registry key `HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager` . Its implementation is very trivial: when enabled, CmpShareSystemHives is set to TRUE and doesn't change state during runtime. In a sense this is similar to what happens in WinPE-boot, except that ALL hives without exception (system hives and others) will be loaded in shared mode.
This commit is contained in:
parent
f42c81e4ed
commit
cc40a5870a
3 changed files with 15 additions and 1 deletions
|
@ -54,6 +54,8 @@ UNICODE_STRING CmSymbolicLinkValueName =
|
||||||
|
|
||||||
UNICODE_STRING CmpLoadOptions;
|
UNICODE_STRING CmpLoadOptions;
|
||||||
|
|
||||||
|
/* TRUE if all hives must be loaded in shared mode */
|
||||||
|
ULONG CmpVolatileBoot;
|
||||||
/* TRUE if the system hives must be loaded in shared mode */
|
/* TRUE if the system hives must be loaded in shared mode */
|
||||||
BOOLEAN CmpShareSystemHives;
|
BOOLEAN CmpShareSystemHives;
|
||||||
/* TRUE when the registry is in PE mode */
|
/* TRUE when the registry is in PE mode */
|
||||||
|
@ -673,6 +675,13 @@ DATA_SEG("INITDATA") CM_SYSTEM_CONTROL_VECTOR CmControlVector[] =
|
||||||
NULL,
|
NULL,
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
L"Session Manager\\Configuration Manager",
|
||||||
|
L"VolatileBoot",
|
||||||
|
&CmpVolatileBoot,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
},
|
||||||
{
|
{
|
||||||
L"Session Manager",
|
L"Session Manager",
|
||||||
L"ForceNpxEmulation",
|
L"ForceNpxEmulation",
|
||||||
|
|
|
@ -1164,7 +1164,7 @@ CmpCreateRegistryRoot(VOID)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Completely sucessful */
|
/* Completely successful */
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1635,6 +1635,10 @@ CmInitSystem1(VOID)
|
||||||
CmpMiniNTBoot = TRUE;
|
CmpMiniNTBoot = TRUE;
|
||||||
CmpShareSystemHives = TRUE;
|
CmpShareSystemHives = TRUE;
|
||||||
}
|
}
|
||||||
|
/* If we are in volatile boot mode, ALL hives without exception
|
||||||
|
* (system hives and others) will be loaded in shared mode */
|
||||||
|
if (CmpVolatileBoot)
|
||||||
|
CmpShareSystemHives = TRUE;
|
||||||
|
|
||||||
/* Initialize the hive list and lock */
|
/* Initialize the hive list and lock */
|
||||||
InitializeListHead(&CmpHiveListHead);
|
InitializeListHead(&CmpHiveListHead);
|
||||||
|
|
|
@ -1420,6 +1420,7 @@ CmGetSystemDriverList(
|
||||||
extern ULONG CmpTraceLevel;
|
extern ULONG CmpTraceLevel;
|
||||||
extern BOOLEAN CmpSpecialBootCondition;
|
extern BOOLEAN CmpSpecialBootCondition;
|
||||||
extern BOOLEAN CmpFlushOnLockRelease;
|
extern BOOLEAN CmpFlushOnLockRelease;
|
||||||
|
extern ULONG CmpVolatileBoot;
|
||||||
extern BOOLEAN CmpShareSystemHives;
|
extern BOOLEAN CmpShareSystemHives;
|
||||||
extern BOOLEAN CmpMiniNTBoot;
|
extern BOOLEAN CmpMiniNTBoot;
|
||||||
extern BOOLEAN CmpNoVolatileCreates;
|
extern BOOLEAN CmpNoVolatileCreates;
|
||||||
|
|
Loading…
Reference in a new issue