ReactOS  0.4.15-dev-489-g75a0787
cm.h
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS Kernel
3  * LICENSE: GPL - See COPYING in the top level directory
4  * FILE: ntoskrnl/include/internal/cm.h
5  * PURPOSE: Internal header for the Configuration Manager
6  * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
7  */
8 #define _CM_
9 #include "cmlib.h"
10 #include <cmreslist.h>
11 
12 //
13 // Define this if you want debugging support
14 //
15 #define _CM_DEBUG_ 0x00
16 
17 //
18 // These define the Debug Masks Supported
19 //
20 #define CM_HANDLE_DEBUG 0x01
21 #define CM_NAMESPACE_DEBUG 0x02
22 #define CM_SECURITY_DEBUG 0x04
23 #define CM_REFERENCE_DEBUG 0x08
24 #define CM_CALLBACK_DEBUG 0x10
25 
26 //
27 // Debug/Tracing support
28 //
29 #if _CM_DEBUG_
30 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
31 #define CMTRACE DbgPrintEx
32 #else
33 #define CMTRACE(x, ...) \
34  if (x & CmpTraceLevel) DbgPrint(__VA_ARGS__)
35 #endif
36 #else
37 #define CMTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
38 #endif
39 
40 //
41 // Hack since bigkeys are not yet supported
42 //
43 #define ASSERT_VALUE_BIG(h, s) \
44  ASSERTMSG("Big keys not supported!\n", !CmpIsKeyValueBig(h, s));
45 
46 //
47 // CM_KEY_CONTROL_BLOCK Signatures
48 //
49 #define CM_KCB_SIGNATURE 'bKmC'
50 #define CM_KCB_INVALID_SIGNATURE '4FmC'
51 
52 //
53 // CM_KEY_CONTROL_BLOCK ExtFlags
54 //
55 #define CM_KCB_NO_SUBKEY 0x01
56 #define CM_KCB_SUBKEY_ONE 0x02
57 #define CM_KCB_SUBKEY_HINT 0x04
58 #define CM_KCB_SYM_LINK_FOUND 0x08
59 #define CM_KCB_KEY_NON_EXIST 0x10
60 #define CM_KCB_NO_DELAY_CLOSE 0x20
61 #define CM_KCB_INVALID_CACHED_INFO 0x40
62 #define CM_KCB_READ_ONLY_KEY 0x80
63 
64 //
65 // CM_KEY_BODY Types
66 //
67 #define CM_KEY_BODY_TYPE 0x6B793032
68 
69 //
70 // CM_KEY_VALUE Types
71 //
72 #define CM_KEY_VALUE_SMALL 0x4
73 #define CM_KEY_VALUE_BIG 0x3FD8
74 #define CM_KEY_VALUE_SPECIAL_SIZE 0x80000000
75 
76 //
77 // Number of various lists and hashes
78 //
79 #define CMP_SECURITY_HASH_LISTS 64
80 #define CMP_MAX_CALLBACKS 100
81 
82 //
83 // Hashing Constants
84 //
85 #define CMP_HASH_IRRATIONAL 314159269
86 #define CMP_HASH_PRIME 1000000007
87 
88 //
89 // CmpCreateKeyControlBlock Flags
90 //
91 #define CMP_CREATE_FAKE_KCB 0x1
92 #define CMP_LOCK_HASHES_FOR_KCB 0x2
93 
94 //
95 // CmpDoCreate and CmpDoOpen flags
96 //
97 #define CMP_CREATE_KCB_KCB_LOCKED 0x2
98 #define CMP_OPEN_KCB_NO_CREATE 0x4
99 
100 //
101 // EnlistKeyBodyWithKCB Flags
102 //
103 #define CMP_ENLIST_KCB_LOCKED_SHARED 0x1
104 #define CMP_ENLIST_KCB_LOCKED_EXCLUSIVE 0x2
105 
106 //
107 // Unload Flags
108 //
109 #define CMP_UNLOCK_KCB_LOCKED 0x1
110 #define CMP_UNLOCK_REGISTRY_LOCKED 0x2
111 
112 //
113 // Maximum size of Value Cache
114 //
115 #define MAXIMUM_CACHED_DATA 2 * PAGE_SIZE
116 
117 //
118 // Hives to load on startup
119 //
120 #define CM_NUMBER_OF_MACHINE_HIVES 6
121 
122 //
123 // Number of items that can fit inside an Allocation Page
124 //
125 #define CM_KCBS_PER_PAGE \
126  ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_KEY_CONTROL_BLOCK))
127 #define CM_DELAYS_PER_PAGE \
128  ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_DELAY_ALLOC))
129 
130 //
131 // Value Search Results
132 //
134 {
139 
140 //
141 // Key Hash
142 //
143 typedef struct _CM_KEY_HASH
144 {
150 
151 //
152 // Key Hash Table Entry
153 //
155 {
160 
161 //
162 // Name Hash
163 //
164 typedef struct _CM_NAME_HASH
165 {
171 
172 //
173 // Name Hash Table Entry
174 //
176 {
180 
181 //
182 // Key Security Cache
183 //
185 {
192 
193 //
194 // Key Security Cache Entry
195 //
197 {
201 
202 //
203 // Cached Child List
204 //
205 typedef struct _CACHED_CHILD_LIST
206 {
208  union
209  {
212  };
214 
215 //
216 // Index Hint Block
217 //
218 typedef struct _CM_INDEX_HINT_BLOCK
219 {
223 
224 //
225 // Key Body
226 //
227 typedef struct _CM_KEY_BODY
228 {
235 
236 //
237 // Name Control Block (NCB)
238 //
240 {
243  union
244  {
246  struct
247  {
252  };
253  };
255 
256 //
257 // Key Control Block (KCB)
258 //
259 typedef struct _CM_KEY_CONTROL_BLOCK
260 {
263  struct
264  {
270  };
271  union
272  {
274  struct
275  {
280  };
281  };
286  union
287  {
291  };
292  union
293  {
296  };
303  struct
304  {
308  ULONG Flags : 16;
309  };
312 
313 //
314 // Notify Block
315 //
316 typedef struct _CM_NOTIFY_BLOCK
317 {
326 
327 //
328 // Re-map Block
329 //
330 typedef struct _CM_CELL_REMAP_BLOCK
331 {
335 
336 //
337 // Allocation Page
338 //
339 typedef struct _CM_ALLOC_PAGE
340 {
345 
346 //
347 // Allocation Page Entry
348 //
349 typedef struct _CM_DELAY_ALLOC
350 {
354 
355 //
356 // Delayed Close Entry
357 //
359 {
363 
364 //
365 // Delayed KCB Dereference Entry
366 //
368 {
372 
373 //
374 // Use Count Log and Entry
375 //
377 {
381 
382 typedef struct _CM_USE_COUNT_LOG
383 {
388 
389 //
390 // Configuration Manager Hive Structure
391 //
392 typedef struct _CMHIVE
393 {
436 } CMHIVE, *PCMHIVE;
437 
438 //
439 // Cached Value Index
440 //
442 {
444  union
445  {
448  } Data;
450 
451 //
452 // Cached Value
453 //
454 typedef struct _CM_CACHED_VALUE
455 {
461 
462 //
463 // Hive List Entry
464 //
465 typedef struct _HIVE_LIST_ENTRY
466 {
477 
478 //
479 // Parse context for Key Object
480 //
481 typedef struct _CM_PARSE_CONTEXT
482 {
493 
494 //
495 // MultiFunction Adapter Recognizer Structure
496 //
497 typedef struct _CMP_MF_TYPE
498 {
503 
504 //
505 // System Control Vector
506 //
508 {
515 
516 //
517 // Structure for CmpQueryValueDataFromCache
518 //
520 {
521  union
522  {
527  };
529 
530 typedef struct _KEY_INFORMATION
531 {
532  union
533  {
537  };
539 
541 //
542 // BUGBUG Old Hive Stuff for Temporary Support
543 //
546 
547 //
548 // Mapped View Hive Functions
549 //
550 VOID
551 NTAPI
553  IN PCMHIVE Hive
554 );
555 
556 VOID
557 NTAPI
559  IN PCMHIVE Hive
560 );
561 
562 //
563 // Security Cache Functions
564 //
565 VOID
566 NTAPI
568  IN PCMHIVE Hive
569 );
570 
571 VOID
572 NTAPI
574  IN PCMHIVE Hive
575 );
576 
577 //
578 // Value Cache Functions
579 //
581 NTAPI
585  OUT PCM_CACHED_VALUE **CachedValue,
586  OUT ULONG *Index,
588  OUT BOOLEAN *ValueIsCached,
589  OUT PHCELL_INDEX CellToRelease
590 );
591 
593 NTAPI
596  IN PCM_CACHED_VALUE *CachedValue,
597  IN PCM_KEY_VALUE ValueKey,
598  IN BOOLEAN ValueIsCached,
600  IN PVOID KeyValueInformation,
601  IN ULONG Length,
604 );
605 
607 NTAPI
610  OUT PCELL_DATA *CellData,
611  OUT BOOLEAN *IndexIsCached,
612  OUT PHCELL_INDEX ValueListToRelease
613 );
614 
616 NTAPI
619  IN PCELL_DATA CellData,
620  IN ULONG Index,
621  OUT PCM_CACHED_VALUE **CachedValue,
623  IN BOOLEAN IndexIsCached,
624  OUT BOOLEAN *ValueIsCached,
625  OUT PHCELL_INDEX CellToRelease
626 );
627 
629 NTAPI
633  IN ULONG Type,
634  IN PVOID Data,
636 );
637 
638 //
639 // Registry Validation Functions
640 //
641 ULONG
642 NTAPI
644  IN PCMHIVE Hive,
645  IN ULONG Flags
646 );
647 
648 //
649 // Hive List Routines
650 //
651 BOOLEAN
652 NTAPI
654  IN PCMHIVE Hive,
655  OUT PUNICODE_STRING HiveName
656 );
657 
658 NTSTATUS
659 NTAPI
661  IN PCMHIVE Hive
662 );
663 
664 VOID
665 NTAPI
667  IN PCMHIVE Hive
668 );
669 
670 //
671 // Quota Routines
672 //
673 VOID
674 NTAPI
676  VOID
677 );
678 
679 //
680 // Notification Routines
681 //
682 VOID
683 NTAPI
686  IN PHHIVE Hive,
687  IN HCELL_INDEX Cell,
688  IN ULONG Filter
689 );
690 
691 VOID
692 NTAPI
694  IN PCM_KEY_BODY KeyBody,
695  IN BOOLEAN LockHeld
696 );
697 
698 INIT_FUNCTION
699 VOID
700 NTAPI
702  VOID
703 );
704 
705 //
706 // KCB Cache/Delay Routines
707 //
708 INIT_FUNCTION
709 VOID
710 NTAPI
712  VOID
713 );
714 
715 INIT_FUNCTION
716 VOID
717 NTAPI
719  VOID
720 );
721 
722 INIT_FUNCTION
723 VOID
724 NTAPI
726  VOID
727 );
728 
729 INIT_FUNCTION
730 VOID
731 NTAPI
733  VOID
734 );
735 
736 //
737 // Key Object Routines
738 //
739 VOID
740 NTAPI
743  IN PVOID Object,
746  IN ULONG SystemHandleCount
747 );
748 
749 VOID
750 NTAPI
752  IN PVOID Object
753 );
754 
755 NTSTATUS
756 NTAPI
758  IN PVOID ParseObject,
763  IN OUT PUNICODE_STRING CompleteName,
767  OUT PVOID *Object
768 );
769 
770 NTSTATUS
771 NTAPI
773  IN PVOID Object,
774  IN SECURITY_OPERATION_CODE OperationType,
777  IN OUT PULONG CapturedLength,
778  IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor,
781 );
782 
783 NTSTATUS
784 NTAPI
786  IN PVOID Object,
787  IN BOOLEAN HasObjectName,
788  OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
789  IN ULONG Length,
792 );
793 
794 //
795 // Hive Routines
796 //
797 NTSTATUS
798 NTAPI
800  OUT PCMHIVE *CmHive,
801  IN ULONG OperationType,
802  IN ULONG HiveFlags,
803  IN ULONG FileType,
804  IN PVOID HiveData OPTIONAL,
805  IN HANDLE Primary,
806  IN HANDLE Log,
809  IN ULONG CheckFlags
810 );
811 
812 NTSTATUS
813 NTAPI
816 );
817 
819 NTAPI
821  VOID
822 );
823 
824 NTSTATUS
825 NTAPI
827  IN PUNICODE_STRING LinkName,
829  IN PCMHIVE CmHive,
832 );
833 
834 NTSTATUS
835 NTAPI
837  IN PCUNICODE_STRING BaseName,
839  OUT PHANDLE Primary,
840  OUT PHANDLE Log,
841  OUT PULONG PrimaryDisposition,
842  OUT PULONG LogDisposition,
843  IN BOOLEAN CreateAllowed,
844  IN BOOLEAN MarkAsSystemHive,
845  IN BOOLEAN NoBuffering,
847 );
848 
849 VOID
850 NTAPI
852  IN PCMHIVE Hive
853 );
854 
855 NTSTATUS
856 NTAPI
858  IN PCUNICODE_STRING HiveName,
859  IN ULONG HiveFlags,
860  OUT PCMHIVE *Hive,
861  IN OUT PBOOLEAN New,
862  IN ULONG CheckFlags
863 );
864 
865 VOID
866 NTAPI
868  VOID
869 );
870 
871 //
872 // Registry Utility Functions
873 //
874 BOOLEAN
875 NTAPI
877  VOID
878 );
879 
880 BOOLEAN
881 NTAPI
883  VOID
884 );
885 
886 VOID
887 NTAPI
889  VOID
890 );
891 
892 VOID
893 NTAPI
895  VOID
896 );
897 
898 VOID
899 NTAPI
901  VOID
902 );
903 
904 VOID
905 NTAPI
907  IN PCMHIVE Hive
908 );
909 
910 VOID
911 NTAPI
913  IN PCMHIVE Hive
914 );
915 
916 BOOLEAN
917 NTAPI
919  IN PCMHIVE Hive
920 );
921 
922 BOOLEAN
923 NTAPI
925  IN PCMHIVE Hive
926 );
927 
928 VOID
929 NTAPI
931  IN PCMHIVE Hive
932 );
933 
934 //
935 // Delay Functions
936 //
937 PVOID
938 NTAPI
940  VOID
941 );
942 
943 VOID
944 NTAPI
946  PVOID Entry
947 );
948 
949 VOID
950 NTAPI
953 );
954 
955 VOID
956 NTAPI
959  IN BOOLEAN LockHeldExclusively
960 );
961 
962 VOID
963 NTAPI
965  VOID
966 );
967 
968 VOID
969 NTAPI
971 
972 INIT_FUNCTION
973 VOID
974 NTAPI
976  VOID
977 );
978 
979 //
980 // KCB Functions
981 //
983 NTAPI
985  IN PHHIVE Hive,
989  IN ULONG Flags,
991 );
992 
994 NTAPI
996  VOID
997 );
998 
999 VOID
1000 NTAPI
1003 );
1004 
1005 VOID
1006 NTAPI
1009 );
1010 
1011 VOID
1012 NTAPI
1015 );
1016 
1017 VOID
1018 NTAPI
1021  IN BOOLEAN LockHeldExclusively
1022 );
1023 
1024 VOID
1025 NTAPI
1028 );
1029 
1031 NTAPI
1034 );
1035 
1036 BOOLEAN
1037 NTAPI
1040 );
1041 
1042 VOID
1043 NTAPI
1046  IN BOOLEAN LockHeldExclusively
1047 );
1048 
1049 VOID
1050 NTAPI
1053 );
1054 
1055 VOID
1056 NTAPI
1058  IN PCM_KEY_BODY KeyObject,
1059  IN ULONG Flags
1060 );
1061 
1062 VOID
1063 NTAPI
1065  IN PCM_KEY_BODY KeyBody,
1066  IN BOOLEAN LockHeld
1067 );
1068 
1069 VOID
1070 NTAPI
1072  IN ULONG ConvKey1,
1073  IN ULONG ConvKey2
1074 );
1075 
1076 VOID
1077 NTAPI
1079  IN ULONG ConvKey1,
1080  IN ULONG ConvKey2
1081 );
1082 
1083 VOID
1084 NTAPI
1087  IN BOOLEAN LockHeld
1088 );
1089 
1090 //
1091 // Parse Routines
1092 //
1093 BOOLEAN
1094 NTAPI
1097  OUT PUNICODE_STRING NextName,
1098  OUT PBOOLEAN LastName
1099 );
1100 
1101 //
1102 // Command Routines (Flush, Open, Close, Init);
1103 //
1104 BOOLEAN
1105 NTAPI
1107  IN BOOLEAN ForceFlush
1108 );
1109 
1110 VOID
1111 NTAPI
1113  VOID
1114 );
1115 
1116 VOID
1117 NTAPI
1118 CmpCmdInit(
1119  IN BOOLEAN SetupBoot
1120 );
1121 
1122 NTSTATUS
1123 NTAPI
1126  IN PSECURITY_CLIENT_CONTEXT ImpersonationContext,
1128  OUT PCMHIVE *NewHive,
1129  IN ULONG CheckFlags
1130 );
1131 
1132 VOID
1133 NTAPI
1134 CmpLazyFlush(
1135  VOID
1136 );
1137 
1138 //
1139 // Open/Create Routines
1140 //
1141 NTSTATUS
1142 NTAPI
1143 CmpDoCreate(
1144  IN PHHIVE Hive,
1145  IN HCELL_INDEX Cell,
1150  IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1151  OUT PVOID *Object
1152 );
1153 
1154 NTSTATUS
1155 NTAPI
1157  IN PHHIVE Hive,
1158  IN HCELL_INDEX Cell,
1164  IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1165  OUT PVOID *Object
1166 );
1167 
1168 //
1169 // Boot Routines
1170 //
1171 INIT_FUNCTION
1173 NTAPI
1176  IN HCELL_INDEX RootCell,
1177  IN PUNICODE_STRING SelectKeyName,
1178  OUT PBOOLEAN AutoSelect
1179 );
1180 
1181 INIT_FUNCTION
1182 VOID
1183 NTAPI
1185  IN PVOID SystemHiveData,
1186  IN PCM_SYSTEM_CONTROL_VECTOR ControlVector
1187 );
1188 
1189 NTSTATUS
1190 NTAPI
1192  IN USHORT ControlSet
1193 );
1194 
1195 //
1196 // Hardware Configuration Routines
1197 //
1198 INIT_FUNCTION
1199 NTSTATUS
1200 NTAPI
1202  IN PCONFIGURATION_COMPONENT_DATA CurrentEntry,
1204  OUT PHANDLE NewHandle,
1205  IN INTERFACE_TYPE InterfaceType,
1206  IN ULONG BusNumber,
1207  IN PUSHORT DeviceIndexTable
1208 );
1209 
1210 NTSTATUS
1211 NTAPI
1213  IN PLOADER_PARAMETER_BLOCK LoaderBlock
1214 );
1215 
1216 INIT_FUNCTION
1217 NTSTATUS
1218 NTAPI
1220  IN PLOADER_PARAMETER_BLOCK LoaderBlock
1221 );
1222 
1223 //
1224 // Wrapper Routines
1225 //
1226 NTSTATUS
1227 NTAPI
1231  OUT PKEVENT *Event
1232 );
1233 
1234 PVOID
1235 NTAPI
1236 CmpAllocate(
1237  IN SIZE_T Size,
1238  IN BOOLEAN Paged,
1239  IN ULONG Tag
1240 );
1241 
1242 VOID
1243 NTAPI
1244 CmpFree(
1245  IN PVOID Ptr,
1246  IN ULONG Quota
1247 );
1248 
1249 BOOLEAN
1250 NTAPI
1251 CmpFileRead(
1252  IN PHHIVE RegistryHive,
1253  IN ULONG FileType,
1255  OUT PVOID Buffer,
1257 );
1258 
1259 BOOLEAN
1260 NTAPI
1261 CmpFileWrite(
1262  IN PHHIVE RegistryHive,
1263  IN ULONG FileType,
1265  IN PVOID Buffer,
1267 );
1268 
1269 BOOLEAN
1270 NTAPI
1272  IN PHHIVE RegistryHive,
1273  IN ULONG FileType,
1274  IN ULONG FileSize,
1275  IN ULONG OldFileSize
1276 );
1277 
1278 BOOLEAN
1279 NTAPI
1280 CmpFileFlush(
1281  IN PHHIVE RegistryHive,
1282  IN ULONG FileType,
1284  IN ULONG Length
1285 );
1286 
1287 //
1288 // Configuration Manager side of Registry System Calls
1289 //
1290 NTSTATUS
1291 NTAPI
1294  IN ULONG Index,
1296  IN PVOID KeyValueInformation,
1297  IN ULONG Length,
1299 
1300 NTSTATUS
1301 NTAPI
1305  IN ULONG Type,
1306  IN PVOID Data,
1307  IN ULONG DataSize);
1308 
1309 NTSTATUS
1310 NTAPI
1313  IN PVOID KeyInformation,
1314  IN ULONG Length,
1316 );
1317 
1318 NTSTATUS
1319 NTAPI
1321  IN ULONG Index,
1323  IN PVOID KeyInformation,
1324  IN ULONG Length,
1326 );
1327 
1328 NTSTATUS
1329 NTAPI
1330 CmDeleteKey(
1331  IN PCM_KEY_BODY KeyBody
1332 );
1333 
1334 NTSTATUS
1335 NTAPI
1336 CmFlushKey(
1338  IN BOOLEAN EclusiveLock
1339 );
1340 
1341 NTSTATUS
1342 NTAPI
1346 );
1347 
1348 NTSTATUS
1349 NTAPI
1354  IN PVOID KeyValueInformation,
1355  IN ULONG Length,
1357 );
1358 
1359 NTSTATUS
1360 NTAPI
1361 CmLoadKey(
1362  IN POBJECT_ATTRIBUTES TargetKey,
1363  IN POBJECT_ATTRIBUTES SourceFile,
1364  IN ULONG Flags,
1365  IN PCM_KEY_BODY KeyBody
1366 );
1367 
1368 NTSTATUS
1369 NTAPI
1370 CmUnloadKey(
1372  IN ULONG Flags
1373 );
1374 
1375 ULONG
1376 NTAPI
1378  IN PCM_KEY_CONTROL_BLOCK RootKcb,
1379  IN BOOLEAN RemoveEmptyCacheEntries,
1380  IN BOOLEAN DereferenceOpenedEntries
1381 );
1382 
1384 NTAPI
1385 CmpCopyCell(
1386  IN PHHIVE SourceHive,
1387  IN HCELL_INDEX SourceCell,
1388  IN PHHIVE DestinationHive,
1389  IN HSTORAGE_TYPE StorageType
1390 );
1391 
1392 NTSTATUS
1393 NTAPI
1395  IN PHHIVE SourceHive,
1396  IN HCELL_INDEX SrcKeyCell,
1397  IN PHHIVE DestinationHive,
1398  IN HSTORAGE_TYPE StorageType,
1399  OUT PHCELL_INDEX DestKeyCell OPTIONAL
1400 );
1401 
1402 NTSTATUS
1403 NTAPI
1404 CmSaveKey(
1407  IN ULONG Flags
1408 );
1409 
1410 NTSTATUS
1411 NTAPI
1413  IN PCM_KEY_CONTROL_BLOCK HighKcb,
1414  IN PCM_KEY_CONTROL_BLOCK LowKcb,
1416 );
1417 
1418 //
1419 // Startup and Shutdown
1420 //
1421 INIT_FUNCTION
1422 BOOLEAN
1423 NTAPI
1425  VOID
1426 );
1427 
1428 VOID
1429 NTAPI
1431  VOID
1432 );
1433 
1434 VOID
1435 NTAPI
1437  IN BOOLEAN Enable
1438 );
1439 
1440 VOID
1441 NTAPI
1443  VOID
1444 );
1445 
1446 //
1447 // Driver List Routines
1448 //
1449 INIT_FUNCTION
1451 NTAPI
1453  VOID
1454 );
1455 
1456 INIT_FUNCTION
1457 BOOLEAN
1458 NTAPI
1460  IN PHHIVE Hive,
1461  IN HCELL_INDEX ControlSet,
1462  IN SERVICE_LOAD_TYPE LoadType,
1463  IN PWSTR BootFileSystem OPTIONAL,
1464  IN PLIST_ENTRY DriverListHead
1465 );
1466 
1467 INIT_FUNCTION
1468 BOOLEAN
1469 NTAPI
1471  IN PHHIVE Hive,
1472  IN HCELL_INDEX ControlSet,
1473  IN PLIST_ENTRY DriverListHead
1474 );
1475 
1476 INIT_FUNCTION
1477 BOOLEAN
1478 NTAPI
1480  IN PLIST_ENTRY DriverListHead
1481 );
1482 
1483 INIT_FUNCTION
1484 BOOLEAN
1485 NTAPI
1486 CmpIsSafe(
1487  IN PHHIVE Hive,
1488  IN HCELL_INDEX SafeBootCell,
1489  IN HCELL_INDEX DriverCell);
1490 
1491 //
1492 // Global variables accessible from all of Cm
1493 //
1494 extern ULONG CmpTraceLevel;
1498 extern BOOLEAN CmpMiniNTBoot;
1503 extern ERESOURCE CmpRegistryLock;
1507 extern CMHIVE CmControlHive;
1508 extern WCHAR CmDefaultLanguageId[];
1511 extern WCHAR CmInstallUILanguageId[];
1514 extern ULONG CmNtGlobalFlag;
1520 extern UNICODE_STRING CmTypeName[];
1521 extern UNICODE_STRING CmClassName[];
1523 extern USHORT CmpUnknownBusCount;
1524 extern ULONG CmpTypeCount[MaximumType + 1];
1529 extern BOOLEAN CmSelfHeal;
1530 extern BOOLEAN CmpSelfHeal;
1531 extern ULONG CmpBootType;
1534 extern BOOLEAN InitIsWinPEMode;
1535 extern ULONG CmpHashTableSize;
1537 extern BOOLEAN CmpNoWrite;
1539 extern BOOLEAN CmpWasSetupBoot;
1540 extern BOOLEAN CmpProfileLoaded;
1541 extern PCMHIVE CmiVolatileHive;
1543 extern BOOLEAN CmpHoldLazyFlush;
1544 
1545 //
1546 // Inlined functions
1547 //
1548 #include "cm_x.h"
struct _CM_SYSTEM_CONTROL_VECTOR * PCM_SYSTEM_CONTROL_VECTOR
PKGUARDED_MUTEX ViewLock
Definition: cm.h:400
IN CINT OUT PVOID IN ULONG OUT PULONG ResultLength
Definition: conport.c:47
NTSTATUS NTAPI CmpDeepCopyKey(IN PHHIVE SourceHive, IN HCELL_INDEX SrcKeyCell, IN PHHIVE DestinationHive, IN HSTORAGE_TYPE StorageType, OUT PHCELL_INDEX DestKeyCell OPTIONAL)
Definition: cmapi.c:2620
UNICODE_STRING CmClassName[]
Definition: cmdata.c:68
signed char * PCHAR
Definition: retypes.h:7
struct _CM_NAME_HASH CM_NAME_HASH
NTSTATUS NTAPI CmpOpenHiveFiles(IN PCUNICODE_STRING BaseName, IN PCWSTR Extension OPTIONAL, OUT PHANDLE Primary, OUT PHANDLE Log, OUT PULONG PrimaryDisposition, OUT PULONG LogDisposition, IN BOOLEAN CreateAllowed, IN BOOLEAN MarkAsSystemHive, IN BOOLEAN NoBuffering, OUT PULONG ClusterSize OPTIONAL)
Definition: cminit.c:266
VOID NTAPI CmpFlushNotifiesOnKeyBodyList(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeld)
Definition: cmkcbncb.c:1140
* PNTSTATUS
Definition: strlen.c:14
BOOLEAN NTAPI CmpTestRegistryLockExclusive(VOID)
Definition: cmsysini.c:1935
ObjectType
Definition: metafile.c:80
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING KeyName
Definition: ndis.h:4711
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
Definition: dumpinfo.c:39
LIST_ENTRY TrustClassEntry
Definition: cm.h:432
PCHAR Identifier
Definition: cm.h:499
ULONG ConvKey
Definition: cm.h:166
const uint16_t * PCWSTR
Definition: typedefs.h:56
NTSTATUS NTAPI CmpCreateEvent(IN EVENT_TYPE EventType, OUT PHANDLE EventHandle, OUT PKEVENT *Event)
Definition: cmwraprs.c:19
#define IN
Definition: typedefs.h:39
NTSTATUS NTAPI CmpCmdHiveOpen(IN POBJECT_ATTRIBUTES FileAttributes, IN PSECURITY_CLIENT_CONTEXT ImpersonationContext, IN OUT PBOOLEAN Allocate, OUT PCMHIVE *NewHive, IN ULONG CheckFlags)
Definition: cmlazy.c:272
struct _CMHIVE * PCMHIVE
UNICODE_STRING CmpSystemStartOptions
PCM_KEY_BODY KeyBody
Definition: cm.h:321
PVOID AllocPage
Definition: cm.h:343
BOOLEAN NTAPI CmpGetHiveName(IN PCMHIVE Hive, OUT PUNICODE_STRING HiveName)
Definition: cmhvlist.c:24
VALUE_SEARCH_RETURN_TYPE NTAPI CmpQueryKeyValueData(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PCM_CACHED_VALUE *CachedValue, IN PCM_KEY_VALUE ValueKey, IN BOOLEAN ValueIsCached, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength, OUT PNTSTATUS Status)
Definition: cmvalche.c:327
PKTHREAD Owner
Definition: cm.h:157
PWORK_QUEUE_ITEM UnloadWorkItem
Definition: cm.h:423
VOID NTAPI CmpLockHiveFlusherExclusive(IN PCMHIVE Hive)
Definition: cmsysini.c:1943
PCM_KEY_BODY KeyBodyArray[4]
Definition: cm.h:297
struct _CM_USE_COUNT_LOG * PCM_USE_COUNT_LOG
ULONG CmHiveFlags
Definition: cm.h:471
VOID NTAPI CmpDereferenceKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:571
enum _INTERFACE_TYPE INTERFACE_TYPE
struct _CM_SYSTEM_CONTROL_VECTOR CM_SYSTEM_CONTROL_VECTOR
USHORT Count
Definition: cm.h:501
Definition: cm.h:137
_IRQL_requires_same_ _In_opt_ PVOID Argument1
Definition: cmtypes.h:696
Type
Definition: Type.h:6
struct _CM_NAME_CONTROL_BLOCK CM_NAME_CONTROL_BLOCK
EX_PUSH_LOCK Lock
Definition: cm.h:156
VOID NTAPI DelistKeyBodyFromKCB(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
Definition: cmkcbncb.c:1101
PVOID Stack[7]
Definition: cm.h:379
struct _KEY_INFORMATION * PKEY_INFORMATION
WCHAR RootDirectory[MAX_PATH]
Definition: format.c:74
HCELL_INDEX OldCell
Definition: cm.h:332
BOOLEAN ThreadStarted
Definition: cm.h:474
ULONG FreeCount
Definition: cm.h:341
NTSTATUS CmiCallRegisteredCallbacks(IN REG_NOTIFY_CLASS Argument1, IN PVOID Argument2)
Definition: cmhook.c:59
INIT_FUNCTION BOOLEAN NTAPI CmInitSystem1(VOID)
Definition: cmsysini.c:1511
_In_ ULONG _In_ KEY_INFORMATION_CLASS KeyInformationClass
Definition: zwfuncs.h:166
enum _KEY_INFORMATION_CLASS KEY_INFORMATION_CLASS
ULONG Signature
Definition: cm.h:261
ULONG ExtFlags
Definition: cm.h:265
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
UNICODE_STRING CmSymbolicLinkValueName
Definition: cmdata.c:52
HCELL_INDEX NewCell
Definition: cm.h:333
UNICODE_STRING CmTypeName[]
Definition: cmdata.c:80
struct _CM_KEY_CONTROL_BLOCK * ParentKcb
Definition: cm.h:282
struct _CM_KEY_HASH_TABLE_ENTRY CM_KEY_HASH_TABLE_ENTRY
EX_PUSH_LOCK CmpHiveListHeadLock
Definition: cmdata.c:39
LONG SecurityHitHint
Definition: cm.h:417
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
uint16_t * PWSTR
Definition: typedefs.h:55
CACHED_CHILD_LIST ValueCache
Definition: cm.h:285
NTSTATUS NTAPI CmpParseKey(IN PVOID ParseObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING CompleteName, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context OPTIONAL, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *Object)
Definition: cmparse.c:1024
BOOLEAN CmpNoWrite
Definition: cmsysini.c:29
LIST_ENTRY NotifyList
Definition: cm.h:396
CM_USE_COUNT_LOG_ENTRY Log[32]
Definition: cm.h:386
ULONG NotifyPending
Definition: cm.h:324
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
Definition: fsrtlfuncs.h:898
struct _CM_CACHED_VALUE_INDEX CM_CACHED_VALUE_INDEX
ULONG SecurityCount
Definition: cm.h:415
ULONG CmNtGlobalFlag
Definition: cmdata.c:19
PCM_KEY_CONTROL_BLOCK NTAPI CmpCreateKeyControlBlock(IN PHHIVE Hive, IN HCELL_INDEX Index, IN PCM_KEY_NODE Node, IN PCM_KEY_CONTROL_BLOCK Parent, IN ULONG Flags, IN PUNICODE_STRING KeyName)
Definition: cmkcbncb.c:655
enum _CM_SERVICE_LOAD_TYPE SERVICE_LOAD_TYPE
LONG NTSTATUS
Definition: precomp.h:26
struct _CM_NAME_HASH * PCM_NAME_HASH
INIT_FUNCTION VOID NTAPI CmGetSystemControlValues(IN PVOID SystemHiveData, IN PCM_SYSTEM_CONTROL_VECTOR ControlVector)
Definition: cmcontrl.c:104
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
Definition: ntddpcm.h:140
ULONG ConvKey
Definition: cm.h:145
VOID NTAPI CmpAddToDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmdelay.c:350
ERESOURCE CmpRegistryLock
Definition: cmsysini.c:19
NTSTATUS NTAPI CmSetValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PUNICODE_STRING ValueName, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
Definition: cmapi.c:644
NTSTATUS NTAPI CmpAddToHiveFileList(IN PCMHIVE Hive)
Definition: cmhvlist.c:130
struct _CM_NAME_CONTROL_BLOCK * PCM_NAME_CONTROL_BLOCK
#define New(t)
Definition: rtf.h:1086
ULONG ValueList
Definition: cm.h:210
HCELL_INDEX KeyCell
Definition: cm.h:279
BOOLEAN CmpFlushOnLockRelease
Definition: cmsysini.c:27
ULONG NTAPI CmCheckRegistry(IN PCMHIVE Hive, IN ULONG Flags)
Definition: cmcheck.c:21
VOID NTAPI CmpCmdInit(IN BOOLEAN SetupBoot)
Definition: cmlazy.c:234
VOID NTAPI CmpShutdownWorkers(VOID)
Definition: cmlazy.c:433
BOOLEAN Frozen
Definition: cm.h:422
BOOLEAN CmpNoVolatileCreates
Definition: cmsysini.c:32
CM_USE_COUNT_LOG UseCountLog
Definition: cm.h:429
PCMHIVE CmHive
Definition: cm.h:469
BOOLEAN NTAPI CmpFileRead(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PULONG FileOffset, OUT PVOID Buffer, IN SIZE_T BufferLength)
VALUE_SEARCH_RETURN_TYPE NTAPI CmpGetValueListFromCache(IN PCM_KEY_CONTROL_BLOCK Kcb, OUT PCELL_DATA *CellData, OUT BOOLEAN *IndexIsCached, OUT PHCELL_INDEX ValueListToRelease)
Definition: cmvalche.c:44
ULONG CmpDelayedCloseIndex
ULONG Flags
Definition: cm.h:431
VOID NTAPI CmpCloseHiveFiles(IN PCMHIVE Hive)
Definition: cminit.c:631
LIST_ENTRY KeyBodyList
Definition: cm.h:233
ULONG FlushCount
Definition: cm.h:433
VOID NTAPI CmpDelayDerefKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmdelay.c:286
UNICODE_STRING CmpLoadOptions
Definition: cmdata.c:55
BOOLEAN NTAPI CmpFileWrite(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PULONG FileOffset, IN PVOID Buffer, IN SIZE_T BufferLength)
struct _CM_INDEX_HINT_BLOCK * PCM_INDEX_HINT_BLOCK
struct _CM_NOTIFY_BLOCK CM_NOTIFY_BLOCK
WORD LANGID
Definition: typedefs.h:80
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
Definition: acpixf.h:728
HCELL_INDEX CellIndex
Definition: cm.h:443
PCM_NAME_CONTROL_BLOCK NameBlock
Definition: cm.h:283
EX_PUSH_LOCK SecurityLock
Definition: cm.h:405
BOOLEAN InitIsWinPEMode
Definition: init.c:70
uint16_t * PWCHAR
Definition: typedefs.h:55
struct _CM_NAME_HASH_TABLE_ENTRY * PCM_NAME_HASH_TABLE_ENTRY
_In_ PKSNODE_CREATE _In_ ACCESS_MASK _Out_ PHANDLE NodeHandle
Definition: ks.h:4546
PKTHREAD HiveLockOwner
Definition: cm.h:399
PUNICODE_STRING NTAPI CmpConstructName(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:897
PCM_KEY_HASH_TABLE_ENTRY CmpCacheTable
Definition: cmkcbncb.c:18
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:361
USHORT PinnedViews
Definition: cm.h:413
ULONG TotalLevels
Definition: cm.h:269
INIT_FUNCTION BOOLEAN NTAPI CmpSortDriverList(IN PHHIVE Hive, IN HCELL_INDEX ControlSet, IN PLIST_ENTRY DriverListHead)
Definition: cmboot.c:562
struct _CM_NOTIFY_BLOCK * NotifyBlock
Definition: cm.h:231
ULONG CreateOptions
Definition: cm.h:485
KEY_FULL_INFORMATION KeyFullInformation
Definition: cm.h:535
CMP_MF_TYPE CmpMultifunctionTypes[]
Definition: cmdata.c:126
INIT_FUNCTION HCELL_INDEX NTAPI CmpFindControlSet(IN PHHIVE SystemHive, IN HCELL_INDEX RootCell, IN PUNICODE_STRING SelectKeyName, OUT PBOOLEAN AutoSelect)
Definition: cmboot.c:25
LARGE_INTEGER KcbLastWriteTime
Definition: cm.h:299
KEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInformation
Definition: cm.h:525
BOOLEAN CmpMiniNTBoot
Definition: cmdata.c:60
_In_opt_ PALLOCATE_FUNCTION Allocate
Definition: exfuncs.h:814
NTSTATUS NTAPI CmpSecurityMethod(IN PVOID Object, IN SECURITY_OPERATION_CODE OperationType, IN PSECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG CapturedLength, IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor, IN POOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping)
VOID NTAPI CmpFreeDelayItem(PVOID Entry)
Definition: cmalloc.c:266
struct _CACHED_CHILD_LIST CACHED_CHILD_LIST
BOOLEAN NTAPI CmpTestHiveFlusherLockExclusive(IN PCMHIVE Hive)
Definition: cmsysini.c:1985
ULONG KcbVirtControlFlags
Definition: cm.h:306
struct _CM_KEY_SECURITY_CACHE CM_KEY_SECURITY_CACHE
#define CMP_SECURITY_HASH_LISTS
Definition: cm.h:79
IN UCHAR Value
Definition: halp.h:394
HANDLE ProcessID
Definition: cm.h:232
UNICODE_STRING FileUserName
Definition: cm.h:411
uint32_t ULONG_PTR
Definition: typedefs.h:64
ULONG HashKey[ANYSIZE_ARRAY]
Definition: cm.h:221
ULONG_PTR List[ANYSIZE_ARRAY]
Definition: cm.h:447
struct _CM_PARSE_CONTEXT CM_PARSE_CONTEXT
NTSTATUS NTAPI CmLoadKey(IN POBJECT_ATTRIBUTES TargetKey, IN POBJECT_ATTRIBUTES SourceFile, IN ULONG Flags, IN PCM_KEY_BODY KeyBody)
Definition: cmapi.c:2004
VOID NTAPI CmpUnlockHiveFlusher(IN PCMHIVE Hive)
Definition: cmsysini.c:1965
ULONG PrivateAlloc
Definition: cm.h:266
HCELL_INDEX KeyCell
Definition: cm.h:148
ULONG DescriptorLength
Definition: cm.h:189
struct _HIVE_LIST_ENTRY HIVE_LIST_ENTRY
INIT_FUNCTION VOID NTAPI CmpInitCmPrivateAlloc(VOID)
Definition: cmalloc.c:29
_In_ PUNICODE_STRING ValueName
Definition: cmfuncs.h:264
HANDLE FileHandle
Definition: stats.c:38
CM_KEY_VALUE KeyValue
Definition: cm.h:459
ULONG Disposition
Definition: cm.h:486
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
ERESOURCE * PERESOURCE
Definition: env_spec_w32.h:595
HCELL_INDEX Cell
Definition: cm.h:198
struct _CM_CELL_REMAP_BLOCK * PCM_CELL_REMAP_BLOCK
KEY_BASIC_INFORMATION KeyBasicInformation
Definition: cm.h:534
LIST_ENTRY CmpHiveListHead
Definition: cmsysini.c:18
VOID NTAPI CmpArmDelayedCloseTimer(VOID)
Definition: cmdelay.c:335
VOID NTAPI CmpDeleteKeyObject(IN PVOID Object)
struct _CM_KEY_CONTROL_BLOCK * RealKcb
Definition: cm.h:211
VOID NTAPI CmSetLazyFlushState(IN BOOLEAN Enable)
Definition: cmlazy.c:442
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
BOOLEAN ThreadFinished
Definition: cm.h:473
USHORT KcbMaxValueNameLen
Definition: cm.h:301
CM_KEY_REFERENCE ChildHive
Definition: cm.h:487
ULONG Count
Definition: cm.h:207
KGUARDED_MUTEX CmpDelayedCloseTableLock
Definition: cmdelay.c:21
long LONG
Definition: pedump.c:60
NTSTATUS NTAPI CmEnumerateValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN ULONG Index, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
Definition: cmapi.c:1192
_In_ ULONG BufferLength
Definition: usbdlib.h:225
PCM_NAME_HASH Entry
Definition: cm.h:178
LIST_ENTRY HiveList
Definition: cm.h:318
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1802
ULONG CmpTraceLevel
Definition: cmsysini.c:33
ULONG InDelayClose
Definition: cm.h:310
PCM_KEY_CONTROL_BLOCK RootKcb
Definition: cm.h:421
VOID NTAPI CmpUnlockRegistry(VOID)
Definition: cmsysini.c:1993
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
Definition: mmfuncs.h:396
ULONG GrowOffset
Definition: cm.h:425
struct _CM_KEY_CONTROL_BLOCK * PCM_KEY_CONTROL_BLOCK
INIT_FUNCTION NTSTATUS NTAPI CmpInitializeRegistryNode(IN PCONFIGURATION_COMPONENT_DATA CurrentEntry, IN HANDLE NodeHandle, OUT PHANDLE NewHandle, IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, IN PUSHORT DeviceIndexTable)
Definition: cmconfig.c:20
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:370
VALUE_SEARCH_RETURN_TYPE NTAPI CmpGetValueKeyFromCache(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PCELL_DATA CellData, IN ULONG Index, OUT PCM_CACHED_VALUE **CachedValue, OUT PCM_KEY_VALUE *Value, IN BOOLEAN IndexIsCached, OUT BOOLEAN *ValueIsCached, OUT PHCELL_INDEX CellToRelease)
Definition: cmvalche.c:96
HANDLE FileHandles[HFILE_TYPE_MAX]
Definition: cm.h:395
LANGID PsInstallUILanguageId
Definition: locale.c:21
struct _HIVE_LIST_ENTRY * PHIVE_LIST_ENTRY
INIT_FUNCTION BOOLEAN NTAPI CmpFindDrivers(IN PHHIVE Hive, IN HCELL_INDEX ControlSet, IN SERVICE_LOAD_TYPE LoadType, IN PWSTR BootFileSystem OPTIONAL, IN PLIST_ENTRY DriverListHead)
Definition: cmboot.c:383
HCELL_INDEX Cell
Definition: cm.h:378
unsigned char BOOLEAN
UNICODE_STRING FileFullPath
Definition: cm.h:410
struct _CACHED_CHILD_LIST * PCACHED_CHILD_LIST
struct _KEY_VALUE_INFORMATION * PKEY_VALUE_INFORMATION
ULONG SecurityCacheSize
Definition: cm.h:416
ULONG * PHCELL_INDEX
Definition: hivedata.h:80
static IDispatch External
Definition: htmldoc.c:521
POBJECT_TYPE CmpKeyObjectType
Definition: cmsysini.c:16
HHIVE Hive
Definition: cm.h:394
ULONG CmInstallUILanguageIdLength
Definition: cmdata.c:27
USHORT NameLength
Definition: cm.h:250
NTSTATUS NTAPI CmpDoCreate(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN PACCESS_STATE AccessState, IN PUNICODE_STRING Name, IN KPROCESSOR_MODE AccessMode, IN PCM_PARSE_CONTEXT Context, IN PCM_KEY_CONTROL_BLOCK ParentKcb, OUT PVOID *Object)
Definition: cmparse.c:397
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1339
Definition: bufpool.h:45
LIST_ENTRY List
Definition: cm.h:188
#define HFILE_TYPE_MAX
Definition: hivedata.h:36
struct _CM_KEY_CONTROL_BLOCK CM_KEY_CONTROL_BLOCK
VOID NTAPI CmpLockRegistryExclusive(VOID)
Definition: cmsysini.c:1894
struct _CM_KEY_SECURITY_CACHE_ENTRY * PCM_KEY_SECURITY_CACHE_ENTRY
USHORT NameLength
Definition: cm.h:168
PVOID NTAPI CmpAllocate(IN SIZE_T Size, IN BOOLEAN Paged, IN ULONG Tag)
Definition: registry.c:34
_VALUE_SEARCH_RETURN_TYPE
Definition: cm.h:133
BOOLEAN CmpShareSystemHives
Definition: cmdata.c:57
struct _CM_DELAY_DEREF_KCB_ITEM CM_DELAY_DEREF_KCB_ITEM
INIT_FUNCTION VOID NTAPI CmpInitCmPrivateDelayAlloc(VOID)
Definition: cmalloc.c:44
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
Definition: fltkernel.h:1230
BOOLEAN Compressed
Definition: cm.h:241
LIST_ENTRY PostList
Definition: cm.h:319
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
Definition: halfuncs.h:156
PCM_KEY_HASH NextHash
Definition: cm.h:249
_In_ PVOID Argument2
Definition: classpnp.h:680
NTSTATUS NTAPI CmSaveKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN HANDLE FileHandle, IN ULONG Flags)
Definition: cmapi.c:2637
NTSTATUS NTAPI CmUnloadKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN ULONG Flags)
Definition: cmapi.c:2194
union _CM_CACHED_VALUE_INDEX::@1735 Data
NTSTATUS NTAPI CmpSaveBootControlSet(IN USHORT ControlSet)
Definition: cmcontrl.c:268
struct _CM_PARSE_CONTEXT * PCM_PARSE_CONTEXT
VOID NTAPI CmpFreeKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmalloc.c:53
enum _EVENT_TYPE EVENT_TYPE
INIT_FUNCTION VOID NTAPI CmpInitializeDelayedCloseTable(VOID)
Definition: cmdelay.c:191
struct _CM_KEY_CONTROL_BLOCK * KeyControlBlock
Definition: cm.h:230
VOID NTAPI CmpRemoveFromDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmdelay.c:425
VOID NTAPI CmpFree(IN PVOID Ptr, IN ULONG Quota)
Definition: registry.c:47
INIT_FUNCTION VOID NTAPI CmpInitCallback(VOID)
Definition: cmhook.c:38
INIT_FUNCTION NTSTATUS NTAPI CmpInitializeHardwareConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: cmconfig.c:328
struct _CM_USE_COUNT_LOG CM_USE_COUNT_LOG
VOID NTAPI CmpSetGlobalQuotaAllowed(VOID)
Definition: cmquota.c:22
BOOLEAN HiveIsLoading
Definition: cm.h:434
Definition: registry.c:568
BOOLEAN NTAPI CmpReferenceKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:357
struct _CM_DELAYED_CLOSE_ENTRY CM_DELAYED_CLOSE_ENTRY
UNICODE_STRING Class
Definition: cm.h:484
NTSTATUS NTAPI CmDeleteKey(IN PCM_KEY_BODY KeyBody)
Definition: cmapi.c:1824
HIVE_LIST_ENTRY CmpMachineHiveList[]
Definition: cmdata.c:41
__wchar_t WCHAR
Definition: xmlstorage.h:180
DWORD * PSECURITY_INFORMATION
Definition: ms-dtyp.idl:311
INT POOL_TYPE
Definition: typedefs.h:77
ULONG HCELL_INDEX
Definition: hivedata.h:80
ULONG Filter
Definition: cm.h:322
BOOLEAN CmSelfHeal
Definition: cmdata.c:58
ULONG HashKey
Definition: cm.h:458
ULONG CmpBootType
Definition: cmdata.c:61
NTSTATUS NTAPI CmSaveMergedKeys(IN PCM_KEY_CONTROL_BLOCK HighKcb, IN PCM_KEY_CONTROL_BLOCK LowKcb, IN HANDLE FileHandle)
Definition: cmapi.c:2706
LIST_ENTRY DelayedLRUList
Definition: cm.h:360
struct _CM_USE_COUNT_LOG_ENTRY CM_USE_COUNT_LOG_ENTRY
struct _CMHIVE CMHIVE
NTSTATUS NTAPI CmpLinkHiveToMaster(IN PUNICODE_STRING LinkName, IN HANDLE RootDirectory, IN PCMHIVE CmHive, IN BOOLEAN Allocate, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
Definition: cmsysini.c:798
DWORD ClusterSize
Definition: format.c:67
EX_PUSH_LOCK HiveLock
Definition: cm.h:398
struct _CM_DELAY_ALLOC * PCM_DELAY_ALLOC
Definition: cm.h:196
static const UCHAR Index[8]
Definition: usbohci.c:18
USHORT Next
Definition: cm.h:384
BOOLEAN ExpInTextModeSetup
Definition: init.c:67
ULONG CmDefaultLanguageIdType
Definition: cmdata.c:24
Definition: cm.h:358
struct _KEY_INFORMATION KEY_INFORMATION
ULONG CmpConfigurationAreaSize
Definition: cmdata.c:36
ULONG DelayedCloseIndex
Definition: cm.h:268
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG CreateOptions
Definition: fltkernel.h:1230
PCM_KEY_HASH NextHash
Definition: cm.h:277
Definition: cm.h:175
PERESOURCE FlusherLock
Definition: cm.h:404
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
VOID NTAPI CmpDestroySecurityCache(IN PCMHIVE Hive)
Definition: cmsecach.c:41
VOID NTAPI CmpCleanUpKcbCacheWithLock(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmkcbncb.c:476
VOID NTAPI CmShutdownSystem(VOID)
Definition: cmsysini.c:2088
struct _CM_KEY_BODY CM_KEY_BODY
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
CM_SYSTEM_CONTROL_VECTOR CmControlVector[]
Definition: cmdata.c:139
* PFILE_OBJECT
Definition: iotypes.h:1957
struct _CM_CACHED_VALUE_INDEX * PCM_CACHED_VALUE_INDEX
Definition: cm.h:376
LIST_ENTRY HiveList
Definition: cm.h:397
static IUnknown Object
Definition: main.c:512
VALUE_SEARCH_RETURN_TYPE NTAPI CmpFindValueByNameFromCache(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PCUNICODE_STRING Name, OUT PCM_CACHED_VALUE **CachedValue, OUT ULONG *Index, OUT PCM_KEY_VALUE *Value, OUT BOOLEAN *ValueIsCached, OUT PHCELL_INDEX CellToRelease)
Definition: cmvalche.c:194
PHHIVE KeyHive
Definition: cm.h:147
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState
Definition: sefuncs.h:414
BOOLEAN NTAPI CmpGetNextName(IN OUT PUNICODE_STRING RemainingName, OUT PUNICODE_STRING NextName, OUT PBOOLEAN LastName)
Definition: cmparse.c:21
BOOLEAN CmpHoldLazyFlush
Definition: cmlazy.c:24
PCMHIVE CmiVolatileHive
Definition: cmsysini.c:17
PVOID NTAPI CmpAllocateDelayItem(VOID)
Definition: cmalloc.c:196
char * PBOOLEAN
Definition: retypes.h:11
LIST_ENTRY CmiKeyObjectListHead
HANDLE PredefinedHandle
Definition: cm.h:488
VOID NTAPI CmpInitHiveViewList(IN PCMHIVE Hive)
Definition: cmmapvw.c:21
NTSTATUS NTAPI CmpQueryKeyName(IN PVOID Object, IN BOOLEAN HasObjectName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE AccessMode)
USHORT Size
Definition: cm.h:385
VOID NTAPI EnlistKeyBodyWithKCB(IN PCM_KEY_BODY KeyObject, IN ULONG Flags)
Definition: cmkcbncb.c:1043
BOOLEAN CmpSelfHeal
Definition: cmdata.c:59
LIST_ENTRY LRUViewListHead
Definition: cm.h:407
struct _KEY_VALUE_INFORMATION KEY_VALUE_INFORMATION
NTSTATUS NTAPI CmpInitializeMachineDependentConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: cmhardwr.c:21
USHORT CmpUnknownBusCount
Definition: cmdata.c:63
EX_PUSH_LOCK WriterLock
Definition: cm.h:402
BOOLEAN CmpSpecialBootCondition
Definition: cmsysini.c:28
enum _REG_NOTIFY_CLASS REG_NOTIFY_CLASS
USHORT MappedViews
Definition: cm.h:412
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:454
VALUE_SEARCH_RETURN_TYPE NTAPI CmpCompareNewValueDataAgainstKCBCache(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PUNICODE_STRING ValueName, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
Definition: cmvalche.c:676
SECURITY_DESCRIPTOR_RELATIVE Descriptor
Definition: cm.h:190
struct _CM_KEY_SECURITY_CACHE_ENTRY CM_KEY_SECURITY_CACHE_ENTRY
NTSTATUS NTAPI CmFlushKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN EclusiveLock)
Definition: cmapi.c:1938
ULONG CmpHashTableSize
Definition: cmkcbncb.c:17
struct _CM_NAME_HASH_TABLE_ENTRY CM_NAME_HASH_TABLE_ENTRY
HCELL_INDEX NTAPI CmpCopyCell(IN PHHIVE SourceHive, IN HCELL_INDEX SourceCell, IN PHHIVE DestinationHive, IN HSTORAGE_TYPE StorageType)
Definition: cmvalue.c:376
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
Definition: fsrtlfuncs.h:108
PHHIVE KeyHive
Definition: cm.h:278
struct _CM_DELAYED_CLOSE_ENTRY * PCM_DELAYED_CLOSE_ENTRY
ULONG KcbDebug
Definition: cm.h:307
HANDLE CmpRegistryRootHandle
Definition: cmdata.c:66
BOOLEAN CmpProfileLoaded
Definition: cmsysini.c:31
Definition: typedefs.h:118
WCHAR CmInstallUILanguageId[]
Definition: cmdata.c:26
PKTHREAD ViewLockOwner
Definition: cm.h:401
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
CELL_DATA CellData
Definition: cm.h:446
VOID NTAPI CmpDestroyHiveViewList(IN PCMHIVE Hive)
Definition: cmmapvw.c:35
NTSTATUS NTAPI CmpInitHiveFromFile(IN PCUNICODE_STRING HiveName, IN ULONG HiveFlags, OUT PCMHIVE *Hive, IN OUT PBOOLEAN New, IN ULONG CheckFlags)
Definition: cmsysini.c:286
VOID NTAPI CmpLazyFlush(VOID)
Definition: cmlazy.c:158
PKTHREAD WriterLockOwner
Definition: cm.h:403
VOID NTAPI CmpCloseKeyObject(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount)
Definition: cmsysini.c:159
ULONG UseCount
Definition: cm.h:414
NTSTATUS NTAPI CmpCreateLinkNode(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN PACCESS_STATE AccessState, IN UNICODE_STRING Name, IN KPROCESSOR_MODE AccessMode, IN ULONG CreateOptions, IN PCM_PARSE_CONTEXT Context, IN PCM_KEY_CONTROL_BLOCK ParentKcb, OUT PVOID *Object)
Definition: cmparse.c:721
PFILE_OBJECT FileObject
Definition: cm.h:409
LIST_ENTRY KeyBodyListHead
Definition: cm.h:294
Status
Definition: gdiplustypes.h:24
KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 KeyValuePartialInformationAlign64
Definition: cm.h:526
CMHIVE CmControlHive
Definition: cmdata.c:34
Definition: cm.h:154
LIST_ENTRY KnodeConvertListHead
Definition: cm.h:427
struct _CM_KEY_HASH_TABLE_ENTRY * PCM_KEY_HASH_TABLE_ENTRY
HCELL_INDEX Cell
Definition: cm.h:186
ULONG CmpTypeCount[MaximumType+1]
Definition: cmdata.c:64
struct _CMP_MF_TYPE CMP_MF_TYPE
ULONG_PTR SIZE_T
Definition: typedefs.h:79
USHORT RefCount
Definition: cm.h:242
NTSTATUS NTAPI CmQueryKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN KEY_INFORMATION_CLASS KeyInformationClass, IN PVOID KeyInformation, IN ULONG Length, IN PULONG ResultLength)
static GENERIC_MAPPING GenericMapping
Definition: SeInheritance.c:11
ULONG TitleIndex
Definition: cm.h:483
ULONG KcbUserFlags
Definition: cm.h:305
VOID NTAPI CmpLockRegistry(VOID)
Definition: cmsysini.c:1907
KEY_NODE_INFORMATION KeyNodeInformation
Definition: cm.h:536
struct _CM_USE_COUNT_LOG_ENTRY * PCM_USE_COUNT_LOG_ENTRY
USHORT DataCacheType
Definition: cm.h:456
LIST_ENTRY ListEntry
Definition: cm.h:351
struct _CMP_MF_TYPE * PCMP_MF_TYPE
_Must_inspect_result_ _In_ USHORT _In_ PHIDP_PREPARSED_DATA _Out_writes_to_ LengthAttributes PHIDP_EXTENDED_ATTRIBUTES Attributes
Definition: hidpi.h:348
ULONG CmpDelayedCloseSize
Definition: cmdelay.c:19
ULONG CmDefaultLanguageIdLength
Definition: cmdata.c:23
VOID NTAPI CmpReleaseTwoKcbLockByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
Definition: cmsysini.c:2050
struct _CM_CACHED_VALUE * PCM_CACHED_VALUE
PCM_CELL_REMAP_BLOCK CellRemapArray
Definition: cm.h:428
EX_PUSH_LOCK CmpLoadHiveLock
Definition: cmdata.c:39
PKTHREAD CreatorOwner
Definition: cm.h:435
unsigned short USHORT
Definition: pedump.c:61
INIT_FUNCTION VOID NTAPI CmpInitializeCache(VOID)
Definition: cmkcbncb.c:26
_In_ PFCB _In_ LONGLONG FileOffset
Definition: cdprocs.h:159
NTSTATUS NTAPI CmpInitializeHive(OUT PCMHIVE *CmHive, IN ULONG OperationType, IN ULONG HiveFlags, IN ULONG FileType, IN PVOID HiveData OPTIONAL, IN HANDLE Primary, IN HANDLE Log, IN HANDLE External, IN PCUNICODE_STRING FileName OPTIONAL, IN ULONG CheckFlags)
Definition: cminit.c:19
BOOLEAN CmpWasSetupBoot
Definition: cmsysini.c:30
HSTORAGE_TYPE
Definition: hivedata.h:100
BOOLEAN NTAPI CmpTestRegistryLock(VOID)
Definition: cmsysini.c:1927
INIT_FUNCTION BOOLEAN NTAPI CmpIsSafe(IN PHHIVE Hive, IN HCELL_INDEX SafeBootCell, IN HCELL_INDEX DriverCell)
Definition: cmboot.c:724
VOID NTAPI CmpCleanUpSubKeyInfo(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:517
static PCMHIVE CmHive
Definition: registry.c:28
WCHAR CmDefaultLanguageId[]
Definition: cmdata.c:22
unsigned int * PULONG
Definition: retypes.h:1
BOOLEAN NTAPI CmpDoFlushAll(IN BOOLEAN ForceFlush)
Definition: cmapi.c:82
KEY_VALUE_FULL_INFORMATION KeyValueFullInformation
Definition: cm.h:524
VOID NTAPI CmpDereferenceKeyControlBlockWithLock(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmkcbncb.c:606
PKTHREAD HiveSecurityLockOwner
Definition: cm.h:406
LIST_ENTRY PinViewListHead
Definition: cm.h:408
PKEVENT UnloadEvent
Definition: cm.h:420
ULONG SubKeyCount
Definition: cm.h:290
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:320
struct _CM_DELAY_ALLOC CM_DELAY_ALLOC
static CMHIVE SystemHive
Definition: registry.c:57
ULONG WatchTree
Definition: cm.h:323
CM_USE_COUNT_LOG LockHiveLog
Definition: cm.h:430
IN ULONG IN ULONG Tag
Definition: evtlib.h:159
BOOLEAN Allocate
Definition: cm.h:475
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:219
struct _CM_KEY_SECURITY_CACHE * PCM_KEY_SECURITY_CACHE
VOID NTAPI CmpLockHiveFlusherShared(IN PCMHIVE Hive)
Definition: cmsysini.c:1954
EX_PUSH_LOCK Lock
Definition: cm.h:177
USHORT KcbMaxNameLen
Definition: cm.h:300
PCM_KEY_HASH Entry
Definition: cm.h:158
#define OUT
Definition: typedefs.h:40
PCM_KEY_SECURITY_CACHE_ENTRY SecurityCache
Definition: cm.h:418
struct _CM_KEY_HASH CM_KEY_HASH
VOID NTAPI CmpInitializeHiveList(VOID)
Definition: cmsysini.c:1358
INIT_FUNCTION PUNICODE_STRING *NTAPI CmGetSystemDriverList(VOID)
Definition: cmsysini.c:1776
BOOLEAN NTAPI CmpFileFlush(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PLARGE_INTEGER FileOffset, IN ULONG Length)
Definition: cmwraprs.c:162
struct _CM_ALLOC_PAGE CM_ALLOC_PAGE
ULONG ERESOURCE
Definition: env_spec_w32.h:594
PCMHIVE OriginatingPoint
Definition: cm.h:491
unsigned int ULONG
Definition: retypes.h:1
PCM_NAME_HASH_TABLE_ENTRY CmpNameCacheTable
Definition: cmkcbncb.c:19
ULONG RefCount
Definition: cm.h:262
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:352
VOID NTAPI CmpRemoveKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:306
CM_KEY_HASH KeyHash
Definition: cm.h:273
struct _CM_ALLOC_PAGE * PCM_ALLOC_PAGE
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE EventType
Definition: exfuncs.h:165
PCMHIVE CmHive2
Definition: cm.h:472
BOOLEAN NTAPI CmpTestHiveFlusherLockShared(IN PCMHIVE Hive)
Definition: cmsysini.c:1977
USHORT InterfaceType
Definition: cm.h:500
PCM_FULL_RESOURCE_DESCRIPTOR CmpConfigurationData
Definition: cmdata.c:37
BOOLEAN NTAPI CmpFileSetSize(IN PHHIVE RegistryHive, IN ULONG FileType, IN ULONG FileSize, IN ULONG OldFileSize)
Definition: cmwraprs.c:125
PWSTR BaseName
Definition: cm.h:468
struct _CM_DELAY_DEREF_KCB_ITEM * PCM_DELAY_DEREF_KCB_ITEM
ULONG NTAPI CmpEnumerateOpenSubKeys(IN PCM_KEY_CONTROL_BLOCK RootKcb, IN BOOLEAN RemoveEmptyCacheEntries, IN BOOLEAN DereferenceOpenedEntries)
Definition: cmapi.c:2327
VOID NTAPI CmpReportNotify(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PHHIVE Hive, IN HCELL_INDEX Cell, IN ULONG Filter)
Definition: cmnotify.c:19
PVOID DelayCloseEntry
Definition: cm.h:298
VOID NTAPI CmpInitSecurityCache(IN PCMHIVE Hive)
Definition: cmsecach.c:21
enum _VALUE_SEARCH_RETURN_TYPE VALUE_SEARCH_RETURN_TYPE
ULONG Type
Definition: cm.h:229
_In_ ULONG _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
Definition: cmfuncs.h:93
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:284
struct _CM_CACHED_VALUE CM_CACHED_VALUE
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK GrantedAccess
Definition: sefuncs.h:13
INIT_FUNCTION BOOLEAN NTAPI CmpResolveDriverDependencies(IN PLIST_ENTRY DriverListHead)
Definition: cmboot.c:674
struct _CM_KEY_BODY * PCM_KEY_BODY
BOOLEAN CreateLink
Definition: cm.h:489
KEY_VALUE_BASIC_INFORMATION KeyValueBasicInformation
Definition: cm.h:523
ULONG Reserved
Definition: cm.h:342
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T _In_ POOL_TYPE PoolType
Definition: fltkernel.h:1444
NTSTATUS NTAPI CmpDestroyHive(IN PCMHIVE CmHive)
Definition: cminit.c:235
struct _CM_NAME_HASH * NextHash
Definition: cm.h:167
VOID NTAPI CmpCleanUpKcbValueCache(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:431
struct _CM_CELL_REMAP_BLOCK CM_CELL_REMAP_BLOCK
CM_NAME_HASH NameHash
Definition: cm.h:245
PWSTR Name
Definition: cm.h:467
VOID NTAPI CmpRemoveFromHiveFileList(IN PCMHIVE Hive)
Definition: cmhvlist.c:254
ULONG HHiveFlags
Definition: cm.h:470
ULONG KcbMaxValueDataLen
Definition: cm.h:302
BOOLEAN CmpForceForceFlush
Definition: cmlazy.c:23
LIST_ENTRY FreeListEntry
Definition: cm.h:295
LIST_ENTRY SecurityHash[CMP_SECURITY_HASH_LISTS]
Definition: cm.h:419
VOID NTAPI CmpSetVersionData(VOID)
Definition: cmsysini.c:2116
PSECURITY_DESCRIPTOR NTAPI CmpHiveRootSecurityDescriptor(VOID)
Definition: cmse.c:21
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:199
_Inout_opt_ PUNICODE_STRING Extension
Definition: fltkernel.h:1092
SECURITY_OPERATION_CODE
Definition: setypes.h:142
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4751
unsigned short * PUSHORT
Definition: retypes.h:2
BOOLEAN CreateOperation
Definition: cm.h:490
ULONG ACCESS_MASK
Definition: nt_native.h:40
PCM_INDEX_HINT_BLOCK IndexHint
Definition: cm.h:288
LIST_ENTRY KcbConvertListHead
Definition: cm.h:426
base of all file and directory entries
Definition: entries.h:82
LIST_ENTRY ListEntry
Definition: cm.h:369
VOID NTAPI CmpFlushNotify(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
Definition: cmnotify.c:30
LANGID PsDefaultUILanguageId
Definition: locale.c:24
Definition: cm.h:392
struct _CM_KEY_HASH * NextHash
Definition: cm.h:146
enum _KEY_VALUE_INFORMATION_CLASS KEY_VALUE_INFORMATION_CLASS
Definition: reg.c:135
NTSTATUS NTAPI CmDeleteValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN UNICODE_STRING ValueName)
Definition: cmapi.c:916
INIT_FUNCTION VOID NTAPI CmpInitDelayDerefKCBEngine(VOID)
Definition: cmdelay.c:268
ULONG CmInstallUILanguageIdType
Definition: cmdata.c:28
struct _CM_NOTIFY_BLOCK * PCM_NOTIFY_BLOCK
PCM_KEY_CONTROL_BLOCK NTAPI CmpAllocateKeyControlBlock(VOID)
Definition: cmalloc.c:111
USHORT ValueKeySize
Definition: cm.h:457
struct _CM_INDEX_HINT_BLOCK CM_INDEX_HINT_BLOCK
Definition: dlist.c:348
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
Definition: cdprocs.h:801
NTSTATUS NTAPI CmEnumerateKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN ULONG Index, IN KEY_INFORMATION_CLASS KeyInformationClass, IN PVOID KeyInformation, IN ULONG Length, IN PULONG ResultLength)
Definition: cmapi.c:1735
_Out_ PHANDLE EventHandle
Definition: iofuncs.h:855
NTSTATUS NTAPI CmQueryValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN UNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
Definition: cmapi.c:1075
struct _CM_KEY_HASH * PCM_KEY_HASH
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
BOOLEAN GrowOnlyMode
Definition: cm.h:424
VOID NTAPI CmpAcquireTwoKcbLocksExclusiveByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
Definition: cmsysini.c:2021