mirror of
https://github.com/reactos/reactos.git
synced 2025-03-01 03:45:16 +00:00
[NTOS:CM] Add some more configuration options.
Add support for configuring the CM lazy-flush and delay-close variables: `CmpLazyFlushIntervalInSeconds`, `CmpLazyFlushHiveCount`, and `CmpDelayedCloseSize`, using REG_DWORD values named respectively: `RegistryLazyFlushInterval`, `RegistryLazyFlushHiveCount`, and `DelayCloseSize`, in the registry key `HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager` . Extra observations: - While delay-close support exists in Windows 2003, configuring the delay-close size is possible only in Windows Vista and later. - The possibility of configuring the lazy-flush hive count has been removed in Windows 8+. See the comparison tables at: https://redplait.blogspot.com/2011/07/cmcontrolvector.html https://redplait.blogspot.com/2012/06/cmcontrolvector-for-w8.html https://redplait.blogspot.com/2016/03/cmcontrolvector-from-windows-10-build.html In addition: Remove `CmpDelayedCloseIndex` from cm.h as it is not used anymore in our code.
This commit is contained in:
parent
d44ed03b6c
commit
a18424267b
3 changed files with 27 additions and 4 deletions
|
@ -675,6 +675,27 @@ DATA_SEG("INITDATA") CM_SYSTEM_CONTROL_VECTOR CmControlVector[] =
|
||||||
NULL,
|
NULL,
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
L"Session Manager\\Configuration Manager",
|
||||||
|
L"RegistryLazyFlushInterval",
|
||||||
|
&CmpLazyFlushIntervalInSeconds,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
L"Session Manager\\Configuration Manager",
|
||||||
|
L"RegistryLazyFlushHiveCount",
|
||||||
|
&CmpLazyFlushHiveCount,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
L"Session Manager\\Configuration Manager",
|
||||||
|
L"DelayCloseSize",
|
||||||
|
&CmpDelayedCloseSize,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
},
|
||||||
{
|
{
|
||||||
L"Session Manager\\Configuration Manager",
|
L"Session Manager\\Configuration Manager",
|
||||||
L"VolatileBoot",
|
L"VolatileBoot",
|
||||||
|
|
|
@ -22,7 +22,7 @@ BOOLEAN CmpLazyFlushPending;
|
||||||
BOOLEAN CmpForceForceFlush;
|
BOOLEAN CmpForceForceFlush;
|
||||||
BOOLEAN CmpHoldLazyFlush = TRUE;
|
BOOLEAN CmpHoldLazyFlush = TRUE;
|
||||||
ULONG CmpLazyFlushIntervalInSeconds = 5;
|
ULONG CmpLazyFlushIntervalInSeconds = 5;
|
||||||
static ULONG CmpLazyFlushHiveCount = 7;
|
ULONG CmpLazyFlushHiveCount = 7;
|
||||||
ULONG CmpLazyFlushCount = 1;
|
ULONG CmpLazyFlushCount = 1;
|
||||||
LONG CmpFlushStarveWriters;
|
LONG CmpFlushStarveWriters;
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ CmpDoFlushNextHive(_In_ BOOLEAN ForceFlush,
|
||||||
if (!(CmHive->Hive.HiveFlags & HIVE_NOLAZYFLUSH) &&
|
if (!(CmHive->Hive.HiveFlags & HIVE_NOLAZYFLUSH) &&
|
||||||
(CmHive->FlushCount != CmpLazyFlushCount))
|
(CmHive->FlushCount != CmpLazyFlushCount))
|
||||||
{
|
{
|
||||||
/* Great sucess! */
|
/* Great success! */
|
||||||
Result = TRUE;
|
Result = TRUE;
|
||||||
|
|
||||||
/* One less to flush */
|
/* One less to flush */
|
||||||
|
@ -80,7 +80,7 @@ CmpDoFlushNextHive(_In_ BOOLEAN ForceFlush,
|
||||||
DPRINT("Flushing: %wZ\n", &CmHive->FileFullPath);
|
DPRINT("Flushing: %wZ\n", &CmHive->FileFullPath);
|
||||||
DPRINT("Handle: %p\n", CmHive->FileHandles[HFILE_TYPE_PRIMARY]);
|
DPRINT("Handle: %p\n", CmHive->FileHandles[HFILE_TYPE_PRIMARY]);
|
||||||
Status = HvSyncHive(&CmHive->Hive);
|
Status = HvSyncHive(&CmHive->Hive);
|
||||||
if(!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Let them know we failed */
|
/* Let them know we failed */
|
||||||
DPRINT1("Failed to flush %wZ on handle %p (status 0x%08lx)\n",
|
DPRINT1("Failed to flush %wZ on handle %p (status 0x%08lx)\n",
|
||||||
|
|
|
@ -1460,7 +1460,7 @@ extern HANDLE CmpRegistryRootHandle;
|
||||||
extern BOOLEAN ExpInTextModeSetup;
|
extern BOOLEAN ExpInTextModeSetup;
|
||||||
extern BOOLEAN InitIsWinPEMode;
|
extern BOOLEAN InitIsWinPEMode;
|
||||||
extern ULONG CmpHashTableSize;
|
extern ULONG CmpHashTableSize;
|
||||||
extern ULONG CmpDelayedCloseSize, CmpDelayedCloseIndex;
|
extern ULONG CmpDelayedCloseSize;
|
||||||
extern BOOLEAN CmpNoWrite;
|
extern BOOLEAN CmpNoWrite;
|
||||||
extern BOOLEAN CmpForceForceFlush;
|
extern BOOLEAN CmpForceForceFlush;
|
||||||
extern BOOLEAN CmpWasSetupBoot;
|
extern BOOLEAN CmpWasSetupBoot;
|
||||||
|
@ -1468,6 +1468,8 @@ extern BOOLEAN CmpProfileLoaded;
|
||||||
extern PCMHIVE CmiVolatileHive;
|
extern PCMHIVE CmiVolatileHive;
|
||||||
extern LIST_ENTRY CmiKeyObjectListHead;
|
extern LIST_ENTRY CmiKeyObjectListHead;
|
||||||
extern BOOLEAN CmpHoldLazyFlush;
|
extern BOOLEAN CmpHoldLazyFlush;
|
||||||
|
extern ULONG CmpLazyFlushIntervalInSeconds;
|
||||||
|
extern ULONG CmpLazyFlushHiveCount;
|
||||||
extern BOOLEAN HvShutdownComplete;
|
extern BOOLEAN HvShutdownComplete;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue