xref: /reactos/ntoskrnl/config/cmdata.c (revision d6d1efe7)
1 /*
2  * PROJECT:         ReactOS Kernel
3  * LICENSE:         GPL - See COPYING in the top level directory
4  * FILE:            ntoskrnl/config/cmdata.c
5  * PURPOSE:         Configuration Manager - Global Configuration Data
6  * PROGRAMMERS:     Alex Ionescu (alex.ionescu@reactos.org)
7  */
8 
9 /* INCLUDES ******************************************************************/
10 
11 #include "ntoskrnl.h"
12 #define NDEBUG
13 #include "debug.h"
14 #include "./../mm/ARM3/miarm.h"
15 
16 /* GLOBALS *******************************************************************/
17 
18 ULONG DummyData;
19 ULONG CmNtGlobalFlag;
20 extern ULONG MmProductType;
21 
22 WCHAR CmDefaultLanguageId[12];
23 ULONG CmDefaultLanguageIdLength = sizeof(CmDefaultLanguageId);
24 ULONG CmDefaultLanguageIdType;
25 
26 WCHAR CmInstallUILanguageId[12];
27 ULONG CmInstallUILanguageIdLength = sizeof(CmInstallUILanguageId);
28 ULONG CmInstallUILanguageIdType;
29 
30 WCHAR CmSuiteBuffer[128];
31 ULONG CmSuiteBufferLength = sizeof(CmSuiteBuffer);
32 ULONG CmSuiteBufferType;
33 
34 CMHIVE CmControlHive;
35 
36 ULONG CmpConfigurationAreaSize = PAGE_SIZE * 4;
37 PCM_FULL_RESOURCE_DESCRIPTOR CmpConfigurationData;
38 
39 EX_PUSH_LOCK CmpHiveListHeadLock, CmpLoadHiveLock;
40 
41 HIVE_LIST_ENTRY CmpMachineHiveList[] =
42 {
43     { L"HARDWARE", L"MACHINE\\", NULL, HIVE_VOLATILE    , 0 ,   NULL,   FALSE,  FALSE,  FALSE},
44     { L"SECURITY", L"MACHINE\\", NULL, 0                , 0 ,   NULL,   FALSE,  FALSE,  FALSE},
45     { L"SOFTWARE", L"MACHINE\\", NULL, 0                , 0 ,   NULL,   FALSE,  FALSE,  FALSE},
46     { L"SYSTEM",   L"MACHINE\\", NULL, 0                , 0 ,   NULL,   FALSE,  FALSE,  FALSE},
47     { L"DEFAULT",  L"USER\\.DEFAULT", NULL, 0           , 0 ,   NULL,   FALSE,  FALSE,  FALSE},
48     { L"SAM",      L"MACHINE\\", NULL, HIVE_NOLAZYFLUSH , 0 ,   NULL,   FALSE,  FALSE,  FALSE},
49     { NULL,        NULL,         0, 0                   , 0 ,   NULL,   FALSE,  FALSE,  FALSE}
50 };
51 
52 UNICODE_STRING CmSymbolicLinkValueName =
53     RTL_CONSTANT_STRING(L"SymbolicLinkValue");
54 
55 UNICODE_STRING CmpLoadOptions;
56 
57 BOOLEAN CmpShareSystemHives;
58 BOOLEAN CmSelfHeal = TRUE;
59 BOOLEAN CmpSelfHeal = TRUE;
60 BOOLEAN CmpMiniNTBoot;
61 ULONG CmpBootType;
62 
63 USHORT CmpUnknownBusCount;
64 ULONG CmpTypeCount[MaximumType + 1];
65 
66 HANDLE CmpRegistryRootHandle;
67 
68 INIT_SECTION UNICODE_STRING CmClassName[MaximumClass + 1] =
69 {
70     RTL_CONSTANT_STRING(L"System"),
71     RTL_CONSTANT_STRING(L"Processor"),
72     RTL_CONSTANT_STRING(L"Cache"),
73     RTL_CONSTANT_STRING(L"Adapter"),
74     RTL_CONSTANT_STRING(L"Controller"),
75     RTL_CONSTANT_STRING(L"Peripheral"),
76     RTL_CONSTANT_STRING(L"MemoryClass"),
77     RTL_CONSTANT_STRING(L"Undefined")
78 };
79 
80 INIT_SECTION UNICODE_STRING CmTypeName[MaximumType + 1] =
81 {
82     RTL_CONSTANT_STRING(L"System"),
83     RTL_CONSTANT_STRING(L"CentralProcessor"),
84     RTL_CONSTANT_STRING(L"FloatingPointProcessor"),
85     RTL_CONSTANT_STRING(L"PrimaryICache"),
86     RTL_CONSTANT_STRING(L"PrimaryDCache"),
87     RTL_CONSTANT_STRING(L"SecondaryICache"),
88     RTL_CONSTANT_STRING(L"SecondaryDCache"),
89     RTL_CONSTANT_STRING(L"SecondaryCache"),
90     RTL_CONSTANT_STRING(L"EisaAdapter"),
91     RTL_CONSTANT_STRING(L"TcAdapter"),
92     RTL_CONSTANT_STRING(L"ScsiAdapter"),
93     RTL_CONSTANT_STRING(L"DtiAdapter"),
94     RTL_CONSTANT_STRING(L"MultifunctionAdapter"),
95     RTL_CONSTANT_STRING(L"DiskController"),
96     RTL_CONSTANT_STRING(L"TapeController"),
97     RTL_CONSTANT_STRING(L"CdRomController"),
98     RTL_CONSTANT_STRING(L"WormController"),
99     RTL_CONSTANT_STRING(L"SerialController"),
100     RTL_CONSTANT_STRING(L"NetworkController"),
101     RTL_CONSTANT_STRING(L"DisplayController"),
102     RTL_CONSTANT_STRING(L"ParallelController"),
103     RTL_CONSTANT_STRING(L"PointerController"),
104     RTL_CONSTANT_STRING(L"KeyboardController"),
105     RTL_CONSTANT_STRING(L"AudioController"),
106     RTL_CONSTANT_STRING(L"OtherController"),
107     RTL_CONSTANT_STRING(L"DiskPeripheral"),
108     RTL_CONSTANT_STRING(L"FloppyDiskPeripheral"),
109     RTL_CONSTANT_STRING(L"TapePeripheral"),
110     RTL_CONSTANT_STRING(L"ModemPeripheral"),
111     RTL_CONSTANT_STRING(L"MonitorPeripheral"),
112     RTL_CONSTANT_STRING(L"PrinterPeripheral"),
113     RTL_CONSTANT_STRING(L"PointerPeripheral"),
114     RTL_CONSTANT_STRING(L"KeyboardPeripheral"),
115     RTL_CONSTANT_STRING(L"TerminalPeripheral"),
116     RTL_CONSTANT_STRING(L"OtherPeripheral"),
117     RTL_CONSTANT_STRING(L"LinePeripheral"),
118     RTL_CONSTANT_STRING(L"NetworkPeripheral"),
119     RTL_CONSTANT_STRING(L"SystemMemory"),
120     RTL_CONSTANT_STRING(L"DockingInformation"),
121     RTL_CONSTANT_STRING(L"RealModeIrqRoutingTable"),
122     RTL_CONSTANT_STRING(L"RealModePCIEnumeration"),
123     RTL_CONSTANT_STRING(L"Undefined")
124 };
125 
126 INIT_SECTION CMP_MF_TYPE CmpMultifunctionTypes[] =
127 {
128     {"ISA", Isa, 0},
129     {"MCA", MicroChannel, 0},
130     {"PCI", PCIBus, 0},
131     {"VME", VMEBus, 0},
132     {"PCMCIA", PCMCIABus, 0},
133     {"CBUS", CBus, 0},
134     {"MPIPI", MPIBus, 0},
135     {"MPSA", MPSABus, 0},
136     {NULL, Internal, 0}
137 };
138 
139 INIT_SECTION CM_SYSTEM_CONTROL_VECTOR CmControlVector[] =
140 {
141     {
142         L"Session Manager",
143         L"ProtectionMode",
144         &ObpProtectionMode,
145         NULL,
146         NULL
147     },
148 
149     {
150         L"Session Manager",
151         L"ObjectSecurityMode",
152         &ObpObjectSecurityMode,
153         NULL,
154         NULL
155     },
156 
157     {
158         L"Session Manager",
159         L"LUIDDeviceMapsDisabled",
160         &ObpLUIDDeviceMapsDisabled,
161         NULL,
162         NULL
163     },
164 
165     {
166         L"LSA",
167         L"AuditBaseDirectories",
168         &DummyData,
169         NULL,
170         NULL
171     },
172 
173     {
174         L"LSA",
175         L"AuditBaseObjects",
176         &DummyData,
177         NULL,
178         NULL
179     },
180 
181     {
182         L"LSA\\audit",
183         L"ProcessAccessesToAudit",
184         &DummyData,
185         NULL,
186         NULL
187     },
188 
189     {
190         L"TimeZoneInformation",
191         L"ActiveTimeBias",
192         &DummyData,
193         NULL,
194         NULL
195     },
196 
197     {
198         L"TimeZoneInformation",
199         L"Bias",
200         &DummyData,
201         NULL,
202         NULL
203     },
204 
205     {
206         L"TimeZoneInformation",
207         L"RealTimeIsUniversal",
208         &DummyData,
209         NULL,
210         NULL
211     },
212 
213     {
214         L"Session Manager",
215         L"GlobalFlag",
216         &CmNtGlobalFlag,
217         NULL,
218         NULL
219     },
220 
221     {
222         L"Session Manager\\Memory Management",
223         L"PagedPoolQuota",
224         &DummyData,
225         NULL,
226         NULL
227     },
228 
229     {
230         L"Session Manager\\Memory Management",
231         L"NonPagedPoolQuota",
232         &DummyData,
233         NULL,
234         NULL
235     },
236 
237     {
238         L"Session Manager\\Memory Management",
239         L"PagingFileQuota",
240         &DummyData,
241         NULL,
242         NULL
243     },
244 
245     {
246         L"Session Manager\\Memory Management",
247         L"AllocationPreference",
248         &DummyData,
249         NULL,
250         NULL
251     },
252 
253     {
254         L"Session Manager\\Memory Management",
255         L"DynamicMemory",
256         &MmDynamicPfn,
257         NULL,
258         NULL
259     },
260 
261     {
262         L"Session Manager\\Memory Management",
263         L"Mirroring",
264         &MmMirroring,
265         NULL,
266         NULL
267     },
268 
269     {
270         L"Session Manager\\Memory Management",
271         L"SystemViewSize",
272         &DummyData,
273         NULL,
274         NULL
275     },
276 
277     {
278         L"Session Manager\\Memory Management",
279         L"SessionImageSize",
280         &DummyData,
281         NULL,
282         NULL
283     },
284 
285     {
286         L"Session Manager\\Memory Management",
287         L"SessionPoolSize",
288         &DummyData,
289         NULL,
290         NULL
291     },
292 
293     {
294         L"Session Manager\\Memory Management",
295         L"PoolUsageMaximum",
296         &MmConsumedPoolPercentage,
297         NULL,
298         NULL
299     },
300 
301     {
302         L"Session Manager\\Memory Management",
303         L"MapAllocationFragment",
304         &MmAllocationFragment,
305         NULL,
306         NULL
307     },
308 
309     {
310         L"Session Manager\\Memory Management",
311         L"PagedPoolSize",
312         &MmSizeOfPagedPoolInBytes,
313         NULL,
314         NULL
315     },
316 
317     {
318         L"Session Manager\\Memory Management",
319         L"NonPagedPoolSize",
320         &MmSizeOfNonPagedPoolInBytes,
321         NULL,
322         NULL
323     },
324 
325     {
326         L"Session Manager\\Memory Management",
327         L"NonPagedPoolMaximumPercent",
328         &DummyData,
329         NULL,
330         NULL
331     },
332 
333     {
334         L"Session Manager\\Memory Management",
335         L"LargeSystemCache",
336         &MmLargeSystemCache,
337         NULL,
338         NULL
339     },
340 
341     {
342         L"Session Manager\\Memory Management",
343         L"LargeStackSize",
344         &MmLargeStackSize,
345         NULL,
346         NULL
347     },
348 
349     {
350         L"Session Manager\\Memory Management",
351         L"SystemPages",
352         &MmNumberOfSystemPtes,
353         NULL,
354         NULL
355     },
356 
357     {
358         L"Session Manager\\Memory Management",
359         L"LowMemoryThreshold",
360         &MmLowMemoryThreshold,
361         NULL,
362         NULL
363     },
364 
365     {
366         L"Session Manager\\Memory Management",
367         L"HighMemoryThreshold",
368         &MmHighMemoryThreshold,
369         NULL,
370         NULL
371     },
372 
373     {
374         L"Session Manager\\Memory Management",
375         L"DisablePagingExecutive",
376         &MmDisablePagingExecutive,
377         NULL,
378         NULL
379     },
380 
381     {
382         L"Session Manager\\Memory Management",
383         L"ModifiedPageLife",
384         &DummyData,
385         NULL,
386         NULL
387     },
388 
389     {
390         L"Session Manager\\Memory Management",
391         L"SecondLevelDataCache",
392         &MmSecondaryColors,
393         NULL,
394         NULL
395     },
396 
397     {
398         L"Session Manager\\Memory Management",
399         L"ClearPageFileAtShutdown",
400         &MmZeroPageFile,
401         NULL,
402         NULL
403     },
404 
405     {
406         L"Session Manager\\Memory Management",
407         L"PoolTagSmallTableSize",
408         &DummyData,
409         NULL,
410         NULL
411     },
412 
413     {
414         L"Session Manager\\Memory Management",
415         L"PoolTagBigTableSize",
416         &DummyData,
417         NULL,
418         NULL
419     },
420 
421     {
422         L"Session Manager\\Memory Management",
423         L"PoolTag",
424         &DummyData,
425         NULL,
426         NULL
427     },
428 
429     {
430         L"Session Manager\\Memory Management",
431         L"PoolTagOverruns",
432         &DummyData,
433         NULL,
434         NULL
435     },
436 
437     {
438         L"Session Manager\\Memory Management",
439         L"SnapUnloads",
440         &DummyData,
441         NULL,
442         NULL
443     },
444 
445     {
446         L"Session Manager\\Memory Management",
447         L"ProtectNonPagedPool",
448         &MmProtectFreedNonPagedPool,
449         NULL,
450         NULL
451     },
452 
453     {
454         L"Session Manager\\Memory Management",
455         L"TrackLockedPages",
456         &MmTrackLockedPages,
457         NULL,
458         NULL
459     },
460 
461     {
462         L"Session Manager\\Memory Management",
463         L"TrackPtes",
464         &MmTrackPtes,
465         NULL,
466         NULL
467     },
468 
469     {
470         L"Session Manager\\Memory Management",
471         L"VerifyDrivers",
472         MmVerifyDriverBuffer,
473         &MmVerifyDriverBufferLength,
474         &MmVerifyDriverBufferType
475     },
476 
477     {
478         L"Session Manager\\Memory Management",
479         L"VerifyDriverLevel",
480         &MmVerifyDriverLevel,
481         NULL,
482         NULL
483     },
484 
485     {
486         L"Session Manager\\Memory Management",
487         L"VerifyMode",
488         &DummyData,
489         NULL,
490         NULL
491     },
492 
493     {
494         L"Session Manager\\Memory Management",
495         L"LargePageMinimum",
496         &DummyData,
497         NULL,
498         NULL
499     },
500 
501     {
502         L"Session Manager\\Memory Management",
503         L"EnforceWriteProtection",
504         &MmEnforceWriteProtection,
505         NULL,
506         NULL
507     },
508 
509     {
510         L"Session Manager\\Memory Management",
511         L"MakeLowMemory",
512         &MmMakeLowMemory,
513         NULL,
514         NULL
515     },
516 
517     {
518         L"Session Manager\\Memory Management",
519         L"WriteWatch",
520         &DummyData,
521         NULL,
522         NULL
523     },
524 
525     {
526         L"Session Manager\\Memory Management",
527         L"MinimumStackCommitInBytes",
528         &MmMinimumStackCommitInBytes,
529         NULL,
530         NULL
531     },
532 
533     {
534         L"Session Manager\\Executive",
535         L"AdditionalCriticalWorkerThreads",
536         &DummyData,
537         NULL,
538         NULL
539     },
540 
541     {
542         L"Session Manager\\Executive",
543         L"AdditionalDelayedWorkerThreads",
544         &DummyData,
545         NULL,
546         NULL
547     },
548 
549     {
550         L"Session Manager\\Executive",
551         L"PriorityQuantumMatrix",
552         &DummyData,
553         &DummyData,
554         NULL
555     },
556 
557     {
558         L"Session Manager\\Kernel",
559         L"DpcQueueDepth",
560         &DummyData,
561         NULL,
562         NULL
563     },
564 
565     {
566         L"Session Manager\\Kernel",
567         L"MinimumDpcRate",
568         &DummyData,
569         NULL,
570         NULL
571     },
572 
573     {
574         L"Session Manager\\Kernel",
575         L"AdjustDpcThreshold",
576         &DummyData,
577         NULL,
578         NULL
579     },
580 
581     {
582         L"Session Manager\\Kernel",
583         L"IdealDpcRate",
584         &DummyData,
585         NULL,
586         NULL
587     },
588 
589     {
590         L"Session Manager\\Kernel",
591         L"ObUnsecureGlobalNames",
592         ObpUnsecureGlobalNamesBuffer,
593         &ObpUnsecureGlobalNamesLength,
594         NULL
595     },
596 
597     {
598         L"Session Manager\\I/O System",
599         L"CountOperations",
600         &DummyData,
601         NULL,
602         NULL
603     },
604 
605     {
606         L"Session Manager\\I/O System",
607         L"LargeIrpStackLocations",
608         &DummyData,
609         NULL,
610         NULL
611     },
612 
613     {
614         L"Session Manager\\I/O System",
615         L"IoVerifierLevel",
616         &DummyData,
617         NULL,
618         NULL
619     },
620 
621     {
622         L"Session Manager",
623         L"ResourceTimeoutCount",
624         &DummyData,
625         NULL,
626         NULL
627     },
628 
629     {
630         L"Session Manager",
631         L"CriticalSectionTimeout",
632         &MmCritsectTimeoutSeconds,
633         NULL,
634         NULL
635     },
636 
637     {
638         L"Session Manager",
639         L"HeapSegmentReserve",
640         &MmHeapSegmentReserve,
641         NULL,
642         NULL
643     },
644     {
645         L"Session Manager",
646         L"HeapSegmentCommit",
647         &MmHeapSegmentCommit,
648         NULL,
649         NULL
650     },
651 
652     {
653         L"Session Manager",
654         L"HeapDeCommitTotalFreeThreshold",
655         &MmHeapDeCommitTotalFreeThreshold,
656         NULL,
657         NULL
658     },
659 
660     {
661         L"Session Manager",
662         L"HeapDeCommitFreeBlockThreshold",
663         &MmHeapDeCommitFreeBlockThreshold,
664         NULL,
665         NULL
666     },
667 
668     {
669         L"ProductOptions",
670         L"ProductType",
671         &MmProductType,
672         NULL,
673         NULL
674     },
675 
676     {
677         L"Terminal Server",
678         L"TSEnabled",
679         &DummyData,
680         NULL,
681         NULL
682     },
683 
684     {
685         L"Terminal Server",
686         L"TSAppCompat",
687         &DummyData,
688         NULL,
689         NULL
690     },
691 
692 
693     {
694         L"ProductOptions",
695         L"ProductSuite",
696         CmSuiteBuffer,
697         &CmSuiteBufferLength,
698         &CmSuiteBufferType
699     },
700 
701     {
702         L"Windows",
703         L"CSDVersion",
704         &CmNtCSDVersion,
705         NULL,
706         NULL
707     },
708 
709     {
710         L"Windows",
711         L"CSDReleaseType",
712         &CmNtCSDReleaseType,
713         NULL,
714         NULL
715     },
716 
717     {
718         L"Nls\\Language",
719         L"Default",
720         CmDefaultLanguageId,
721         &CmDefaultLanguageIdLength,
722         &CmDefaultLanguageIdType
723     },
724 
725     {
726         L"Nls\\Language",
727         L"InstallLanguage",
728         CmInstallUILanguageId,
729         &CmInstallUILanguageIdLength,
730         &CmInstallUILanguageIdType
731     },
732 
733     {
734         L"\0\0",
735         L"RegistrySizeLimit",
736         &DummyData,
737         &DummyData,
738         &DummyData
739     },
740 
741     {
742         L"Session Manager",
743         L"ForceNpxEmulation",
744         &DummyData,
745         NULL,
746         NULL
747     },
748 
749     {
750         L"Session Manager",
751         L"PowerPolicySimulate",
752         &DummyData,
753         NULL,
754         NULL
755     },
756 
757     {
758         L"Session Manager\\Executive",
759         L"MaxTimeSeparationBeforeCorrect",
760         &DummyData,
761         NULL,
762         NULL
763     },
764 
765     {
766         L"Windows",
767         L"ShutdownTime",
768         &DummyData,
769         &DummyData,
770         NULL
771     },
772 
773     {
774         L"PriorityControl",
775         L"Win32PrioritySeparation",
776         &PsRawPrioritySeparation,
777         NULL,
778         NULL
779     },
780 
781     {
782         L"Session Manager",
783         L"EnableTimerWatchdog",
784         &DummyData,
785         NULL,
786         NULL
787     },
788 
789     {
790         L"Session Manager",
791         L"Debugger Retries",
792         &KdpContext.KdpDefaultRetries,
793         NULL,
794         NULL
795     },
796 
797     {
798         L"Session Manager\\Debug Print Filter",
799         L"WIN2000",
800         &Kd_WIN2000_Mask,
801         NULL,
802         NULL
803     },
804 
805     /* TODO: Add the other masks */
806 
807     {
808         L"WMI",
809         L"MaxEventSize",
810         &DummyData,
811         NULL,
812         NULL
813     },
814 
815     {
816         L"WMI\\Trace",
817         L"UsePerformanceClock",
818         &DummyData,
819         NULL,
820         NULL
821     },
822 
823     {
824         L"WMI\\Trace",
825         L"TraceAlignment",
826         &DummyData,
827         NULL,
828         NULL
829     },
830 
831     {
832         NULL,
833         NULL,
834         NULL,
835         NULL,
836         NULL
837     }
838 };
839