mirror of
https://github.com/reactos/reactos.git
synced 2025-02-28 19:32:59 +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
|
||||
},
|
||||
{
|
||||
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"VolatileBoot",
|
||||
|
|
|
@ -22,7 +22,7 @@ BOOLEAN CmpLazyFlushPending;
|
|||
BOOLEAN CmpForceForceFlush;
|
||||
BOOLEAN CmpHoldLazyFlush = TRUE;
|
||||
ULONG CmpLazyFlushIntervalInSeconds = 5;
|
||||
static ULONG CmpLazyFlushHiveCount = 7;
|
||||
ULONG CmpLazyFlushHiveCount = 7;
|
||||
ULONG CmpLazyFlushCount = 1;
|
||||
LONG CmpFlushStarveWriters;
|
||||
|
||||
|
@ -60,7 +60,7 @@ CmpDoFlushNextHive(_In_ BOOLEAN ForceFlush,
|
|||
if (!(CmHive->Hive.HiveFlags & HIVE_NOLAZYFLUSH) &&
|
||||
(CmHive->FlushCount != CmpLazyFlushCount))
|
||||
{
|
||||
/* Great sucess! */
|
||||
/* Great success! */
|
||||
Result = TRUE;
|
||||
|
||||
/* One less to flush */
|
||||
|
@ -80,7 +80,7 @@ CmpDoFlushNextHive(_In_ BOOLEAN ForceFlush,
|
|||
DPRINT("Flushing: %wZ\n", &CmHive->FileFullPath);
|
||||
DPRINT("Handle: %p\n", CmHive->FileHandles[HFILE_TYPE_PRIMARY]);
|
||||
Status = HvSyncHive(&CmHive->Hive);
|
||||
if(!NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Let them know we failed */
|
||||
DPRINT1("Failed to flush %wZ on handle %p (status 0x%08lx)\n",
|
||||
|
|
|
@ -1460,7 +1460,7 @@ extern HANDLE CmpRegistryRootHandle;
|
|||
extern BOOLEAN ExpInTextModeSetup;
|
||||
extern BOOLEAN InitIsWinPEMode;
|
||||
extern ULONG CmpHashTableSize;
|
||||
extern ULONG CmpDelayedCloseSize, CmpDelayedCloseIndex;
|
||||
extern ULONG CmpDelayedCloseSize;
|
||||
extern BOOLEAN CmpNoWrite;
|
||||
extern BOOLEAN CmpForceForceFlush;
|
||||
extern BOOLEAN CmpWasSetupBoot;
|
||||
|
@ -1468,6 +1468,8 @@ extern BOOLEAN CmpProfileLoaded;
|
|||
extern PCMHIVE CmiVolatileHive;
|
||||
extern LIST_ENTRY CmiKeyObjectListHead;
|
||||
extern BOOLEAN CmpHoldLazyFlush;
|
||||
extern ULONG CmpLazyFlushIntervalInSeconds;
|
||||
extern ULONG CmpLazyFlushHiveCount;
|
||||
extern BOOLEAN HvShutdownComplete;
|
||||
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue