test: cmdat.c Source File

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     };