mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 05:55:48 +00:00
- More simplification: Get rid of CmImportBinaryHive, CmpImportSystemHive, CmpImportHardwareHive and all of import.c!
- Fix CmpInitializeHive to set any flags that are passed, not assume HIVE_NO_FILE by default. - "Import" the system and hardware hives using CmpInitializeHive instead of the cmimport.c routines which are gone. - Get rid of old/unused cmdata.c in /cm. svn path=/trunk/; revision=26693
This commit is contained in:
parent
59a8c8c5dc
commit
384af65d69
5 changed files with 50 additions and 860 deletions
|
@ -1,710 +0,0 @@
|
||||||
#include "ntoskrnl.h"
|
|
||||||
#include "cm.h"
|
|
||||||
|
|
||||||
/* SYSTEM CONFIGURATION VECTOR ***********************************************/
|
|
||||||
|
|
||||||
ULONG DummyData;
|
|
||||||
ULONG CmNtGlobalFlag;
|
|
||||||
ULONG CmNtCSDVersion;
|
|
||||||
|
|
||||||
WCHAR CmDefaultLanguageId[12];
|
|
||||||
ULONG CmDefaultLanguageIdLength = sizeof(CmDefaultLanguageId);
|
|
||||||
ULONG CmDefaultLanguageIdType;
|
|
||||||
|
|
||||||
WCHAR CmInstallUILanguageId[12];
|
|
||||||
ULONG CmInstallUILanguageIdLength = sizeof(CmInstallUILanguageId);
|
|
||||||
ULONG CmInstallUILanguageIdType;
|
|
||||||
|
|
||||||
WCHAR CmSuiteBuffer[128];
|
|
||||||
ULONG CmSuiteBufferLength = sizeof(CmSuiteBuffer);
|
|
||||||
ULONG CmSuiteBufferType;
|
|
||||||
|
|
||||||
extern LANGID PsInstallUILanguageId;
|
|
||||||
extern LANGID PsDefaultUILanguageId;
|
|
||||||
|
|
||||||
//CMHIVE CmControlHive;
|
|
||||||
|
|
||||||
CM_SYSTEM_CONTROL_VECTOR CmControlVector[] =
|
|
||||||
{
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"ProtectionMode",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"ObjectSecurityMode",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"LUIDDeviceMapsDisabled",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"LSA",
|
|
||||||
L"AuditBaseDirectories",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"LSA",
|
|
||||||
L"AuditBaseObjects",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"LSA\\audit",
|
|
||||||
L"ProcessAccessesToAudit",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"TimeZoneInformation",
|
|
||||||
L"ActiveTimeBias",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"TimeZoneInformation",
|
|
||||||
L"Bias",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"TimeZoneInformation",
|
|
||||||
L"RealTimeIsUniversal",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"GlobalFlag",
|
|
||||||
&CmNtGlobalFlag,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"PagedPoolQuota",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"NonPagedPoolQuota",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"PagingFileQuota",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"AllocationPreference",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"DynamicMemory",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"Mirroring",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"Mirroring",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"SystemViewSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"SessionViewSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"SessionImageSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"SessionPoolSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"PoolUsageMaximum",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"MapAllocationFragment",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"PagedPoolSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"NonPagedPoolSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"NonPagedPoolMaximumPercent",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"LargeSystemCache",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"LargeStackSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"SystemPages",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"LowMemoryThreshold",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"HighMemoryThreshold",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"DisablePagingExecutive",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"ModifiedPageLife",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"SecondLevelDataCache",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"ClearPageFileAtShutdown",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"PoolTagSmallTableSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"PoolTagBigTableSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"PoolTag",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"PoolTagOverruns",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"SnapUnloads",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"ProtectNonPagedPool",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"TrackLockedPages",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"TrackPtes",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"VerifyDrivers",
|
|
||||||
&DummyData,
|
|
||||||
&DummyData,
|
|
||||||
&DummyData
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"VerifyDriverLevel",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"VerifyMode",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"LargePageMinimum",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"EnforceWriteProtection",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"MakeLowMemory",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Memory Management",
|
|
||||||
L"WriteWatch",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Executive",
|
|
||||||
L"AdditionalCriticalWorkerThreads",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Executive",
|
|
||||||
L"AdditionalDelayedWorkerThreads",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Executive",
|
|
||||||
L"PriorityQuantumMatrix",
|
|
||||||
&DummyData,
|
|
||||||
&DummyData,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Kernel",
|
|
||||||
L"DpcQueueDepth",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Kernel",
|
|
||||||
L"MinimumDpcRate",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Kernel",
|
|
||||||
L"AdjustDpcThreshold",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Kernel",
|
|
||||||
L"IdealDpcRate",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\I/O System",
|
|
||||||
L"CountOperations",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\I/O System",
|
|
||||||
L"LargeIrpStackLocations",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\I/O System",
|
|
||||||
L"IoVerifierLevel",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"ResourceTimeoutCount",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"CriticalSectionTimeout",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"HeapSegmentReserve",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"HeapSegmentCommit",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"HeapDeCommitTotalFreeThreshold",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"HeapDeCommitFreeBlockThreshold",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"ProductOptions",
|
|
||||||
L"ProductType",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Terminal Server",
|
|
||||||
L"TSEnabled",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Terminal Server",
|
|
||||||
L"TSAppCompat",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
L"ProductOptions",
|
|
||||||
L"ProductSuite",
|
|
||||||
CmSuiteBuffer,
|
|
||||||
&CmSuiteBufferLength,
|
|
||||||
&CmSuiteBufferType
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Windows",
|
|
||||||
L"CSDVersion",
|
|
||||||
&CmNtCSDVersion,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Nls\\Language",
|
|
||||||
L"Default",
|
|
||||||
CmDefaultLanguageId,
|
|
||||||
&CmDefaultLanguageIdLength,
|
|
||||||
&CmDefaultLanguageIdType
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Nls\\Language",
|
|
||||||
L"InstallLanguage",
|
|
||||||
CmInstallUILanguageId,
|
|
||||||
&CmInstallUILanguageIdLength,
|
|
||||||
&CmInstallUILanguageIdType
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"\0\0",
|
|
||||||
L"RegistrySizeLimit",
|
|
||||||
&DummyData,
|
|
||||||
&DummyData,
|
|
||||||
&DummyData
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"ForceNpxEmulation",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"PowerPolicySimulate",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager\\Executive",
|
|
||||||
L"MaxTimeSeparationBeforeCorrect",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Windows",
|
|
||||||
L"ShutdownTime",
|
|
||||||
&DummyData,
|
|
||||||
&DummyData,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"PriorityControl",
|
|
||||||
L"Win32PrioritySeparation",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"EnableTimerWatchdog",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"Session Manager",
|
|
||||||
L"Debugger Retries",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"WMI",
|
|
||||||
L"MaxEventSize",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"WMI\\Trace",
|
|
||||||
L"UsePerformanceClock",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
L"WMI\\Trace",
|
|
||||||
L"TraceAlignment",
|
|
||||||
&DummyData,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,136 +0,0 @@
|
||||||
/* $Id$
|
|
||||||
*
|
|
||||||
* PROJECT: ReactOS Kernel
|
|
||||||
* COPYRIGHT: GPL - See COPYING in the top level directory
|
|
||||||
* FILE: ntoskrnl/cm/import.c
|
|
||||||
* PURPOSE: Registry-Hive import functions
|
|
||||||
*
|
|
||||||
* PROGRAMMERS: Eric Kohl
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* INCLUDES *****************************************************************/
|
|
||||||
|
|
||||||
#include <ntoskrnl.h>
|
|
||||||
#define NDEBUG
|
|
||||||
#include <internal/debug.h>
|
|
||||||
|
|
||||||
#include "cm.h"
|
|
||||||
|
|
||||||
#if defined (ALLOC_PRAGMA)
|
|
||||||
#pragma alloc_text(INIT, CmImportHardwareHive)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* GLOBALS ******************************************************************/
|
|
||||||
|
|
||||||
/* FUNCTIONS ****************************************************************/
|
|
||||||
|
|
||||||
static BOOLEAN
|
|
||||||
CmImportBinaryHive (PCHAR ChunkBase,
|
|
||||||
ULONG ChunkSize,
|
|
||||||
ULONG Flags,
|
|
||||||
PEREGISTRY_HIVE *RegistryHive)
|
|
||||||
{
|
|
||||||
PEREGISTRY_HIVE Hive;
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
*RegistryHive = NULL;
|
|
||||||
|
|
||||||
/* Create a new hive */
|
|
||||||
Hive = ExAllocatePool (NonPagedPool,
|
|
||||||
sizeof(EREGISTRY_HIVE));
|
|
||||||
if (Hive == NULL)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
RtlZeroMemory (Hive,
|
|
||||||
sizeof(EREGISTRY_HIVE));
|
|
||||||
|
|
||||||
/* Set hive flags */
|
|
||||||
Hive->Flags = Flags;
|
|
||||||
|
|
||||||
/* Allocate hive header */
|
|
||||||
((PHBASE_BLOCK)ChunkBase)->Length = ChunkSize;
|
|
||||||
Status = HvInitialize(&Hive->Hive, HV_OPERATION_MEMORY, 0, 0,
|
|
||||||
(ULONG_PTR)ChunkBase, 0,
|
|
||||||
CmpAllocate, CmpFree,
|
|
||||||
CmpFileRead, CmpFileWrite, CmpFileSetSize,
|
|
||||||
CmpFileFlush, NULL);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
DPRINT1 ("Opening hive failed (%x)\n", Status);
|
|
||||||
ExFreePool (Hive);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
CmPrepareHive(&Hive->Hive);
|
|
||||||
|
|
||||||
/* Acquire hive list lock exclusively */
|
|
||||||
KeEnterCriticalRegion();
|
|
||||||
ExAcquireResourceExclusiveLite(&CmiRegistryLock, TRUE);
|
|
||||||
|
|
||||||
DPRINT("Adding new hive\n");
|
|
||||||
|
|
||||||
/* Add the new hive to the hive list */
|
|
||||||
InsertTailList(&CmiHiveListHead, &Hive->HiveList);
|
|
||||||
|
|
||||||
/* Release hive list lock */
|
|
||||||
ExReleaseResourceLite(&CmiRegistryLock);
|
|
||||||
KeLeaveCriticalRegion();
|
|
||||||
|
|
||||||
*RegistryHive = Hive;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
INIT_FUNCTION
|
|
||||||
CmImportSystemHive(PCHAR ChunkBase,
|
|
||||||
ULONG ChunkSize,
|
|
||||||
OUT PEREGISTRY_HIVE *RegistryHive)
|
|
||||||
{
|
|
||||||
*RegistryHive = NULL;
|
|
||||||
|
|
||||||
/* Import the binary system hive (non-volatile, offset-based, permanent) */
|
|
||||||
if (!CmImportBinaryHive (ChunkBase, ChunkSize, 0, RegistryHive))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the hive filename */
|
|
||||||
RtlCreateUnicodeString (&(*RegistryHive)->HiveFileName,
|
|
||||||
SYSTEM_REG_FILE);
|
|
||||||
|
|
||||||
/* Set the log filename */
|
|
||||||
RtlCreateUnicodeString (&(*RegistryHive)->LogFileName,
|
|
||||||
SYSTEM_LOG_FILE);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
INIT_FUNCTION
|
|
||||||
CmImportHardwareHive(PCHAR ChunkBase,
|
|
||||||
ULONG ChunkSize,
|
|
||||||
OUT PEREGISTRY_HIVE *RegistryHive)
|
|
||||||
{
|
|
||||||
*RegistryHive = NULL;
|
|
||||||
|
|
||||||
/* Import the binary system hive (volatile, offset-based, permanent) */
|
|
||||||
if (!CmImportBinaryHive (ChunkBase, ChunkSize, HIVE_NO_FILE, RegistryHive))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the hive filename */
|
|
||||||
RtlInitUnicodeString (&(*RegistryHive)->HiveFileName,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
/* Set the log filename */
|
|
||||||
RtlInitUnicodeString (&(*RegistryHive)->LogFileName,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* EOF */
|
|
|
@ -422,8 +422,8 @@ CmpInitializeHive(OUT PEREGISTRY_HIVE *RegistryHive,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set flag */
|
/* Set flags */
|
||||||
Hive->Flags = HIVE_NO_FILE;
|
Hive->Flags = HiveFlags;
|
||||||
|
|
||||||
/* Check if we should verify the registry */
|
/* Check if we should verify the registry */
|
||||||
if ((OperationType == HINIT_FILE) ||
|
if ((OperationType == HINIT_FILE) ||
|
||||||
|
|
|
@ -252,6 +252,7 @@ CmpInitializeSystemHive(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
||||||
BOOLEAN Allocate;
|
BOOLEAN Allocate;
|
||||||
UNICODE_STRING KeyName;
|
UNICODE_STRING KeyName;
|
||||||
PEREGISTRY_HIVE SystemHive;
|
PEREGISTRY_HIVE SystemHive;
|
||||||
|
UNICODE_STRING HiveName = RTL_CONSTANT_STRING(L"SYSTEM");
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
/* Setup the ansi string */
|
/* Setup the ansi string */
|
||||||
|
@ -279,10 +280,25 @@ CmpInitializeSystemHive(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
|
||||||
if (HiveBase)
|
if (HiveBase)
|
||||||
{
|
{
|
||||||
/* Import it */
|
/* Import it */
|
||||||
Status = CmImportSystemHive(HiveBase,
|
((PHBASE_BLOCK)HiveBase)->Length = LoaderBlock->RegistryLength;
|
||||||
LoaderBlock->RegistryLength,
|
Status = CmpInitializeHive(&SystemHive,
|
||||||
&SystemHive);
|
HINIT_MEMORY,
|
||||||
|
0, //HIVE_NOLAZYFLUSH,
|
||||||
|
HFILE_TYPE_LOG,
|
||||||
|
HiveBase,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
&HiveName,
|
||||||
|
2);
|
||||||
if (!NT_SUCCESS(Status)) return FALSE;
|
if (!NT_SUCCESS(Status)) return FALSE;
|
||||||
|
CmPrepareHive(&SystemHive->Hive);
|
||||||
|
|
||||||
|
/* Set the hive filename */
|
||||||
|
RtlCreateUnicodeString(&SystemHive->HiveFileName, SYSTEM_REG_FILE);
|
||||||
|
|
||||||
|
/* Set the log filename */
|
||||||
|
RtlCreateUnicodeString(&SystemHive->LogFileName, SYSTEM_LOG_FILE);
|
||||||
|
|
||||||
/* We imported, no need to create a new hive */
|
/* We imported, no need to create a new hive */
|
||||||
Allocate = FALSE;
|
Allocate = FALSE;
|
||||||
|
@ -393,6 +409,7 @@ CmpCreateRegistryRoot(VOID)
|
||||||
HANDLE RootKeyHandle;
|
HANDLE RootKeyHandle;
|
||||||
HCELL_INDEX RootIndex;
|
HCELL_INDEX RootIndex;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
PCM_KEY_NODE KeyCell;
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
/* Setup the root node */
|
/* Setup the root node */
|
||||||
|
@ -420,17 +437,26 @@ CmpCreateRegistryRoot(VOID)
|
||||||
(PVOID*)&RootKey);
|
(PVOID*)&RootKey);
|
||||||
if (!NT_SUCCESS(Status)) return FALSE;
|
if (!NT_SUCCESS(Status)) return FALSE;
|
||||||
|
|
||||||
|
/* Sanity check, and get the key cell */
|
||||||
|
ASSERT((&CmiVolatileHive->Hive)->ReleaseCellRoutine == NULL);
|
||||||
|
KeyCell = (PCM_KEY_NODE)HvGetCell(&CmiVolatileHive->Hive, RootIndex);
|
||||||
|
if (!KeyCell) return FALSE;
|
||||||
|
|
||||||
/* Setup the root key */
|
/* Setup the root key */
|
||||||
RootKey->RegistryHive = CmiVolatileHive;
|
RootKey->RegistryHive = CmiVolatileHive;
|
||||||
RootKey->KeyCellOffset = RootIndex;
|
RootKey->KeyCellOffset = RootIndex;
|
||||||
RootKey->KeyCell = HvGetCell(&CmiVolatileHive->Hive, RootIndex);
|
RootKey->KeyCell = KeyCell;
|
||||||
RootKey->ParentKey = RootKey;
|
RootKey->ParentKey = RootKey;
|
||||||
RootKey->Flags = 0;
|
RootKey->Flags = 0;
|
||||||
RootKey->SubKeyCounts = 0;
|
RootKey->SubKeyCounts = 0;
|
||||||
RootKey->SubKeys = NULL;
|
RootKey->SubKeys = NULL;
|
||||||
RootKey->SizeOfSubKeys = 0;
|
RootKey->SizeOfSubKeys = 0;
|
||||||
|
|
||||||
|
/* Insert it into the object list head */
|
||||||
InsertTailList(&CmiKeyObjectListHead, &RootKey->ListEntry);
|
InsertTailList(&CmiKeyObjectListHead, &RootKey->ListEntry);
|
||||||
Status = RtlpCreateUnicodeString(&RootKey->Name, L"Registry", NonPagedPool);
|
|
||||||
|
/* Setup the name */
|
||||||
|
RtlpCreateUnicodeString(&RootKey->Name, L"Registry", NonPagedPool);
|
||||||
|
|
||||||
/* Insert the key into the namespace */
|
/* Insert the key into the namespace */
|
||||||
Status = ObInsertObject(RootKey,
|
Status = ObInsertObject(RootKey,
|
||||||
|
@ -467,7 +493,6 @@ CmInitSystem1(VOID)
|
||||||
HANDLE ThreadHandle;
|
HANDLE ThreadHandle;
|
||||||
CLIENT_ID ThreadId;
|
CLIENT_ID ThreadId;
|
||||||
PEREGISTRY_HIVE HardwareHive;
|
PEREGISTRY_HIVE HardwareHive;
|
||||||
BOOLEAN Allocate = FALSE;
|
|
||||||
PVOID BaseAddress;
|
PVOID BaseAddress;
|
||||||
ULONG Length;
|
ULONG Length;
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
@ -513,7 +538,7 @@ CmInitSystem1(VOID)
|
||||||
/* Build the master hive */
|
/* Build the master hive */
|
||||||
Status = CmpInitializeHive(&CmiVolatileHive,
|
Status = CmpInitializeHive(&CmiVolatileHive,
|
||||||
HINIT_CREATE,
|
HINIT_CREATE,
|
||||||
HIVE_VOLATILE,
|
HIVE_VOLATILE | HIVE_NO_FILE,
|
||||||
HFILE_TYPE_PRIMARY,
|
HFILE_TYPE_PRIMARY,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -595,12 +620,24 @@ CmInitSystem1(VOID)
|
||||||
KEBUGCHECKEX(CONFIG_INITIALIZATION_FAILED, 1, 8, Status, 0);
|
KEBUGCHECKEX(CONFIG_INITIALIZATION_FAILED, 1, 8, Status, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize the hardware hive */
|
/* Import the hardware hive (FIXME: We should create it from scratch) */
|
||||||
BaseAddress = CmpRosGetHardwareHive(&Length);
|
BaseAddress = CmpRosGetHardwareHive(&Length);
|
||||||
if (!CmImportHardwareHive(BaseAddress, Length, &HardwareHive))
|
((PHBASE_BLOCK)BaseAddress)->Length = Length;
|
||||||
|
Status = CmpInitializeHive(&HardwareHive,
|
||||||
|
HINIT_MEMORY, //HINIT_CREATE,
|
||||||
|
HIVE_NO_FILE, //HIVE_VOLATILE,
|
||||||
|
HFILE_TYPE_PRIMARY,
|
||||||
|
BaseAddress, // NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
0);
|
||||||
|
CmPrepareHive(&HardwareHive->Hive);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Don't actually link anything below */
|
/* Bugcheck */
|
||||||
Allocate = TRUE;
|
KEBUGCHECKEX(CONFIG_INITIALIZATION_FAILED, 1, 11, Status, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Attach it to the machine key */
|
/* Attach it to the machine key */
|
||||||
|
|
|
@ -103,7 +103,6 @@
|
||||||
<file>cmvalue.c</file>
|
<file>cmvalue.c</file>
|
||||||
</directory>
|
</directory>
|
||||||
<directory name="cm">
|
<directory name="cm">
|
||||||
<file>import.c</file>
|
|
||||||
<file>ntfunc.c</file>
|
<file>ntfunc.c</file>
|
||||||
<file>regfile.c</file>
|
<file>regfile.c</file>
|
||||||
<file>registry.c</file>
|
<file>registry.c</file>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue