Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

cmdat.c

Go to the documentation of this file.
00001 /*++ 00002 00003 Copyright (c) 1990, 1991 Microsoft Corporation 00004 00005 00006 Module Name: 00007 00008 cmdat.c 00009 00010 Abstract: 00011 00012 This module contains registry "static" data, except for data 00013 also used by setup, which is in cmdat2.c. 00014 00015 Author: 00016 00017 Bryan Willman (bryanwi) 19-Oct-93 00018 00019 00020 Environment: 00021 00022 Kernel mode. 00023 00024 Revision History: 00025 00026 --*/ 00027 00028 #include "cmp.h" 00029 00030 // 00031 // ***** INIT ***** 00032 // 00033 00034 #ifdef ALLOC_DATA_PRAGMA 00035 #pragma data_seg("INIT") 00036 #endif 00037 00038 // 00039 // --------------------------- 00040 // 00041 00042 00043 UNICODE_STRING CmpLoadOptions = { 0 }; // sys options from FW or boot.ini 00044 00045 00046 // 00047 // CmpClassString - contains strings which are used as the class 00048 // strings in the keynode. 00049 // The associated enumerated type is CONFIGURATION_CLASS in arc.h 00050 // 00051 00052 UNICODE_STRING CmClassName[MaximumClass + 1] = { 0 }; 00053 00054 PWCHAR CmClassString[MaximumClass + 1] = { 00055 L"System", 00056 L"Processor", 00057 L"Cache", 00058 L"Adapter", 00059 L"Controller", 00060 L"Peripheral", 00061 L"MemoryClass", 00062 L"Undefined" 00063 }; 00064 00065 00066 struct { 00067 PUCHAR AscString; 00068 USHORT InterfaceType; 00069 USHORT Count; 00070 } CmpMultifunctionTypes[] = { 00071 "ISA", Isa, 0, 00072 "MCA", MicroChannel, 0, 00073 "PCI", PCIBus, 0, 00074 "VME", VMEBus, 0, 00075 "PCMCIA", PCMCIABus, 0, 00076 "CBUS", CBus, 0, 00077 "MPIPI", MPIBus, 0, 00078 "MPSA", MPSABus, 0, 00079 NULL, Internal, 0 00080 }; 00081 00082 00083 USHORT CmpUnknownBusCount = 0; 00084 00085 ULONG CmpConfigurationAreaSize = 0x4000; // Initialize size = 16K 00086 PCM_FULL_RESOURCE_DESCRIPTOR CmpConfigurationData = { 0 }; 00087 00088 00089 #ifdef ALLOC_DATA_PRAGMA 00090 #pragma data_seg() 00091 #endif 00092 00093 00094 // 00095 // ***** PAGE ***** 00096 // 00097 00098 #ifdef ALLOC_DATA_PRAGMA 00099 #pragma data_seg("PAGE") 00100 #endif 00101 00102 // 00103 // The following strings will be used as the keynames for registry 00104 // nodes. 00105 // The associated enumerated type is CONFIGURATION_TYPE in arc.h 00106 // 00107 00108 UNICODE_STRING CmTypeName[MaximumType + 1] = { 0 }; 00109 00110 // 00111 // CmpTypeCount[] - For each 'type', a count is used to keep track how many 00112 // keys have been created. 00113 // 00114 00115 ULONG CmpTypeCount[NUMBER_TYPES] = { 00116 0, // ArcSystem 00117 0, // CentralProcessor", 00118 0, // FloatingPointProcessor", 00119 0, // PrimaryICache", 00120 0, // PrimaryDCache", 00121 0, // SecondaryICache", 00122 0, // SecondaryDCache", 00123 0, // SecondaryCache", 00124 0, // EisaAdapter", (8) 00125 0, // TcAdapter", (9) 00126 0, // ScsiAdapter", 00127 0, // DtiAdapter", 00128 0, // MultifunctionAdapter", (12) 00129 0, // DiskController", (13) 00130 0, // TapeController", 00131 0, // CdRomController", 00132 0, // WormController", 00133 0, // SerialController", 00134 0, // NetworkController", 00135 0, // DisplayController", 00136 0, // ParallelController", 00137 0, // PointerController", 00138 0, // KeyboardController", 00139 0, // AudioController", 00140 0, // OtherController", 00141 0, // DiskPeripheral", 00142 0, // FloppyDiskPeripheral", 00143 0, // TapePeripheral", 00144 0, // ModemPeripheral", 00145 0, // MonitorPeripheral", 00146 0, // PrinterPeripheral", 00147 0, // PointerPeripheral", 00148 0, // KeyboardPeripheral", 00149 0, // TerminalPeripheral", 00150 0, // OtherPeripheral", 00151 0, // LinePeripheral", 00152 0, // NetworkPeripheral", 00153 0, // SystemMemory", 00154 0, // DockingInformation, 00155 0, // RealModeIrqRoutingTable 00156 0 // Undefined" 00157 }; 00158 00159 UNICODE_STRING nullclass = { 0, 0, NULL }; 00160 00161 // 00162 // All names used by the registry 00163 // 00164 00165 00166 UNICODE_STRING CmRegistryRootName = { 0 }; 00167 UNICODE_STRING CmRegistryMachineName = { 0 }; 00168 UNICODE_STRING CmRegistryMachineHardwareName = { 0 }; 00169 UNICODE_STRING CmRegistryMachineHardwareDescriptionName = { 0 }; 00170 UNICODE_STRING CmRegistryMachineHardwareDescriptionSystemName = { 0 }; 00171 UNICODE_STRING CmRegistryMachineHardwareDeviceMapName = { 0 }; 00172 UNICODE_STRING CmRegistryMachineHardwareResourceMapName = { 0 }; 00173 UNICODE_STRING CmRegistryMachineHardwareOwnerMapName = { 0 }; 00174 UNICODE_STRING CmRegistryMachineSystemName = { 0 }; 00175 UNICODE_STRING CmRegistryMachineSystemCurrentControlSet = { 0 }; 00176 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetEnumName = { 0 }; 00177 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetEnumRootName = { 0 }; 00178 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetServices = { 0 }; 00179 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetHardwareProfilesCurrent = { 0 }; 00180 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlClass = { 0 }; 00181 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlSafeBoot = { 0 }; 00182 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlSessionManagerMemoryManagement = { 0 }; 00183 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlBootLog = { 0 }; 00184 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetServicesEventLog = { 0 }; 00185 UNICODE_STRING CmRegistryUserName = { 0 }; 00186 UNICODE_STRING CmRegistrySystemCloneName = { 0 }; 00187 UNICODE_STRING CmpSystemFileName = { 0 }; 00188 UNICODE_STRING CmSymbolicLinkValueName = { 0 }; 00189 00190 #ifdef _WANT_MACHINE_IDENTIFICATION 00191 UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlBiosInfo = { 0 }; 00192 #endif 00193 00194 PWCHAR CmpRegistryRootString = L"\\REGISTRY"; 00195 PWCHAR CmpRegistryMachineString = L"\\REGISTRY\\MACHINE"; 00196 PWCHAR CmpRegistryMachineHardwareString = 00197 L"\\REGISTRY\\MACHINE\\HARDWARE"; 00198 PWCHAR CmpRegistryMachineHardwareDescriptionString = 00199 L"\\REGISTRY\\MACHINE\\HARDWARE\\DESCRIPTION"; 00200 PWCHAR CmpRegistryMachineHardwareDescriptionSystemString = 00201 L"\\REGISTRY\\MACHINE\\HARDWARE\\DESCRIPTION\\SYSTEM"; 00202 PWCHAR CmpRegistryMachineHardwareDeviceMapString = 00203 L"\\REGISTRY\\MACHINE\\HARDWARE\\DEVICEMAP"; 00204 PWCHAR CmpRegistryMachineHardwareResourceMapString = 00205 L"\\REGISTRY\\MACHINE\\HARDWARE\\RESOURCEMAP"; 00206 PWCHAR CmpRegistryMachineHardwareOwnerMapString = 00207 L"\\REGISTRY\\MACHINE\\HARDWARE\\OWNERMAP"; 00208 PWCHAR CmpRegistryMachineSystemString = 00209 L"\\REGISTRY\\MACHINE\\SYSTEM"; 00210 PWCHAR CmpRegistryMachineSystemCurrentControlSetString = 00211 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET"; 00212 PWCHAR CmpRegistryMachineSystemCurrentControlSetEnumString = 00213 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\ENUM"; 00214 PWCHAR CmpRegistryMachineSystemCurrentControlSetEnumRootString = 00215 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\ENUM\\ROOT"; 00216 PWCHAR CmpRegistryMachineSystemCurrentControlSetServicesString = 00217 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\SERVICES"; 00218 PWCHAR CmpRegistryMachineSystemCurrentControlSetHardwareProfilesCurrentString = 00219 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\HARDWARE PROFILES\\CURRENT"; 00220 PWCHAR CmpRegistryMachineSystemCurrentControlSetControlClassString = 00221 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\CONTROL\\CLASS"; 00222 PWCHAR CmpRegistryMachineSystemCurrentControlSetControlSafeBootString = 00223 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\CONTROL\\SAFEBOOT"; 00224 PWCHAR CmpRegistryMachineSystemCurrentControlSetControlSessionManagerMemoryManagementString = 00225 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\CONTROL\\SESSION MANAGER\\MEMORY MANAGEMENT"; 00226 PWCHAR CmpRegistryMachineSystemCurrentControlSetControlBootLogString = 00227 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\CONTROL\\BOOTLOG"; 00228 PWCHAR CmpRegistryMachineSystemCurrentControlSetServicesEventLogString = 00229 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\SERVICES\\EVENTLOG"; 00230 PWCHAR CmpRegistryUserString = L"\\REGISTRY\\USER"; 00231 PWCHAR CmpRegistrySystemCloneString = L"\\REGISTRY\\MACHINE\\CLONE"; 00232 PWCHAR CmpRegistrySystemFileNameString = L"SYSTEM"; 00233 PWCHAR CmpRegistryPerflibString = L"\\REGISTRY\\MACHINE\\SOFTWARE\\MICROSOFT\\WINDOWS NT\\CURRENTVERSION\\PERFLIB"; 00234 00235 PWCHAR CmpProcessorControl = L"ProcessorControl"; 00236 PWCHAR CmpControlSessionManager = L"Control\\Session Manager"; 00237 PWCHAR CmpSymbolicLinkValueName = L"SymbolicLinkValue"; 00238 00239 #ifdef _WANT_MACHINE_IDENTIFICATION 00240 PWCHAR CmpRegistryMachineSystemCurrentControlSetControlBiosInfoString = 00241 L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\CONTROL\\BIOSINFO"; 00242 #endif 00243 00244 // 00245 // N.B. The CLONE hive is left out of the machine Hive list if 00246 // we will not be using it to clone the current control set, 00247 // since that is that Hive's only purpose. 00248 // 00249 00250 HIVE_LIST_ENTRY CmpMachineHiveList[] = { 00251 { L"HARDWARE", L"MACHINE\\", NULL, HIVE_VOLATILE }, 00252 { L"SECURITY", L"MACHINE\\", NULL, 0}, 00253 { L"SOFTWARE", L"MACHINE\\", NULL, 0}, 00254 { L"SYSTEM", L"MACHINE\\", NULL, 0}, 00255 { L"DEFAULT", L"USER\\.DEFAULT", NULL, 0}, 00256 { L"SAM", L"MACHINE\\", NULL, HIVE_NOLAZYFLUSH }, 00257 00258 #if CLONE_CONTROL_SET 00259 { L"CLONE", L"MACHINE\\", NULL, HIVE_VOLATILE }, 00260 #endif 00261 00262 // { L"TEST", L"MACHINE\\", NULL, HIVE_NOLAZYFLUSH }, 00263 { NULL, NULL, 0, 0} 00264 }; 00265 00266 00267 00268 // 00269 // Master Hive 00270 // 00271 // The KEY_NODEs for \REGISTRY, \REGISTRY\MACHINE, and \REGISTRY\USER 00272 // are stored in a small memory only hive called the Master Hive. 00273 // All other hives have link nodes in this hive which point to them. 00274 // 00275 PCMHIVE CmpMasterHive = { 0 }; 00276 BOOLEAN CmpNoMasterCreates = FALSE; // Set TRUE after we're done to 00277 // prevent random creates in the 00278 // master hive, which is not backed 00279 // by a file. 00280 00281 00282 LIST_ENTRY CmpHiveListHead = { 0 }; // List of CMHIVEs 00283 00284 00285 // 00286 // Addresses of object type descriptors: 00287 // 00288 00289 POBJECT_TYPE CmpKeyObjectType = { 0 }; 00290 00291 // 00292 // Write-Control: 00293 // CmpNoWrite is initially true. When set this way write and flush 00294 // do nothing, simply returning success. When cleared to FALSE, I/O 00295 // is enabled. This change is made after the I/O system is started 00296 // AND autocheck (chkdsk) has done its thing. 00297 // 00298 00299 BOOLEAN CmpNoWrite = TRUE; 00300 00301 00302 // 00303 // NtInitializeRegistry global status flags 00304 // 00305 00306 // 00307 // If CmFirstTime is TRUE, then NtInitializeRegistry has not yet been 00308 // called to perform basic registry initialization 00309 // 00310 00311 BOOLEAN CmFirstTime = TRUE; 00312 00313 // 00314 // If CmBootAcceptFirstTime is TRUE, then NtInitializeRegistry has not 00315 // yet been called to accept the current Boot and save the boot 00316 // control set as the LKG control set. 00317 // 00318 00319 BOOLEAN CmBootAcceptFirstTime = TRUE; 00320 00321 // 00322 // CmpWasSetupBoot indicates whether or not the boot 00323 // is into text mode setup. If so, we do not turn 00324 // on global quotas. 00325 // 00326 BOOLEAN CmpWasSetupBoot; 00327 00328 #ifdef ALLOC_DATA_PRAGMA 00329 #pragma data_seg() 00330 #endif 00331 00332 00333 // 00334 // ***** FIXED ***** 00335 // 00336 00337 00338 PWCHAR CmTypeString[MaximumType + 1] = { 00339 L"System", 00340 L"CentralProcessor", 00341 L"FloatingPointProcessor", 00342 L"PrimaryICache", 00343 L"PrimaryDCache", 00344 L"SecondaryICache", 00345 L"SecondaryDCache", 00346 L"SecondaryCache", 00347 L"EisaAdapter", 00348 L"TcAdapter", 00349 L"ScsiAdapter", 00350 L"DtiAdapter", 00351 L"MultifunctionAdapter", 00352 L"DiskController", 00353 L"TapeController", 00354 L"CdRomController", 00355 L"WormController", 00356 L"SerialController", 00357 L"NetworkController", 00358 L"DisplayController", 00359 L"ParallelController", 00360 L"PointerController", 00361 L"KeyboardController", 00362 L"AudioController", 00363 L"OtherController", 00364 L"DiskPeripheral", 00365 L"FloppyDiskPeripheral", 00366 L"TapePeripheral", 00367 L"ModemPeripheral", 00368 L"MonitorPeripheral", 00369 L"PrinterPeripheral", 00370 L"PointerPeripheral", 00371 L"KeyboardPeripheral", 00372 L"TerminalPeripheral", 00373 L"OtherPeripheral", 00374 L"LinePeripheral", 00375 L"NetworkPeripheral", 00376 L"SystemMemory", 00377 L"DockingInformation", 00378 L"RealModeIrqRoutingTable", 00379 L"Undefined" 00380 };

Generated on Sat May 15 19:39:26 2004 for test by doxygen 1.3.7