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

cm.h

Go to the documentation of this file.
00001 /*++ BUILD Version: 0001 // Increment this if a change has global effects 00002 00003 Copyright (c) 1989 Microsoft Corporation 00004 00005 Module Name: 00006 00007 cm.h 00008 00009 Abstract: 00010 00011 This module contains the internal structure definitions and APIs 00012 used by the NT configuration management system, including the 00013 registry. 00014 00015 Author: 00016 00017 Bryan M. Willman (bryanwi) 28-Aug-91 00018 00019 00020 Revision History: 00021 00022 00023 --*/ 00024 00025 #ifndef _CM_ 00026 #define _CM_ 00027 00028 // 00029 // Define Names used to access the regsitry 00030 // 00031 00032 extern UNICODE_STRING CmRegistryRootName; // \REGISTRY 00033 extern UNICODE_STRING CmRegistryMachineName; // \REGISTRY\MACHINE 00034 extern UNICODE_STRING CmRegistryMachineHardwareName; // \REGISTRY\MACHINE\HARDWARE 00035 extern UNICODE_STRING CmRegistryMachineHardwareDescriptionName; 00036 // \REGISTRY\MACHINE\HARDWARE\DESCRIPTION 00037 extern UNICODE_STRING CmRegistryMachineHardwareDescriptionSystemName; 00038 // \REGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM 00039 extern UNICODE_STRING CmRegistryMachineHardwareDeviceMapName; 00040 // \REGISTRY\MACHINE\HARDWARE\DEVICEMAP 00041 extern UNICODE_STRING CmRegistryMachineHardwareResourceMapName; 00042 // \REGISTRY\MACHINE\HARDWARE\RESOURCEMAP 00043 extern UNICODE_STRING CmRegistryMachineHardwareOwnerMapName; 00044 // \REGISTRY\MACHINE\HARDWARE\OWNERMAP 00045 extern UNICODE_STRING CmRegistryMachineSystemName; 00046 // \REGISTRY\MACHINE\SYSTEM 00047 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSet; 00048 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET 00049 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetEnumName; 00050 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\ENUM 00051 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetEnumRootName; 00052 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\ENUM\ROOT 00053 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetServices; 00054 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES 00055 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetHardwareProfilesCurrent; 00056 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\HARDWARE PROFILES\CURRENT 00057 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlClass; 00058 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\CLASS 00059 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlSafeBoot; 00060 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\SAFEBOOT 00061 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlSessionManagerMemoryManagement; 00062 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\SESSION MANAGER\MEMORY MANAGEMENT 00063 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlBootLog; 00064 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\BOOTLOG 00065 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetServicesEventLog; 00066 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\EVENTLOG 00067 extern UNICODE_STRING CmRegistryUserName; // \REGISTRY\USER 00068 00069 #ifdef _WANT_MACHINE_IDENTIFICATION 00070 00071 extern UNICODE_STRING CmRegistryMachineSystemCurrentControlSetControlBiosInfo; 00072 // \REGISTRY\MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\BIOSINFO 00073 00074 #endif 00075 00076 // 00077 // The following strings will be used as the keynames for registry 00078 // nodes. 00079 // The associated enumerated type is CONFIGURATION_TYPE in arc.h 00080 // 00081 00082 extern UNICODE_STRING CmTypeName[]; 00083 extern PWSTR CmTypeString[]; 00084 00085 // 00086 // CmpClassString - contains strings which are used as the class 00087 // strings in the keynode. 00088 // The associated enumerated type is CONFIGURATION_CLASS in arc.h 00089 // 00090 00091 extern UNICODE_STRING CmClassName[]; 00092 extern PWSTR CmClassString[]; 00093 00094 00095 // 00096 // Define structure of boot driver list. 00097 // 00098 00099 typedef struct _BOOT_DRIVER_LIST_ENTRY { 00100 LIST_ENTRY Link; 00101 UNICODE_STRING FilePath; 00102 UNICODE_STRING RegistryPath; 00103 PLDR_DATA_TABLE_ENTRY LdrEntry; 00104 } BOOT_DRIVER_LIST_ENTRY, *PBOOT_DRIVER_LIST_ENTRY; 00105 00106 PHANDLE 00107 CmGetSystemDriverList( 00108 VOID 00109 ); 00110 00111 BOOLEAN 00112 CmInitSystem1( 00113 IN PLOADER_PARAMETER_BLOCK LoaderBlock 00114 ); 00115 00116 BOOLEAN 00117 CmInitSystem2( 00118 ); 00119 00120 VOID 00121 CmNotifyRunDown( 00122 PETHREAD Thread 00123 ); 00124 00125 VOID 00126 CmShutdownSystem( 00127 VOID 00128 ); 00129 00130 VOID 00131 CmBootLastKnownGood( 00132 ULONG ErrorLevel 00133 ); 00134 00135 00136 // 00137 // Stuctures and definitions for use with CmGetSystemControlValues 00138 // 00139 00140 // 00141 // NOTES: 00142 // KeyPath is relative to currentcontrolset. So, if the variable 00143 // of interest is 00144 // "\registry\machine\system\currentcontrolset\control\fruit\apple:x" 00145 // the entry is 00146 // { L"fruit\\apple", 00147 // L"x", 00148 // &Xbuffer, 00149 // sizeof(ULONG), 00150 // &Xtype 00151 // } 00152 // 00153 // *BufferLength is available space on input 00154 // on output: 00155 // -1 = no such key or value 00156 // 0 = key and value exist, but have 0 length data 00157 // > input = buffer too small, filled to available space, 00158 // value is actual size of data in registry 00159 // <= input = number of bytes copied out 00160 // 00161 typedef struct _CM_SYSTEM_CONTROL_VECTOR { 00162 PWSTR KeyPath; // path name relative to 00163 // current control set 00164 PWSTR ValueName; // name of value entry 00165 PVOID Buffer; // data goes here 00166 PULONG BufferLength; // IN: space allocated 00167 // OUT: space used, -1 for no such 00168 // key or value, 0 for key/value 00169 // found but has 0 length data 00170 // if NULL pointer, assume 4 bytes 00171 // (reg DWORD) available and do not 00172 // report actual size 00173 PULONG Type; // return type of found data, may 00174 // be NULL 00175 } CM_SYSTEM_CONTROL_VECTOR, *PCM_SYSTEM_CONTROL_VECTOR; 00176 00177 VOID 00178 CmGetSystemControlValues( 00179 PVOID SystemHiveBuffer, 00180 PCM_SYSTEM_CONTROL_VECTOR ControlVector 00181 ); 00182 00183 VOID 00184 CmQueryRegistryQuotaInformation( 00185 IN PSYSTEM_REGISTRY_QUOTA_INFORMATION RegistryQuotaInformation 00186 ); 00187 00188 VOID 00189 CmSetRegistryQuotaInformation( 00190 IN PSYSTEM_REGISTRY_QUOTA_INFORMATION RegistryQuotaInformation 00191 ); 00192 00193 00194 00195 typedef 00196 VOID 00197 (*PCM_TRACE_NOTIFY_ROUTINE)( 00198 IN NTSTATUS Status, 00199 IN HANDLE KeyHandle, 00200 IN LONGLONG ElapsedTime, 00201 IN PUNICODE_STRING KeyName, 00202 IN UCHAR Type 00203 ); 00204 00205 NTSTATUS 00206 CmSetTraceNotifyRoutine( 00207 IN PCM_TRACE_NOTIFY_ROUTINE NotifyRoutine, 00208 IN BOOLEAN Remove 00209 ); 00210 00211 00212 #endif // _CM_

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