ReactOS  0.4.14-dev-49-gfb4591c
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 
11 //
12 // Define this if you want debugging support
13 //
14 #define _CM_DEBUG_ 0x00
15 
16 //
17 // These define the Debug Masks Supported
18 //
19 #define CM_HANDLE_DEBUG 0x01
20 #define CM_NAMESPACE_DEBUG 0x02
21 #define CM_SECURITY_DEBUG 0x04
22 #define CM_REFERENCE_DEBUG 0x08
23 #define CM_CALLBACK_DEBUG 0x10
24 
25 //
26 // Debug/Tracing support
27 //
28 #if _CM_DEBUG_
29 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
30 #define CMTRACE DbgPrintEx
31 #else
32 #define CMTRACE(x, ...) \
33  if (x & CmpTraceLevel) DbgPrint(__VA_ARGS__)
34 #endif
35 #else
36 #define CMTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
37 #endif
38 
39 //
40 // Hack since bigkeys are not yet supported
41 //
42 #define ASSERT_VALUE_BIG(h, s) \
43  ASSERTMSG("Big keys not supported!\n", !CmpIsKeyValueBig(h, s));
44 
45 //
46 // CM_KEY_CONTROL_BLOCK Signatures
47 //
48 #define CM_KCB_SIGNATURE 'bKmC'
49 #define CM_KCB_INVALID_SIGNATURE '4FmC'
50 
51 //
52 // CM_KEY_CONTROL_BLOCK ExtFlags
53 //
54 #define CM_KCB_NO_SUBKEY 0x01
55 #define CM_KCB_SUBKEY_ONE 0x02
56 #define CM_KCB_SUBKEY_HINT 0x04
57 #define CM_KCB_SYM_LINK_FOUND 0x08
58 #define CM_KCB_KEY_NON_EXIST 0x10
59 #define CM_KCB_NO_DELAY_CLOSE 0x20
60 #define CM_KCB_INVALID_CACHED_INFO 0x40
61 #define CM_KCB_READ_ONLY_KEY 0x80
62 
63 //
64 // CM_KEY_BODY Types
65 //
66 #define CM_KEY_BODY_TYPE 0x6B793032
67 
68 //
69 // CM_KEY_VALUE Types
70 //
71 #define CM_KEY_VALUE_SMALL 0x4
72 #define CM_KEY_VALUE_BIG 0x3FD8
73 #define CM_KEY_VALUE_SPECIAL_SIZE 0x80000000
74 
75 //
76 // Number of various lists and hashes
77 //
78 #define CMP_SECURITY_HASH_LISTS 64
79 #define CMP_MAX_CALLBACKS 100
80 
81 //
82 // Hashing Constants
83 //
84 #define CMP_HASH_IRRATIONAL 314159269
85 #define CMP_HASH_PRIME 1000000007
86 
87 //
88 // CmpCreateKeyControlBlock Flags
89 //
90 #define CMP_CREATE_FAKE_KCB 0x1
91 #define CMP_LOCK_HASHES_FOR_KCB 0x2
92 
93 //
94 // CmpDoCreate and CmpDoOpen flags
95 //
96 #define CMP_CREATE_KCB_KCB_LOCKED 0x2
97 #define CMP_OPEN_KCB_NO_CREATE 0x4
98 
99 //
100 // EnlistKeyBodyWithKCB Flags
101 //
102 #define CMP_ENLIST_KCB_LOCKED_SHARED 0x1
103 #define CMP_ENLIST_KCB_LOCKED_EXCLUSIVE 0x2
104 
105 //
106 // Unload Flags
107 //
108 #define CMP_UNLOCK_KCB_LOCKED 0x1
109 #define CMP_UNLOCK_REGISTRY_LOCKED 0x2
110 
111 //
112 // Maximum size of Value Cache
113 //
114 #define MAXIMUM_CACHED_DATA 2 * PAGE_SIZE
115 
116 //
117 // Hives to load on startup
118 //
119 #define CM_NUMBER_OF_MACHINE_HIVES 6
120 
121 //
122 // Number of items that can fit inside an Allocation Page
123 //
124 #define CM_KCBS_PER_PAGE \
125  ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_KEY_CONTROL_BLOCK))
126 #define CM_DELAYS_PER_PAGE \
127  ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_DELAY_ALLOC))
128 
129 //
130 // Value Search Results
131 //
133 {
138 
139 //
140 // Key Hash
141 //
142 typedef struct _CM_KEY_HASH
143 {
149 
150 //
151 // Key Hash Table Entry
152 //
154 {
159 
160 //
161 // Name Hash
162 //
163 typedef struct _CM_NAME_HASH
164 {
170 
171 //
172 // Name Hash Table Entry
173 //
175 {
179 
180 //
181 // Key Security Cache
182 //
184 {
191 
192 //
193 // Key Security Cache Entry
194 //
196 {
200 
201 //
202 // Cached Child List
203 //
204 typedef struct _CACHED_CHILD_LIST
205 {
207  union
208  {
211  };
213 
214 //
215 // Index Hint Block
216 //
217 typedef struct _CM_INDEX_HINT_BLOCK
218 {
222 
223 //
224 // Key Body
225 //
226 typedef struct _CM_KEY_BODY
227 {
234 
235 //
236 // Name Control Block (NCB)
237 //
239 {
242  union
243  {
245  struct
246  {
251  };
252  };
254 
255 //
256 // Key Control Block (KCB)
257 //
258 typedef struct _CM_KEY_CONTROL_BLOCK
259 {
262  struct
263  {
269  };
270  union
271  {
273  struct
274  {
279  };
280  };
285  union
286  {
290  };
291  union
292  {
295  };
302  struct
303  {
307  ULONG Flags : 16;
308  };
311 
312 //
313 // Notify Block
314 //
315 typedef struct _CM_NOTIFY_BLOCK
316 {
325 
326 //
327 // Re-map Block
328 //
329 typedef struct _CM_CELL_REMAP_BLOCK
330 {
334 
335 //
336 // Allocation Page
337 //
338 typedef struct _CM_ALLOC_PAGE
339 {
344 
345 //
346 // Allocation Page Entry
347 //
348 typedef struct _CM_DELAY_ALLOC
349 {
353 
354 //
355 // Delayed Close Entry
356 //
358 {
362 
363 //
364 // Delayed KCB Dereference Entry
365 //
367 {
371 
372 //
373 // Use Count Log and Entry
374 //
376 {
380 
381 typedef struct _CM_USE_COUNT_LOG
382 {
387 
388 //
389 // Configuration Manager Hive Structure
390 //
391 typedef struct _CMHIVE
392 {
435 } CMHIVE, *PCMHIVE;
436 
437 //
438 // Cached Value Index
439 //
441 {
443  union
444  {
447  } Data;
449 
450 //
451 // Cached Value
452 //
453 typedef struct _CM_CACHED_VALUE
454 {
460 
461 //
462 // Hive List Entry
463 //
464 typedef struct _HIVE_LIST_ENTRY
465 {
476 
477 //
478 // Parse context for Key Object
479 //
480 typedef struct _CM_PARSE_CONTEXT
481 {
492 
493 //
494 // MultiFunction Adapter Recognizer Structure
495 //
496 typedef struct _CMP_MF_TYPE
497 {
502 
503 //
504 // System Control Vector
505 //
507 {
514 
515 //
516 // Structure for CmpQueryValueDataFromCache
517 //
519 {
520  union
521  {
526  };
528 
529 typedef struct _KEY_INFORMATION
530 {
531  union
532  {
536  };
538 
540 //
541 // BUGBUG Old Hive Stuff for Temporary Support
542 //
545 
546 //
547 // Mapped View Hive Functions
548 //
549 VOID
550 NTAPI
552  IN PCMHIVE Hive
553 );
554 
555 VOID
556 NTAPI
558  IN PCMHIVE Hive
559 );
560 
561 //
562 // Security Cache Functions
563 //
564 VOID
565 NTAPI
567  IN PCMHIVE Hive
568 );
569 
570 VOID
571 NTAPI
573  IN PCMHIVE Hive
574 );
575 
576 //
577 // Value Cache Functions
578 //
580 NTAPI
584  OUT PCM_CACHED_VALUE **CachedValue,
585  OUT ULONG *Index,
587  OUT BOOLEAN *ValueIsCached,
588  OUT PHCELL_INDEX CellToRelease
589 );
590 
592 NTAPI
595  IN PCM_CACHED_VALUE *CachedValue,
596  IN PCM_KEY_VALUE ValueKey,
597  IN BOOLEAN ValueIsCached,
599  IN PVOID KeyValueInformation,
600  IN ULONG Length,
603 );
604 
606 NTAPI
609  OUT PCELL_DATA *CellData,
610  OUT BOOLEAN *IndexIsCached,
611  OUT PHCELL_INDEX ValueListToRelease
612 );
613 
615 NTAPI
618  IN PCELL_DATA CellData,
619  IN ULONG Index,
620  OUT PCM_CACHED_VALUE **CachedValue,
622  IN BOOLEAN IndexIsCached,
623  OUT BOOLEAN *ValueIsCached,
624  OUT PHCELL_INDEX CellToRelease
625 );
626 
628 NTAPI
632  IN ULONG Type,
633  IN PVOID Data,
635 );
636 
637 //
638 // Registry Validation Functions
639 //
640 ULONG
641 NTAPI
643  IN PCMHIVE Hive,
644  IN ULONG Flags
645 );
646 
647 //
648 // Hive List Routines
649 //
650 BOOLEAN
651 NTAPI
653  IN PCMHIVE Hive,
654  OUT PUNICODE_STRING HiveName
655 );
656 
657 NTSTATUS
658 NTAPI
660  IN PCMHIVE Hive
661 );
662 
663 VOID
664 NTAPI
666  IN PCMHIVE Hive
667 );
668 
669 //
670 // Quota Routines
671 //
672 VOID
673 NTAPI
675  VOID
676 );
677 
678 //
679 // Notification Routines
680 //
681 VOID
682 NTAPI
685  IN PHHIVE Hive,
687  IN ULONG Filter
688 );
689 
690 VOID
691 NTAPI
693  IN PCM_KEY_BODY KeyBody,
694  IN BOOLEAN LockHeld
695 );
696 
697 INIT_FUNCTION
698 VOID
699 NTAPI
701  VOID
702 );
703 
704 //
705 // KCB Cache/Delay Routines
706 //
707 INIT_FUNCTION
708 VOID
709 NTAPI
711  VOID
712 );
713 
714 INIT_FUNCTION
715 VOID
716 NTAPI
718  VOID
719 );
720 
721 INIT_FUNCTION
722 VOID
723 NTAPI
725  VOID
726 );
727 
728 INIT_FUNCTION
729 VOID
730 NTAPI
732  VOID
733 );
734 
735 //
736 // Key Object Routines
737 //
738 VOID
739 NTAPI
742  IN PVOID Object,
745  IN ULONG SystemHandleCount
746 );
747 
748 VOID
749 NTAPI
751  IN PVOID Object
752 );
753 
754 NTSTATUS
755 NTAPI
757  IN PVOID ParseObject,
762  IN OUT PUNICODE_STRING CompleteName,
766  OUT PVOID *Object
767 );
768 
769 NTSTATUS
770 NTAPI
772  IN PVOID Object,
773  IN SECURITY_OPERATION_CODE OperationType,
776  IN OUT PULONG CapturedLength,
777  IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor,
780 );
781 
782 NTSTATUS
783 NTAPI
785  IN PVOID Object,
786  IN BOOLEAN HasObjectName,
787  OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
788  IN ULONG Length,
791 );
792 
793 //
794 // Hive Routines
795 //
796 NTSTATUS
797 NTAPI
799  OUT PCMHIVE *CmHive,
800  IN ULONG OperationType,
801  IN ULONG HiveFlags,
802  IN ULONG FileType,
803  IN PVOID HiveData OPTIONAL,
804  IN HANDLE Primary,
805  IN HANDLE Log,
808  IN ULONG CheckFlags
809 );
810 
811 NTSTATUS
812 NTAPI
815 );
816 
818 NTAPI
820  VOID
821 );
822 
823 NTSTATUS
824 NTAPI
826  IN PUNICODE_STRING LinkName,
828  IN PCMHIVE CmHive,
831 );
832 
833 NTSTATUS
834 NTAPI
836  IN PCUNICODE_STRING BaseName,
838  OUT PHANDLE Primary,
839  OUT PHANDLE Log,
840  OUT PULONG PrimaryDisposition,
841  OUT PULONG LogDisposition,
842  IN BOOLEAN CreateAllowed,
843  IN BOOLEAN MarkAsSystemHive,
844  IN BOOLEAN NoBuffering,
846 );
847 
848 VOID
849 NTAPI
851  IN PCMHIVE Hive
852 );
853 
854 NTSTATUS
855 NTAPI
857  IN PCUNICODE_STRING HiveName,
858  IN ULONG HiveFlags,
859  OUT PCMHIVE *Hive,
860  IN OUT PBOOLEAN New,
861  IN ULONG CheckFlags
862 );
863 
864 VOID
865 NTAPI
867  VOID
868 );
869 
870 //
871 // Registry Utility Functions
872 //
873 BOOLEAN
874 NTAPI
876  VOID
877 );
878 
879 BOOLEAN
880 NTAPI
882  VOID
883 );
884 
885 VOID
886 NTAPI
888  VOID
889 );
890 
891 VOID
892 NTAPI
894  VOID
895 );
896 
897 VOID
898 NTAPI
900  VOID
901 );
902 
903 VOID
904 NTAPI
906  IN PCMHIVE Hive
907 );
908 
909 VOID
910 NTAPI
912  IN PCMHIVE Hive
913 );
914 
915 BOOLEAN
916 NTAPI
918  IN PCMHIVE Hive
919 );
920 
921 BOOLEAN
922 NTAPI
924  IN PCMHIVE Hive
925 );
926 
927 VOID
928 NTAPI
930  IN PCMHIVE Hive
931 );
932 
933 //
934 // Delay Functions
935 //
936 PVOID
937 NTAPI
939  VOID
940 );
941 
942 VOID
943 NTAPI
945  PVOID Entry
946 );
947 
948 VOID
949 NTAPI
952 );
953 
954 VOID
955 NTAPI
958  IN BOOLEAN LockHeldExclusively
959 );
960 
961 VOID
962 NTAPI
964  VOID
965 );
966 
967 VOID
968 NTAPI
970 
971 INIT_FUNCTION
972 VOID
973 NTAPI
975  VOID
976 );
977 
978 //
979 // KCB Functions
980 //
982 NTAPI
984  IN PHHIVE Hive,
988  IN ULONG Flags,
990 );
991 
993 NTAPI
995  VOID
996 );
997 
998 VOID
999 NTAPI
1002 );
1003 
1004 VOID
1005 NTAPI
1008 );
1009 
1010 VOID
1011 NTAPI
1014 );
1015 
1016 VOID
1017 NTAPI
1020  IN BOOLEAN LockHeldExclusively
1021 );
1022 
1023 VOID
1024 NTAPI
1027 );
1028 
1030 NTAPI
1033 );
1034 
1035 BOOLEAN
1036 NTAPI
1039 );
1040 
1041 VOID
1042 NTAPI
1045  IN BOOLEAN LockHeldExclusively
1046 );
1047 
1048 VOID
1049 NTAPI
1052 );
1053 
1054 VOID
1055 NTAPI
1057  IN PCM_KEY_BODY KeyObject,
1058  IN ULONG Flags
1059 );
1060 
1061 VOID
1062 NTAPI
1064  IN PCM_KEY_BODY KeyBody,
1065  IN BOOLEAN LockHeld
1066 );
1067 
1068 VOID
1069 NTAPI
1071  IN ULONG ConvKey1,
1072  IN ULONG ConvKey2
1073 );
1074 
1075 VOID
1076 NTAPI
1078  IN ULONG ConvKey1,
1079  IN ULONG ConvKey2
1080 );
1081 
1082 VOID
1083 NTAPI
1086  IN BOOLEAN LockHeld
1087 );
1088 
1089 //
1090 // Parse Routines
1091 //
1092 BOOLEAN
1093 NTAPI
1096  OUT PUNICODE_STRING NextName,
1097  OUT PBOOLEAN LastName
1098 );
1099 
1100 //
1101 // Command Routines (Flush, Open, Close, Init);
1102 //
1103 BOOLEAN
1104 NTAPI
1106  IN BOOLEAN ForceFlush
1107 );
1108 
1109 VOID
1110 NTAPI
1112  VOID
1113 );
1114 
1115 VOID
1116 NTAPI
1117 CmpCmdInit(
1118  IN BOOLEAN SetupBoot
1119 );
1120 
1121 NTSTATUS
1122 NTAPI
1125  IN PSECURITY_CLIENT_CONTEXT ImpersonationContext,
1127  OUT PCMHIVE *NewHive,
1128  IN ULONG CheckFlags
1129 );
1130 
1131 VOID
1132 NTAPI
1133 CmpLazyFlush(
1134  VOID
1135 );
1136 
1137 //
1138 // Open/Create Routines
1139 //
1140 NTSTATUS
1141 NTAPI
1142 CmpDoCreate(
1143  IN PHHIVE Hive,
1149  IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1150  OUT PVOID *Object
1151 );
1152 
1153 NTSTATUS
1154 NTAPI
1156  IN PHHIVE Hive,
1163  IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1164  OUT PVOID *Object
1165 );
1166 
1167 //
1168 // Boot Routines
1169 //
1170 INIT_FUNCTION
1172 NTAPI
1175  IN HCELL_INDEX RootCell,
1176  IN PUNICODE_STRING SelectKeyName,
1177  OUT PBOOLEAN AutoSelect
1178 );
1179 
1180 INIT_FUNCTION
1181 VOID
1182 NTAPI
1184  IN PVOID SystemHiveData,
1185  IN PCM_SYSTEM_CONTROL_VECTOR ControlVector
1186 );
1187 
1188 NTSTATUS
1189 NTAPI
1191  IN USHORT ControlSet
1192 );
1193 
1194 //
1195 // Hardware Configuration Routines
1196 //
1197 INIT_FUNCTION
1198 NTSTATUS
1199 NTAPI
1201  IN PCONFIGURATION_COMPONENT_DATA CurrentEntry,
1203  OUT PHANDLE NewHandle,
1204  IN INTERFACE_TYPE InterfaceType,
1205  IN ULONG BusNumber,
1206  IN PUSHORT DeviceIndexTable
1207 );
1208 
1209 NTSTATUS
1210 NTAPI
1212  IN PLOADER_PARAMETER_BLOCK LoaderBlock
1213 );
1214 
1215 INIT_FUNCTION
1216 NTSTATUS
1217 NTAPI
1219  IN PLOADER_PARAMETER_BLOCK LoaderBlock
1220 );
1221 
1222 //
1223 // Wrapper Routines
1224 //
1225 NTSTATUS
1226 NTAPI
1230  OUT PKEVENT *Event
1231 );
1232 
1233 PVOID
1234 NTAPI
1235 CmpAllocate(
1236  IN SIZE_T Size,
1237  IN BOOLEAN Paged,
1238  IN ULONG Tag
1239 );
1240 
1241 VOID
1242 NTAPI
1243 CmpFree(
1244  IN PVOID Ptr,
1245  IN ULONG Quota
1246 );
1247 
1248 BOOLEAN
1249 NTAPI
1250 CmpFileRead(
1251  IN PHHIVE RegistryHive,
1252  IN ULONG FileType,
1254  OUT PVOID Buffer,
1256 );
1257 
1258 BOOLEAN
1259 NTAPI
1260 CmpFileWrite(
1261  IN PHHIVE RegistryHive,
1262  IN ULONG FileType,
1264  IN PVOID Buffer,
1266 );
1267 
1268 BOOLEAN
1269 NTAPI
1271  IN PHHIVE RegistryHive,
1272  IN ULONG FileType,
1273  IN ULONG FileSize,
1274  IN ULONG OldFileSize
1275 );
1276 
1277 BOOLEAN
1278 NTAPI
1279 CmpFileFlush(
1280  IN PHHIVE RegistryHive,
1281  IN ULONG FileType,
1283  IN ULONG Length
1284 );
1285 
1286 //
1287 // Configuration Manager side of Registry System Calls
1288 //
1289 NTSTATUS
1290 NTAPI
1293  IN ULONG Index,
1295  IN PVOID KeyValueInformation,
1296  IN ULONG Length,
1298 
1299 NTSTATUS
1300 NTAPI
1304  IN ULONG Type,
1305  IN PVOID Data,
1306  IN ULONG DataSize);
1307 
1308 NTSTATUS
1309 NTAPI
1312  IN PVOID KeyInformation,
1313  IN ULONG Length,
1315 );
1316 
1317 NTSTATUS
1318 NTAPI
1320  IN ULONG Index,
1322  IN PVOID KeyInformation,
1323  IN ULONG Length,
1325 );
1326 
1327 NTSTATUS
1328 NTAPI
1329 CmDeleteKey(
1330  IN PCM_KEY_BODY KeyBody
1331 );
1332 
1333 NTSTATUS
1334 NTAPI
1335 CmFlushKey(
1337  IN BOOLEAN EclusiveLock
1338 );
1339 
1340 NTSTATUS
1341 NTAPI
1345 );
1346 
1347 NTSTATUS
1348 NTAPI
1353  IN PVOID KeyValueInformation,
1354  IN ULONG Length,
1356 );
1357 
1358 NTSTATUS
1359 NTAPI
1360 CmLoadKey(
1361  IN POBJECT_ATTRIBUTES TargetKey,
1362  IN POBJECT_ATTRIBUTES SourceFile,
1363  IN ULONG Flags,
1364  IN PCM_KEY_BODY KeyBody
1365 );
1366 
1367 NTSTATUS
1368 NTAPI
1369 CmUnloadKey(
1371  IN ULONG Flags
1372 );
1373 
1374 ULONG
1375 NTAPI
1377  IN PCM_KEY_CONTROL_BLOCK RootKcb,
1378  IN BOOLEAN RemoveEmptyCacheEntries,
1379  IN BOOLEAN DereferenceOpenedEntries
1380 );
1381 
1383 NTAPI
1384 CmpCopyCell(
1385  IN PHHIVE SourceHive,
1386  IN HCELL_INDEX SourceCell,
1387  IN PHHIVE DestinationHive,
1388  IN HSTORAGE_TYPE StorageType
1389 );
1390 
1391 NTSTATUS
1392 NTAPI
1394  IN PHHIVE SourceHive,
1395  IN HCELL_INDEX SrcKeyCell,
1396  IN PHHIVE DestinationHive,
1397  IN HSTORAGE_TYPE StorageType,
1398  OUT PHCELL_INDEX DestKeyCell OPTIONAL
1399 );
1400 
1401 NTSTATUS
1402 NTAPI
1403 CmSaveKey(
1406  IN ULONG Flags
1407 );
1408 
1409 NTSTATUS
1410 NTAPI
1412  IN PCM_KEY_CONTROL_BLOCK HighKcb,
1413  IN PCM_KEY_CONTROL_BLOCK LowKcb,
1415 );
1416 
1417 //
1418 // Startup and Shutdown
1419 //
1420 INIT_FUNCTION
1421 BOOLEAN
1422 NTAPI
1424  VOID
1425 );
1426 
1427 VOID
1428 NTAPI
1430  VOID
1431 );
1432 
1433 VOID
1434 NTAPI
1436  IN BOOLEAN Enable
1437 );
1438 
1439 VOID
1440 NTAPI
1442  VOID
1443 );
1444 
1445 //
1446 // Driver List Routines
1447 //
1448 INIT_FUNCTION
1450 NTAPI
1452  VOID
1453 );
1454 
1455 INIT_FUNCTION
1456 BOOLEAN
1457 NTAPI
1459  IN PHHIVE Hive,
1460  IN HCELL_INDEX ControlSet,
1461  IN SERVICE_LOAD_TYPE LoadType,
1462  IN PWSTR BootFileSystem OPTIONAL,
1463  IN PLIST_ENTRY DriverListHead
1464 );
1465 
1466 INIT_FUNCTION
1467 BOOLEAN
1468 NTAPI
1470  IN PHHIVE Hive,
1471  IN HCELL_INDEX ControlSet,
1472  IN PLIST_ENTRY DriverListHead
1473 );
1474 
1475 INIT_FUNCTION
1476 BOOLEAN
1477 NTAPI
1479  IN PLIST_ENTRY DriverListHead
1480 );
1481 
1482 INIT_FUNCTION
1483 BOOLEAN
1484 NTAPI
1485 CmpIsSafe(
1486  IN PHHIVE Hive,
1487  IN HCELL_INDEX SafeBootCell,
1488  IN HCELL_INDEX DriverCell);
1489 
1490 //
1491 // Global variables accessible from all of Cm
1492 //
1493 extern ULONG CmpTraceLevel;
1497 extern BOOLEAN CmpMiniNTBoot;
1502 extern ERESOURCE CmpRegistryLock;
1506 extern CMHIVE CmControlHive;
1507 extern WCHAR CmDefaultLanguageId[];
1510 extern WCHAR CmInstallUILanguageId[];
1513 extern ULONG CmNtGlobalFlag;
1519 extern UNICODE_STRING CmTypeName[];
1520 extern UNICODE_STRING CmClassName[];
1522 extern USHORT CmpUnknownBusCount;
1523 extern ULONG CmpTypeCount[MaximumType + 1];
1528 extern BOOLEAN CmSelfHeal;
1529 extern BOOLEAN CmpSelfHeal;
1530 extern ULONG CmpBootType;
1533 extern BOOLEAN InitIsWinPEMode;
1534 extern ULONG CmpHashTableSize;
1536 extern BOOLEAN CmpNoWrite;
1538 extern BOOLEAN CmpWasSetupBoot;
1539 extern BOOLEAN CmpProfileLoaded;
1540 extern PCMHIVE CmiVolatileHive;
1542 extern BOOLEAN CmpHoldLazyFlush;
1543 
1544 //
1545 // Inlined functions
1546 //
1547 #include "cm_x.h"
struct _CM_SYSTEM_CONTROL_VECTOR * PCM_SYSTEM_CONTROL_VECTOR
PKGUARDED_MUTEX ViewLock
Definition: cm.h:399
IN CINT OUT PVOID IN ULONG OUT PULONG ResultLength
Definition: conport.c:47
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
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:431
PCHAR Identifier
Definition: cm.h:498
ULONG ConvKey
Definition: cm.h:165
const uint16_t * PCWSTR
Definition: typedefs.h:55
NTSTATUS NTAPI CmpCreateEvent(IN EVENT_TYPE EventType, OUT PHANDLE EventHandle, OUT PKEVENT *Event)
Definition: cmwraprs.c:19
#define IN
Definition: typedefs.h:38
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:320
PVOID AllocPage
Definition: cm.h:342
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:156
PWORK_QUEUE_ITEM UnloadWorkItem
Definition: cm.h:422
VOID NTAPI CmpLockHiveFlusherExclusive(IN PCMHIVE Hive)
Definition: cmsysini.c:1943
PCM_KEY_BODY KeyBodyArray[4]
Definition: cm.h:296
struct _CM_USE_COUNT_LOG * PCM_USE_COUNT_LOG
ULONG CmHiveFlags
Definition: cm.h:470
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:500
Definition: cm.h:136
_IRQL_requires_same_ _In_opt_ PVOID Argument1
Definition: cmtypes.h:694
Type
Definition: Type.h:6
struct _CM_NAME_CONTROL_BLOCK CM_NAME_CONTROL_BLOCK
EX_PUSH_LOCK Lock
Definition: cm.h:155
VOID NTAPI DelistKeyBodyFromKCB(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
Definition: cmkcbncb.c:1101
PVOID Stack[7]
Definition: cm.h:378
struct _KEY_INFORMATION * PKEY_INFORMATION
WCHAR RootDirectory[MAX_PATH]
Definition: format.c:74
HCELL_INDEX OldCell
Definition: cm.h:331
BOOLEAN ThreadStarted
Definition: cm.h:473
ULONG FreeCount
Definition: cm.h:340
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:260
ULONG ExtFlags
Definition: cm.h:264
#define ANYSIZE_ARRAY
Definition: typedefs.h:45
UNICODE_STRING CmSymbolicLinkValueName
Definition: cmdata.c:52
HCELL_INDEX NewCell
Definition: cm.h:332
UNICODE_STRING CmTypeName[]
Definition: cmdata.c:80
struct _CM_KEY_CONTROL_BLOCK * ParentKcb
Definition: cm.h:281
struct _CM_KEY_HASH_TABLE_ENTRY CM_KEY_HASH_TABLE_ENTRY
EX_PUSH_LOCK CmpHiveListHeadLock
Definition: cmdata.c:39
LONG SecurityHitHint
Definition: cm.h:416
_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:54
CACHED_CHILD_LIST ValueCache
Definition: cm.h:284
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:395
CM_USE_COUNT_LOG_ENTRY Log[32]
Definition: cm.h:385
ULONG NotifyPending
Definition: cm.h:323
_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:414
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:144
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:209
HCELL_INDEX KeyCell
Definition: cm.h:278
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
union _CM_CACHED_VALUE_INDEX::@1699 Data
VOID NTAPI CmpShutdownWorkers(VOID)
Definition: cmlazy.c:433
BOOLEAN Frozen
Definition: cm.h:421
BOOLEAN CmpNoVolatileCreates
Definition: cmsysini.c:32
CM_USE_COUNT_LOG UseCountLog
Definition: cm.h:428
PCMHIVE CmHive
Definition: cm.h:468
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:430
VOID NTAPI CmpCloseHiveFiles(IN PCMHIVE Hive)
Definition: cminit.c:631
LIST_ENTRY KeyBodyList
Definition: cm.h:232
ULONG FlushCount
Definition: cm.h:432
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:79
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:722
HCELL_INDEX CellIndex
Definition: cm.h:442
PCM_NAME_CONTROL_BLOCK NameBlock
Definition: cm.h:282
EX_PUSH_LOCK SecurityLock
Definition: cm.h:404
BOOLEAN InitIsWinPEMode
Definition: init.c:69
uint16_t * PWCHAR
Definition: typedefs.h:54
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:398
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:360
USHORT PinnedViews
Definition: cm.h:412
ULONG TotalLevels
Definition: cm.h:268
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:230
ULONG CreateOptions
Definition: cm.h:484
KEY_FULL_INFORMATION KeyFullInformation
Definition: cm.h:534
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:298
KEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInformation
Definition: cm.h:524
BOOLEAN CmpMiniNTBoot
Definition: cmdata.c:60
_In_opt_ PALLOCATE_FUNCTION Allocate
Definition: exfuncs.h:656
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:305
struct _CM_KEY_SECURITY_CACHE CM_KEY_SECURITY_CACHE
#define CMP_SECURITY_HASH_LISTS
Definition: cm.h:78
HANDLE ProcessID
Definition: cm.h:231
UNICODE_STRING FileUserName
Definition: cm.h:410
uint32_t ULONG_PTR
Definition: typedefs.h:63
ULONG HashKey[ANYSIZE_ARRAY]
Definition: cm.h:220
ULONG_PTR List[ANYSIZE_ARRAY]
Definition: cm.h:446
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:265
HCELL_INDEX KeyCell
Definition: cm.h:147
ULONG DescriptorLength
Definition: cm.h:188
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:458
ULONG Disposition
Definition: cm.h:485
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
ERESOURCE * PERESOURCE
Definition: env_spec_w32.h:595
HCELL_INDEX Cell
Definition: cm.h:197
struct _CM_CELL_REMAP_BLOCK * PCM_CELL_REMAP_BLOCK
KEY_BASIC_INFORMATION KeyBasicInformation
Definition: cm.h:533
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:210
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:472
USHORT KcbMaxValueNameLen
Definition: cm.h:300
CM_KEY_REFERENCE ChildHive
Definition: cm.h:486
ULONG Count
Definition: cm.h:206
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:177
LIST_ENTRY HiveList
Definition: cm.h:317
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1802
ULONG CmpTraceLevel
Definition: cmsysini.c:33
ULONG InDelayClose
Definition: cm.h:309
PCM_KEY_CONTROL_BLOCK RootKcb
Definition: cm.h:420
VOID NTAPI CmpUnlockRegistry(VOID)
Definition: cmsysini.c:1993
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
Definition: mmfuncs.h:396
ULONG GrowOffset
Definition: cm.h:424
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:369
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:394
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:377
unsigned char BOOLEAN
UNICODE_STRING FileFullPath
Definition: cm.h:409
struct _CACHED_CHILD_LIST * PCACHED_CHILD_LIST
struct _KEY_VALUE_INFORMATION * PKEY_VALUE_INFORMATION
ULONG SecurityCacheSize
Definition: cm.h:415
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:393
ULONG CmInstallUILanguageIdLength
Definition: cmdata.c:27
USHORT NameLength
Definition: cm.h:249
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:187
#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:167
PVOID NTAPI CmpAllocate(IN SIZE_T Size, IN BOOLEAN Paged, IN ULONG Tag)
Definition: registry.c:34
_VALUE_SEARCH_RETURN_TYPE
Definition: cm.h:132
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:240
LIST_ENTRY PostList
Definition: cm.h:318
_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:248
_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
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:229
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:433
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:483
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:76
ULONG HCELL_INDEX
Definition: hivedata.h:80
ULONG Filter
Definition: cm.h:321
BOOLEAN CmSelfHeal
Definition: cmdata.c:58
ULONG HashKey
Definition: cm.h:457
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:359
Definition: bzip2.c:1694
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:397
struct _CM_DELAY_ALLOC * PCM_DELAY_ALLOC
Definition: cm.h:195
static const UCHAR Index[8]
Definition: usbohci.c:18
USHORT Next
Definition: cm.h:383
BOOLEAN ExpInTextModeSetup
Definition: init.c:66
ULONG CmDefaultLanguageIdType
Definition: cmdata.c:24
Definition: cm.h:357
struct _KEY_INFORMATION KEY_INFORMATION
ULONG CmpConfigurationAreaSize
Definition: cmdata.c:36
ULONG DelayedCloseIndex
Definition: cm.h:267
_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:276
Definition: cm.h:174
PERESOURCE FlusherLock
Definition: cm.h:403
_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:1955
struct _CM_CACHED_VALUE_INDEX * PCM_CACHED_VALUE_INDEX
Definition: cm.h:375
LIST_ENTRY HiveList
Definition: cm.h:396
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:146
_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:487
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:384
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:406
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:401
BOOLEAN CmpSpecialBootCondition
Definition: cmsysini.c:28
enum _REG_NOTIFY_CLASS REG_NOTIFY_CLASS
USHORT MappedViews
Definition: cm.h:411
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:414
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:189
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:277
struct _CM_DELAYED_CLOSE_ENTRY * PCM_DELAYED_CLOSE_ENTRY
ULONG KcbDebug
Definition: cm.h:306
HANDLE CmpRegistryRootHandle
Definition: cmdata.c:66
BOOLEAN CmpProfileLoaded
Definition: cmsysini.c:31
Definition: typedefs.h:117
WCHAR CmInstallUILanguageId[]
Definition: cmdata.c:26
PKTHREAD ViewLockOwner
Definition: cm.h:400
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:359
CELL_DATA CellData
Definition: cm.h:445
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:402
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:413
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:408
LIST_ENTRY KeyBodyListHead
Definition: cm.h:293
Status
Definition: gdiplustypes.h:24
KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 KeyValuePartialInformationAlign64
Definition: cm.h:525
CMHIVE CmControlHive
Definition: cmdata.c:34
Definition: cm.h:153
LIST_ENTRY KnodeConvertListHead
Definition: cm.h:426
struct _CM_KEY_HASH_TABLE_ENTRY * PCM_KEY_HASH_TABLE_ENTRY
HCELL_INDEX Cell
Definition: cm.h:185
ULONG CmpTypeCount[MaximumType+1]
Definition: cmdata.c:64
struct _CMP_MF_TYPE CMP_MF_TYPE
ULONG_PTR SIZE_T
Definition: typedefs.h:78
USHORT RefCount
Definition: cm.h:241
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:482
ULONG KcbUserFlags
Definition: cm.h:304
VOID NTAPI CmpLockRegistry(VOID)
Definition: cmsysini.c:1907
KEY_NODE_INFORMATION KeyNodeInformation
Definition: cm.h:535
struct _CM_USE_COUNT_LOG_ENTRY * PCM_USE_COUNT_LOG_ENTRY
USHORT DataCacheType
Definition: cm.h:455
LIST_ENTRY ListEntry
Definition: cm.h:350
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:427
EX_PUSH_LOCK CmpLoadHiveLock
Definition: cmdata.c:39
PKTHREAD CreatorOwner
Definition: cm.h:434
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:151
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:523
VOID NTAPI CmpDereferenceKeyControlBlockWithLock(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmkcbncb.c:606
PKTHREAD HiveSecurityLockOwner
Definition: cm.h:405
LIST_ENTRY PinViewListHead
Definition: cm.h:407
PKEVENT UnloadEvent
Definition: cm.h:419
ULONG SubKeyCount
Definition: cm.h:289
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:319
struct _CM_DELAY_ALLOC CM_DELAY_ALLOC
static CMHIVE SystemHive
Definition: registry.c:57
ULONG WatchTree
Definition: cm.h:322
CM_USE_COUNT_LOG LockHiveLog
Definition: cm.h:429
IN ULONG IN ULONG Tag
Definition: evtlib.h:159
BOOLEAN Allocate
Definition: cm.h:474
_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:176
USHORT KcbMaxNameLen
Definition: cm.h:299
PCM_KEY_HASH Entry
Definition: cm.h:157
#define OUT
Definition: typedefs.h:39
PCM_KEY_SECURITY_CACHE_ENTRY SecurityCache
Definition: cm.h:417
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:490
unsigned int ULONG
Definition: retypes.h:1
PCM_NAME_HASH_TABLE_ENTRY CmpNameCacheTable
Definition: cmkcbncb.c:19
ULONG RefCount
Definition: cm.h:261
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:351
VOID NTAPI CmpRemoveKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:306
CM_KEY_HASH KeyHash
Definition: cm.h:272
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:471
BOOLEAN NTAPI CmpTestHiveFlusherLockShared(IN PCMHIVE Hive)
Definition: cmsysini.c:1977
USHORT InterfaceType
Definition: cm.h:499
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:467
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:297
VOID NTAPI CmpInitSecurityCache(IN PCMHIVE Hive)
Definition: cmsecach.c:21
enum _VALUE_SEARCH_RETURN_TYPE VALUE_SEARCH_RETURN_TYPE
ULONG Type
Definition: cm.h:228
_In_ ULONG _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
Definition: cmfuncs.h:93
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:283
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:488
KEY_VALUE_BASIC_INFORMATION KeyValueBasicInformation
Definition: cm.h:522
ULONG Reserved
Definition: cm.h:341
_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:166
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:244
PWSTR Name
Definition: cm.h:466
VOID NTAPI CmpRemoveFromHiveFileList(IN PCMHIVE Hive)
Definition: cmhvlist.c:254
ULONG HHiveFlags
Definition: cm.h:469
ULONG KcbMaxValueDataLen
Definition: cm.h:301
BOOLEAN CmpForceForceFlush
Definition: cmlazy.c:23
LIST_ENTRY FreeListEntry
Definition: cm.h:294
LIST_ENTRY SecurityHash[CMP_SECURITY_HASH_LISTS]
Definition: cm.h:418
VOID NTAPI CmpSetVersionData(VOID)
Definition: cmsysini.c:2116
PSECURITY_DESCRIPTOR NTAPI CmpHiveRootSecurityDescriptor(VOID)
Definition: cmse.c:22
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:198
_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:489
ULONG ACCESS_MASK
Definition: nt_native.h:40
PCM_INDEX_HINT_BLOCK IndexHint
Definition: cm.h:287
LIST_ENTRY KcbConvertListHead
Definition: cm.h:425
base of all file and directory entries
Definition: entries.h:82
LIST_ENTRY ListEntry
Definition: cm.h:368
VOID NTAPI CmpFlushNotify(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
Definition: cmnotify.c:30
LANGID PsDefaultUILanguageId
Definition: locale.c:24
Definition: cm.h:391
struct _CM_KEY_HASH * NextHash
Definition: cm.h:145
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:456
struct _CM_INDEX_HINT_BLOCK CM_INDEX_HINT_BLOCK
Definition: dlist.c:348
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
Definition: cdprocs.h:806
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:423
VOID NTAPI CmpAcquireTwoKcbLocksExclusiveByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
Definition: cmsysini.c:2021