Author: ion
Date: Thu Feb 15 20:44:04 2007
New Revision: 25806
URL:
http://svn.reactos.org/svn/reactos?rev=25806&view=rev
Log:
- Small placeholder change for future Cm code:
- Added newcm.c which will contain some new Cm code part of the Cm Rewrite but not in
the rewrite branch (used solely for supporting CmGetSystemControlValues).
- Added System Control Vector which supports all the registry flags that Windows 2003
SP1 supports as well.
- The most important part of this support, at least for us, is to get boot-time time zone
support working properly. We can worry about the other options later.
- Update KrnlFun for previous DPC/HAL fixes.
Added:
trunk/reactos/ntoskrnl/cm/cmdata.c
trunk/reactos/ntoskrnl/cm/newcm.c
Modified:
trunk/reactos/ntoskrnl/KrnlFun.c
trunk/reactos/ntoskrnl/cm/cm.h
trunk/reactos/ntoskrnl/ex/init.c
trunk/reactos/ntoskrnl/ntoskrnl.rbuild
Modified: trunk/reactos/ntoskrnl/KrnlFun.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/KrnlFun.c?rev=258…
==============================================================================
--- trunk/reactos/ntoskrnl/KrnlFun.c (original)
+++ trunk/reactos/ntoskrnl/KrnlFun.c Thu Feb 15 20:44:04 2007
@@ -9,12 +9,10 @@
// Failure to respect this will *ACHIEVE NOTHING*.
//
// Hal:
-// - Use APC and DPC Interrupt Dispatchers.
// - CMOS Initialization and CMOS Spinlock.
//
// Global:
// - TODO: Complete the list of bufxies
-// - Fix DPCs interrupting code at DISPATCH_LEVEL
// - Fix atapi.sys or serial.sys loading one more time at each boot.
//
///////////////////////////////////////////////////////////////////////////////
Modified: trunk/reactos/ntoskrnl/cm/cm.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/cm.h?rev=25806…
==============================================================================
--- trunk/reactos/ntoskrnl/cm/cm.h (original)
+++ trunk/reactos/ntoskrnl/cm/cm.h Thu Feb 15 20:44:04 2007
@@ -447,4 +447,24 @@
#define ObGetObjectPointerCount(x) OBJECT_TO_OBJECT_HEADER(x)->PointerCount
#define ObGetObjectHandleCount(x) OBJECT_TO_OBJECT_HEADER(x)->HandleCount
+//
+// System Control Vector
+//
+typedef struct _CM_SYSTEM_CONTROL_VECTOR
+{
+ PWCHAR KeyPath;
+ PWCHAR ValueName;
+ PVOID Buffer;
+ PULONG BufferLength;
+ PULONG Type;
+} CM_SYSTEM_CONTROL_VECTOR, *PCM_SYSTEM_CONTROL_VECTOR;
+
+VOID
+NTAPI
+CmGetSystemControlValues(
+ IN PVOID SystemHiveData,
+ IN PCM_SYSTEM_CONTROL_VECTOR ControlVector
+);
+
+extern CM_SYSTEM_CONTROL_VECTOR CmControlVector[];
#endif /*__INCLUDE_CM_H*/
Added: trunk/reactos/ntoskrnl/cm/cmdata.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/cmdata.c?rev=2…
==============================================================================
--- trunk/reactos/ntoskrnl/cm/cmdata.c (added)
+++ trunk/reactos/ntoskrnl/cm/cmdata.c Thu Feb 15 20:44:04 2007
@@ -1,0 +1,710 @@
+#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
+}
+};
+
Added: trunk/reactos/ntoskrnl/cm/newcm.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/newcm.c?rev=25…
==============================================================================
--- trunk/reactos/ntoskrnl/cm/newcm.c (added)
+++ trunk/reactos/ntoskrnl/cm/newcm.c Thu Feb 15 20:44:04 2007
@@ -1,0 +1,12 @@
+#include "ntoskrnl.h"
+#include "cm.h"
+#include "debug.h"
+
+VOID
+NTAPI
+CmGetSystemControlValues(IN PVOID SystemHiveData,
+ IN PCM_SYSTEM_CONTROL_VECTOR ControlVector)
+{
+ return;
+}
+
Modified: trunk/reactos/ntoskrnl/ex/init.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/init.c?rev=258…
==============================================================================
--- trunk/reactos/ntoskrnl/ex/init.c (original)
+++ trunk/reactos/ntoskrnl/ex/init.c Thu Feb 15 20:44:04 2007
@@ -11,7 +11,9 @@
#include <ntoskrnl.h>
#define NDEBUG
-#include <internal/debug.h>
+#include <debug.h>
+//#include <ntoskrnl/cm/newcm.h>
+#include "ntoskrnl/cm/cm.h"
/* DATA **********************************************************************/
@@ -889,7 +891,7 @@
KiInitializeBugCheck();
/* Setup initial system settings (FIXME: Needs Cm Rewrite) */
- //CmGetSystemControlValues(CommandLine, &CmControlVector);
+ CmGetSystemControlValues(LoaderBlock->RegistryBase, CmControlVector);
/* Initialize the executive at phase 0 */
if (!ExInitSystem()) KEBUGCHECK(PHASE0_INITIALIZATION_FAILED);
Modified: trunk/reactos/ntoskrnl/ntoskrnl.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.rbuild?r…
==============================================================================
--- trunk/reactos/ntoskrnl/ntoskrnl.rbuild (original)
+++ trunk/reactos/ntoskrnl/ntoskrnl.rbuild Thu Feb 15 20:44:04 2007
@@ -86,6 +86,8 @@
<file>regfile.c</file>
<file>registry.c</file>
<file>regobj.c</file>
+ <file>newcm.c</file>
+ <file>cmdata.c</file>
</directory>
<directory name="kdbg">
<if property="ARCH" value="i386">