ReactOS  0.4.15-dev-4614-ga5a6101
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 
9 #pragma once
10 
11 #include <cmlib.h>
12 #include <cmreslist.h>
13 #include "cmboot.h"
14 
15 //
16 // Define this if you want debugging support
17 //
18 #define _CM_DEBUG_ 0x00
19 
20 //
21 // These define the Debug Masks Supported
22 //
23 #define CM_HANDLE_DEBUG 0x01
24 #define CM_NAMESPACE_DEBUG 0x02
25 #define CM_SECURITY_DEBUG 0x04
26 #define CM_REFERENCE_DEBUG 0x08
27 #define CM_CALLBACK_DEBUG 0x10
28 
29 //
30 // Debug/Tracing support
31 //
32 #if _CM_DEBUG_
33 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
34 #define CMTRACE DbgPrintEx
35 #else
36 #define CMTRACE(x, ...) \
37  if (x & CmpTraceLevel) DbgPrint(__VA_ARGS__)
38 #endif
39 #else
40 #define CMTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
41 #endif
42 
43 //
44 // Hack since bigkeys are not yet supported
45 //
46 #define ASSERT_VALUE_BIG(h, s) \
47  ASSERTMSG("Big keys not supported!\n", !CmpIsKeyValueBig(h, s));
48 
49 //
50 // CM_KEY_CONTROL_BLOCK Signatures
51 //
52 #define CM_KCB_SIGNATURE 'bKmC'
53 #define CM_KCB_INVALID_SIGNATURE '4FmC'
54 
55 //
56 // CM_KEY_CONTROL_BLOCK ExtFlags
57 //
58 #define CM_KCB_NO_SUBKEY 0x01
59 #define CM_KCB_SUBKEY_ONE 0x02
60 #define CM_KCB_SUBKEY_HINT 0x04
61 #define CM_KCB_SYM_LINK_FOUND 0x08
62 #define CM_KCB_KEY_NON_EXIST 0x10
63 #define CM_KCB_NO_DELAY_CLOSE 0x20
64 #define CM_KCB_INVALID_CACHED_INFO 0x40
65 #define CM_KCB_READ_ONLY_KEY 0x80
66 
67 //
68 // CM_KEY_BODY Types
69 //
70 #define CM_KEY_BODY_TYPE 0x6B793032
71 
72 //
73 // CM_KEY_VALUE Types
74 //
75 #define CM_KEY_VALUE_SMALL 0x4
76 #define CM_KEY_VALUE_BIG 0x3FD8
77 #define CM_KEY_VALUE_SPECIAL_SIZE 0x80000000
78 
79 //
80 // Number of various lists and hashes
81 //
82 #define CMP_SECURITY_HASH_LISTS 64
83 #define CMP_MAX_CALLBACKS 100
84 
85 //
86 // Hashing Constants
87 //
88 #define CMP_HASH_IRRATIONAL 314159269
89 #define CMP_HASH_PRIME 1000000007
90 
91 //
92 // CmpCreateKeyControlBlock Flags
93 //
94 #define CMP_CREATE_FAKE_KCB 0x1
95 #define CMP_LOCK_HASHES_FOR_KCB 0x2
96 
97 //
98 // CmpDoCreate and CmpDoOpen flags
99 //
100 #define CMP_CREATE_KCB_KCB_LOCKED 0x2
101 #define CMP_OPEN_KCB_NO_CREATE 0x4
102 
103 //
104 // EnlistKeyBodyWithKCB Flags
105 //
106 #define CMP_ENLIST_KCB_LOCKED_SHARED 0x1
107 #define CMP_ENLIST_KCB_LOCKED_EXCLUSIVE 0x2
108 
109 //
110 // Unload Flags
111 //
112 #define CMP_UNLOCK_KCB_LOCKED 0x1
113 #define CMP_UNLOCK_REGISTRY_LOCKED 0x2
114 
115 //
116 // Maximum size of Value Cache
117 //
118 #define MAXIMUM_CACHED_DATA 2 * PAGE_SIZE
119 
120 //
121 // Hives to load on startup
122 //
123 #define CM_NUMBER_OF_MACHINE_HIVES 6
124 
125 //
126 // Number of items that can fit inside an Allocation Page
127 //
128 #define CM_KCBS_PER_PAGE \
129  ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_KEY_CONTROL_BLOCK))
130 #define CM_DELAYS_PER_PAGE \
131  ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_DELAY_ALLOC))
132 
133 //
134 // Value Search Results
135 //
137 {
142 
143 //
144 // Key Hash
145 //
146 typedef struct _CM_KEY_HASH
147 {
153 
154 //
155 // Key Hash Table Entry
156 //
158 {
163 
164 //
165 // Name Hash
166 //
167 typedef struct _CM_NAME_HASH
168 {
174 
175 //
176 // Name Hash Table Entry
177 //
179 {
183 
184 //
185 // Key Security Cache
186 //
188 {
195 
196 //
197 // Key Security Cache Entry
198 //
200 {
204 
205 //
206 // Cached Child List
207 //
208 typedef struct _CACHED_CHILD_LIST
209 {
211  union
212  {
215  };
217 
218 //
219 // Index Hint Block
220 //
221 typedef struct _CM_INDEX_HINT_BLOCK
222 {
226 
227 //
228 // Key Body
229 //
230 typedef struct _CM_KEY_BODY
231 {
238 
239 //
240 // Name Control Block (NCB)
241 //
243 {
246  union
247  {
249  struct
250  {
255  };
256  };
258 
259 //
260 // Key Control Block (KCB)
261 //
262 typedef struct _CM_KEY_CONTROL_BLOCK
263 {
266  struct
267  {
273  };
274  union
275  {
277  struct
278  {
283  };
284  };
289  union
290  {
294  };
295  union
296  {
299  };
306  struct
307  {
311  ULONG Flags : 16;
312  };
315 
316 //
317 // Notify Block
318 //
319 typedef struct _CM_NOTIFY_BLOCK
320 {
329 
330 //
331 // Re-map Block
332 //
333 typedef struct _CM_CELL_REMAP_BLOCK
334 {
338 
339 //
340 // Allocation Page
341 //
342 typedef struct _CM_ALLOC_PAGE
343 {
348 
349 //
350 // Allocation Page Entry
351 //
352 typedef struct _CM_DELAY_ALLOC
353 {
357 
358 //
359 // Delayed Close Entry
360 //
362 {
366 
367 //
368 // Delayed KCB Dereference Entry
369 //
371 {
375 
376 //
377 // Use Count Log and Entry
378 //
380 {
384 
385 typedef struct _CM_USE_COUNT_LOG
386 {
391 
392 //
393 // Configuration Manager Hive Structure
394 //
395 typedef struct _CMHIVE
396 {
439 } CMHIVE, *PCMHIVE;
440 
441 //
442 // Cached Value Index
443 //
445 {
447  union
448  {
451  } Data;
453 
454 //
455 // Cached Value
456 //
457 typedef struct _CM_CACHED_VALUE
458 {
464 
465 //
466 // Hive List Entry
467 //
468 typedef struct _HIVE_LIST_ENTRY
469 {
480 
481 //
482 // Parse context for Key Object
483 //
484 typedef struct _CM_PARSE_CONTEXT
485 {
496 
497 //
498 // MultiFunction Adapter Recognizer Structure
499 //
500 typedef struct _CMP_MF_TYPE
501 {
506 
507 //
508 // System Control Vector
509 //
511 {
518 
519 //
520 // Structure for CmpQueryValueDataFromCache
521 //
523 {
524  union
525  {
530  };
532 
533 typedef struct _KEY_INFORMATION
534 {
535  union
536  {
540  };
542 
544 //
545 // BUGBUG Old Hive Stuff for Temporary Support
546 //
549 
550 //
551 // Mapped View Hive Functions
552 //
553 VOID
554 NTAPI
556  IN PCMHIVE Hive
557 );
558 
559 VOID
560 NTAPI
562  IN PCMHIVE Hive
563 );
564 
565 //
566 // Security Cache Functions
567 //
568 VOID
569 NTAPI
571  IN PCMHIVE Hive
572 );
573 
574 VOID
575 NTAPI
577  IN PCMHIVE Hive
578 );
579 
580 //
581 // Value Cache Functions
582 //
584 NTAPI
588  OUT PCM_CACHED_VALUE **CachedValue,
589  OUT ULONG *Index,
591  OUT BOOLEAN *ValueIsCached,
592  OUT PHCELL_INDEX CellToRelease
593 );
594 
596 NTAPI
599  IN PCM_CACHED_VALUE *CachedValue,
600  IN PCM_KEY_VALUE ValueKey,
601  IN BOOLEAN ValueIsCached,
603  IN PVOID KeyValueInformation,
604  IN ULONG Length,
607 );
608 
610 NTAPI
613  OUT PCELL_DATA *CellData,
614  OUT BOOLEAN *IndexIsCached,
615  OUT PHCELL_INDEX ValueListToRelease
616 );
617 
619 NTAPI
622  IN PCELL_DATA CellData,
623  IN ULONG Index,
624  OUT PCM_CACHED_VALUE **CachedValue,
626  IN BOOLEAN IndexIsCached,
627  OUT BOOLEAN *ValueIsCached,
628  OUT PHCELL_INDEX CellToRelease
629 );
630 
632 NTAPI
636  IN ULONG Type,
637  IN PVOID Data,
639 );
640 
641 //
642 // Registry Validation Functions
643 //
644 ULONG
645 NTAPI
647  IN PCMHIVE Hive,
648  IN ULONG Flags
649 );
650 
651 //
652 // Hive List Routines
653 //
654 BOOLEAN
655 NTAPI
657  IN PCMHIVE Hive,
658  OUT PUNICODE_STRING HiveName
659 );
660 
661 NTSTATUS
662 NTAPI
664  IN PCMHIVE Hive
665 );
666 
667 VOID
668 NTAPI
670  IN PCMHIVE Hive
671 );
672 
673 //
674 // Quota Routines
675 //
676 VOID
677 NTAPI
679  VOID
680 );
681 
682 //
683 // Notification Routines
684 //
685 VOID
686 NTAPI
689  IN PHHIVE Hive,
690  IN HCELL_INDEX Cell,
691  IN ULONG Filter
692 );
693 
694 VOID
695 NTAPI
697  IN PCM_KEY_BODY KeyBody,
698  IN BOOLEAN LockHeld
699 );
700 
701 CODE_SEG("INIT")
702 VOID
703 NTAPI
705  VOID
706 );
707 
708 //
709 // KCB Cache/Delay Routines
710 //
711 CODE_SEG("INIT")
712 VOID
713 NTAPI
715  VOID
716 );
717 
718 CODE_SEG("INIT")
719 VOID
720 NTAPI
722  VOID
723 );
724 
725 CODE_SEG("INIT")
726 VOID
727 NTAPI
729  VOID
730 );
731 
732 CODE_SEG("INIT")
733 VOID
734 NTAPI
736  VOID
737 );
738 
739 //
740 // Key Object Routines
741 //
742 VOID
743 NTAPI
746  IN PVOID Object,
749  IN ULONG SystemHandleCount
750 );
751 
752 VOID
753 NTAPI
755  IN PVOID Object
756 );
757 
758 NTSTATUS
759 NTAPI
761  IN PVOID ParseObject,
766  IN OUT PUNICODE_STRING CompleteName,
770  OUT PVOID *Object
771 );
772 
773 NTSTATUS
774 NTAPI
776  IN PVOID Object,
777  IN SECURITY_OPERATION_CODE OperationType,
780  IN OUT PULONG CapturedLength,
781  IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor,
784 );
785 
786 NTSTATUS
787 NTAPI
789  IN PVOID Object,
790  IN BOOLEAN HasObjectName,
791  OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
792  IN ULONG Length,
795 );
796 
797 //
798 // Hive Routines
799 //
800 NTSTATUS
801 NTAPI
803  OUT PCMHIVE *CmHive,
804  IN ULONG OperationType,
805  IN ULONG HiveFlags,
806  IN ULONG FileType,
807  IN PVOID HiveData OPTIONAL,
808  IN HANDLE Primary,
809  IN HANDLE Log,
812  IN ULONG CheckFlags
813 );
814 
815 NTSTATUS
816 NTAPI
818  IN PCMHIVE CmHive
819 );
820 
822 NTAPI
824  VOID
825 );
826 
827 NTSTATUS
828 NTAPI
830  IN PUNICODE_STRING LinkName,
832  IN PCMHIVE CmHive,
835 );
836 
837 NTSTATUS
838 NTAPI
840  IN PCUNICODE_STRING BaseName,
842  OUT PHANDLE Primary,
843  OUT PHANDLE Log,
844  OUT PULONG PrimaryDisposition,
845  OUT PULONG LogDisposition,
846  IN BOOLEAN CreateAllowed,
847  IN BOOLEAN MarkAsSystemHive,
848  IN BOOLEAN NoBuffering,
850 );
851 
852 VOID
853 NTAPI
855  IN PCMHIVE Hive
856 );
857 
858 NTSTATUS
859 NTAPI
861  IN PCUNICODE_STRING HiveName,
862  IN ULONG HiveFlags,
863  OUT PCMHIVE *Hive,
864  IN OUT PBOOLEAN New,
865  IN ULONG CheckFlags
866 );
867 
868 VOID
869 NTAPI
871  VOID
872 );
873 
874 //
875 // Registry Utility Functions
876 //
877 BOOLEAN
878 NTAPI
880  VOID
881 );
882 
883 BOOLEAN
884 NTAPI
886  VOID
887 );
888 
889 VOID
890 NTAPI
892  VOID
893 );
894 
895 VOID
896 NTAPI
898  VOID
899 );
900 
901 VOID
902 NTAPI
904  VOID
905 );
906 
907 VOID
908 NTAPI
910  IN PCMHIVE Hive
911 );
912 
913 VOID
914 NTAPI
916  IN PCMHIVE Hive
917 );
918 
919 BOOLEAN
920 NTAPI
922  IN PCMHIVE Hive
923 );
924 
925 BOOLEAN
926 NTAPI
928  IN PCMHIVE Hive
929 );
930 
931 VOID
932 NTAPI
934  IN PCMHIVE Hive
935 );
936 
937 //
938 // Delay Functions
939 //
940 PVOID
941 NTAPI
943  VOID
944 );
945 
946 VOID
947 NTAPI
949  PVOID Entry
950 );
951 
952 VOID
953 NTAPI
956 );
957 
958 VOID
959 NTAPI
962  IN BOOLEAN LockHeldExclusively
963 );
964 
965 VOID
966 NTAPI
968  VOID
969 );
970 
971 VOID
972 NTAPI
974 
975 CODE_SEG("INIT")
976 VOID
977 NTAPI
979  VOID
980 );
981 
982 //
983 // KCB Functions
984 //
986 NTAPI
988  IN PHHIVE Hive,
992  IN ULONG Flags,
994 );
995 
997 NTAPI
999  VOID
1000 );
1001 
1002 VOID
1003 NTAPI
1006 );
1007 
1008 VOID
1009 NTAPI
1012 );
1013 
1014 VOID
1015 NTAPI
1018 );
1019 
1020 VOID
1021 NTAPI
1024  IN BOOLEAN LockHeldExclusively
1025 );
1026 
1027 VOID
1028 NTAPI
1031 );
1032 
1034 NTAPI
1037 );
1038 
1039 BOOLEAN
1040 NTAPI
1043 );
1044 
1045 VOID
1046 NTAPI
1049  IN BOOLEAN LockHeldExclusively
1050 );
1051 
1052 VOID
1053 NTAPI
1056 );
1057 
1058 VOID
1059 NTAPI
1061  IN PCM_KEY_BODY KeyObject,
1062  IN ULONG Flags
1063 );
1064 
1065 VOID
1066 NTAPI
1068  IN PCM_KEY_BODY KeyBody,
1069  IN BOOLEAN LockHeld
1070 );
1071 
1072 VOID
1073 NTAPI
1075  IN ULONG ConvKey1,
1076  IN ULONG ConvKey2
1077 );
1078 
1079 VOID
1080 NTAPI
1082  IN ULONG ConvKey1,
1083  IN ULONG ConvKey2
1084 );
1085 
1086 VOID
1087 NTAPI
1090  IN BOOLEAN LockHeld
1091 );
1092 
1093 //
1094 // Parse Routines
1095 //
1096 BOOLEAN
1097 NTAPI
1100  OUT PUNICODE_STRING NextName,
1101  OUT PBOOLEAN LastName
1102 );
1103 
1104 //
1105 // Command Routines (Flush, Open, Close, Init);
1106 //
1107 BOOLEAN
1108 NTAPI
1110  IN BOOLEAN ForceFlush
1111 );
1112 
1113 VOID
1114 NTAPI
1116  VOID
1117 );
1118 
1119 VOID
1120 NTAPI
1121 CmpCmdInit(
1122  IN BOOLEAN SetupBoot
1123 );
1124 
1125 NTSTATUS
1126 NTAPI
1129  IN PSECURITY_CLIENT_CONTEXT ImpersonationContext,
1131  OUT PCMHIVE *NewHive,
1132  IN ULONG CheckFlags
1133 );
1134 
1135 VOID
1136 NTAPI
1137 CmpLazyFlush(
1138  VOID
1139 );
1140 
1141 //
1142 // Open/Create Routines
1143 //
1144 NTSTATUS
1145 NTAPI
1146 CmpDoCreate(
1147  IN PHHIVE Hive,
1148  IN HCELL_INDEX Cell,
1153  IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1154  OUT PVOID *Object
1155 );
1156 
1157 NTSTATUS
1158 NTAPI
1160  IN PHHIVE Hive,
1161  IN HCELL_INDEX Cell,
1167  IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1168  OUT PVOID *Object
1169 );
1170 
1171 //
1172 // Boot Routines
1173 //
1174 CODE_SEG("INIT")
1175 VOID
1176 NTAPI
1178  IN PVOID SystemHiveData,
1179  IN PCM_SYSTEM_CONTROL_VECTOR ControlVector
1180 );
1181 
1182 NTSTATUS
1183 NTAPI
1185  IN USHORT ControlSet
1186 );
1187 
1188 //
1189 // Hardware Configuration Routines
1190 //
1191 CODE_SEG("INIT")
1192 NTSTATUS
1193 NTAPI
1195  IN PCONFIGURATION_COMPONENT_DATA CurrentEntry,
1197  OUT PHANDLE NewHandle,
1199  IN ULONG BusNumber,
1200  IN PUSHORT DeviceIndexTable
1201 );
1202 
1203 NTSTATUS
1204 NTAPI
1206  IN PLOADER_PARAMETER_BLOCK LoaderBlock
1207 );
1208 
1209 CODE_SEG("INIT")
1210 NTSTATUS
1211 NTAPI
1213  IN PLOADER_PARAMETER_BLOCK LoaderBlock
1214 );
1215 
1216 //
1217 // Wrapper Routines
1218 //
1219 NTSTATUS
1220 NTAPI
1224  OUT PKEVENT *Event
1225 );
1226 
1227 PVOID
1228 NTAPI
1229 CmpAllocate(
1230  IN SIZE_T Size,
1231  IN BOOLEAN Paged,
1232  IN ULONG Tag
1233 );
1234 
1235 VOID
1236 NTAPI
1237 CmpFree(
1238  IN PVOID Ptr,
1239  IN ULONG Quota
1240 );
1241 
1242 BOOLEAN
1243 NTAPI
1244 CmpFileRead(
1245  IN PHHIVE RegistryHive,
1246  IN ULONG FileType,
1248  OUT PVOID Buffer,
1250 );
1251 
1252 BOOLEAN
1253 NTAPI
1254 CmpFileWrite(
1255  IN PHHIVE RegistryHive,
1256  IN ULONG FileType,
1258  IN PVOID Buffer,
1260 );
1261 
1262 BOOLEAN
1263 NTAPI
1265  IN PHHIVE RegistryHive,
1266  IN ULONG FileType,
1267  IN ULONG FileSize,
1268  IN ULONG OldFileSize
1269 );
1270 
1271 BOOLEAN
1272 NTAPI
1273 CmpFileFlush(
1274  IN PHHIVE RegistryHive,
1275  IN ULONG FileType,
1277  IN ULONG Length
1278 );
1279 
1280 //
1281 // Configuration Manager side of Registry System Calls
1282 //
1283 NTSTATUS
1284 NTAPI
1287  IN ULONG Index,
1289  IN PVOID KeyValueInformation,
1290  IN ULONG Length,
1292 
1293 NTSTATUS
1294 NTAPI
1298  IN ULONG Type,
1299  IN PVOID Data,
1300  IN ULONG DataSize);
1301 
1302 NTSTATUS
1303 NTAPI
1306  IN PVOID KeyInformation,
1307  IN ULONG Length,
1309 );
1310 
1311 NTSTATUS
1312 NTAPI
1314  IN ULONG Index,
1316  IN PVOID KeyInformation,
1317  IN ULONG Length,
1319 );
1320 
1321 NTSTATUS
1322 NTAPI
1323 CmDeleteKey(
1324  IN PCM_KEY_BODY KeyBody
1325 );
1326 
1327 NTSTATUS
1328 NTAPI
1329 CmFlushKey(
1331  IN BOOLEAN EclusiveLock
1332 );
1333 
1334 NTSTATUS
1335 NTAPI
1339 );
1340 
1341 NTSTATUS
1342 NTAPI
1347  IN PVOID KeyValueInformation,
1348  IN ULONG Length,
1350 );
1351 
1352 NTSTATUS
1353 NTAPI
1354 CmLoadKey(
1355  IN POBJECT_ATTRIBUTES TargetKey,
1356  IN POBJECT_ATTRIBUTES SourceFile,
1357  IN ULONG Flags,
1358  IN PCM_KEY_BODY KeyBody
1359 );
1360 
1361 NTSTATUS
1362 NTAPI
1363 CmUnloadKey(
1365  IN ULONG Flags
1366 );
1367 
1368 ULONG
1369 NTAPI
1371  IN PCM_KEY_CONTROL_BLOCK RootKcb,
1372  IN BOOLEAN RemoveEmptyCacheEntries,
1373  IN BOOLEAN DereferenceOpenedEntries
1374 );
1375 
1377 NTAPI
1378 CmpCopyCell(
1379  IN PHHIVE SourceHive,
1380  IN HCELL_INDEX SourceCell,
1381  IN PHHIVE DestinationHive,
1382  IN HSTORAGE_TYPE StorageType
1383 );
1384 
1385 NTSTATUS
1386 NTAPI
1388  IN PHHIVE SourceHive,
1389  IN HCELL_INDEX SrcKeyCell,
1390  IN PHHIVE DestinationHive,
1391  IN HSTORAGE_TYPE StorageType,
1392  OUT PHCELL_INDEX DestKeyCell OPTIONAL
1393 );
1394 
1395 NTSTATUS
1396 NTAPI
1397 CmSaveKey(
1400  IN ULONG Flags
1401 );
1402 
1403 NTSTATUS
1404 NTAPI
1406  IN PCM_KEY_CONTROL_BLOCK HighKcb,
1407  IN PCM_KEY_CONTROL_BLOCK LowKcb,
1409 );
1410 
1411 //
1412 // Startup and Shutdown
1413 //
1414 CODE_SEG("INIT")
1415 BOOLEAN
1416 NTAPI
1418  VOID
1419 );
1420 
1421 VOID
1422 NTAPI
1424  VOID
1425 );
1426 
1427 VOID
1428 NTAPI
1430  IN BOOLEAN Enable
1431 );
1432 
1433 VOID
1434 NTAPI
1436  VOID
1437 );
1438 
1439 //
1440 // Driver List Routines
1441 //
1442 CODE_SEG("INIT")
1444 NTAPI
1446  VOID
1447 );
1448 
1449 //
1450 // Global variables accessible from all of Cm
1451 //
1452 extern ULONG CmpTraceLevel;
1456 extern BOOLEAN CmpMiniNTBoot;
1461 extern ERESOURCE CmpRegistryLock;
1465 extern CMHIVE CmControlHive;
1466 extern WCHAR CmDefaultLanguageId[];
1469 extern WCHAR CmInstallUILanguageId[];
1472 extern ULONG CmNtGlobalFlag;
1478 extern UNICODE_STRING CmTypeName[];
1479 extern UNICODE_STRING CmClassName[];
1481 extern USHORT CmpUnknownBusCount;
1482 extern ULONG CmpTypeCount[MaximumType + 1];
1487 extern BOOLEAN CmSelfHeal;
1488 extern BOOLEAN CmpSelfHeal;
1489 extern ULONG CmpBootType;
1492 extern BOOLEAN InitIsWinPEMode;
1493 extern ULONG CmpHashTableSize;
1495 extern BOOLEAN CmpNoWrite;
1497 extern BOOLEAN CmpWasSetupBoot;
1498 extern BOOLEAN CmpProfileLoaded;
1499 extern PCMHIVE CmiVolatileHive;
1501 extern BOOLEAN CmpHoldLazyFlush;
1502 
1503 //
1504 // Inlined functions
1505 //
1506 #include "cm_x.h"
struct _CM_SYSTEM_CONTROL_VECTOR * PCM_SYSTEM_CONTROL_VECTOR
PKGUARDED_MUTEX ViewLock
Definition: cm.h:403
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:2621
UNICODE_STRING CmClassName[]
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:1139
* PNTSTATUS
Definition: strlen.c:14
BOOLEAN NTAPI CmpTestRegistryLockExclusive(VOID)
Definition: cmsysini.c:1886
ObjectType
Definition: metafile.c:80
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
Definition: dumpinfo.c:39
LIST_ENTRY TrustClassEntry
Definition: cm.h:435
PCHAR Identifier
Definition: cm.h:502
ULONG ConvKey
Definition: cm.h:169
const uint16_t * PCWSTR
Definition: typedefs.h:57
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
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3767
UNICODE_STRING CmpSystemStartOptions
PCM_KEY_BODY KeyBody
Definition: cm.h:324
PVOID AllocPage
Definition: cm.h:346
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:160
PWORK_QUEUE_ITEM UnloadWorkItem
Definition: cm.h:426
VOID NTAPI CmpLockHiveFlusherExclusive(IN PCMHIVE Hive)
Definition: cmsysini.c:1894
PCM_KEY_BODY KeyBodyArray[4]
Definition: cm.h:300
struct _CM_USE_COUNT_LOG * PCM_USE_COUNT_LOG
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
ULONG CmHiveFlags
Definition: cm.h:474
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:504
Definition: cm.h:140
_IRQL_requires_same_ _In_opt_ PVOID Argument1
Definition: cmtypes.h:696
struct _CM_NAME_CONTROL_BLOCK CM_NAME_CONTROL_BLOCK
EX_PUSH_LOCK Lock
Definition: cm.h:159
VOID NTAPI DelistKeyBodyFromKCB(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
Definition: cmkcbncb.c:1100
struct _KEY_INFORMATION * PKEY_INFORMATION
WCHAR RootDirectory[MAX_PATH]
Definition: format.c:74
HCELL_INDEX OldCell
Definition: cm.h:335
BOOLEAN ThreadStarted
Definition: cm.h:477
ULONG FreeCount
Definition: cm.h:344
NTSTATUS CmiCallRegisteredCallbacks(IN REG_NOTIFY_CLASS Argument1, IN PVOID Argument2)
Definition: cmhook.c:59
_In_ ULONG _In_ KEY_INFORMATION_CLASS KeyInformationClass
Definition: zwfuncs.h:166
enum _KEY_INFORMATION_CLASS KEY_INFORMATION_CLASS
ULONG Signature
Definition: cm.h:264
ULONG ExtFlags
Definition: cm.h:268
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
UNICODE_STRING CmSymbolicLinkValueName
Definition: cmdata.c:52
HCELL_INDEX NewCell
Definition: cm.h:336
UNICODE_STRING CmTypeName[]
struct _CM_KEY_CONTROL_BLOCK * ParentKcb
Definition: cm.h:285
struct _CM_KEY_HASH_TABLE_ENTRY CM_KEY_HASH_TABLE_ENTRY
EX_PUSH_LOCK CmpHiveListHeadLock
Definition: cmdata.c:39
PUNICODE_STRING *NTAPI CmGetSystemDriverList(VOID)
Definition: cmsysini.c:1727
LONG SecurityHitHint
Definition: cm.h:420
_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:56
CACHED_CHILD_LIST ValueCache
Definition: cm.h:288
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:1030
BOOLEAN CmpNoWrite
Definition: cmsysini.c:29
LIST_ENTRY NotifyList
Definition: cm.h:399
CM_USE_COUNT_LOG_ENTRY Log[32]
Definition: cm.h:389
ULONG NotifyPending
Definition: cm.h:327
_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:418
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
LONG NTSTATUS
Definition: precomp.h:26
struct _CM_NAME_HASH * PCM_NAME_HASH
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
Definition: ntddpcm.h:140
ULONG ConvKey
Definition: cm.h:148
VOID NTAPI CmpAddToDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmdelay.c:350
VOID NTAPI CmpInitDelayDerefKCBEngine(VOID)
Definition: cmdelay.c:268
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:213
HCELL_INDEX KeyCell
Definition: cm.h:282
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:425
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
BOOLEAN CmpNoVolatileCreates
Definition: cmsysini.c:32
CM_USE_COUNT_LOG UseCountLog
Definition: cm.h:432
PCMHIVE CmHive
Definition: cm.h:472
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:434
VOID NTAPI CmpCloseHiveFiles(IN PCMHIVE Hive)
Definition: cminit.c:631
LIST_ENTRY KeyBodyList
Definition: cm.h:236
VOID NTAPI CmpInitializeCache(VOID)
Definition: cmkcbncb.c:26
ULONG FlushCount
Definition: cm.h:436
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
VOID NTAPI CmpInitCallback(VOID)
Definition: cmhook.c:38
struct _CM_NOTIFY_BLOCK CM_NOTIFY_BLOCK
WORD LANGID
Definition: typedefs.h:81
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:446
PCM_NAME_CONTROL_BLOCK NameBlock
Definition: cm.h:286
EX_PUSH_LOCK SecurityLock
Definition: cm.h:408
BOOLEAN InitIsWinPEMode
Definition: init.c:72
uint16_t * PWCHAR
Definition: typedefs.h:56
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:402
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:364
USHORT PinnedViews
Definition: cm.h:416
ULONG TotalLevels
Definition: cm.h:272
struct _CM_NOTIFY_BLOCK * NotifyBlock
Definition: cm.h:234
ULONG CreateOptions
Definition: cm.h:488
KEY_FULL_INFORMATION KeyFullInformation
Definition: cm.h:538
CMP_MF_TYPE CmpMultifunctionTypes[]
LARGE_INTEGER KcbLastWriteTime
Definition: cm.h:302
KEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInformation
Definition: cm.h:528
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:1936
ULONG KcbVirtControlFlags
Definition: cm.h:309
struct _CM_KEY_SECURITY_CACHE CM_KEY_SECURITY_CACHE
#define CMP_SECURITY_HASH_LISTS
Definition: cm.h:82
HANDLE ProcessID
Definition: cm.h:235
UNICODE_STRING FileUserName
Definition: cm.h:414
uint32_t ULONG_PTR
Definition: typedefs.h:65
ULONG HashKey[ANYSIZE_ARRAY]
Definition: cm.h:224
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
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
Definition: wdfrequest.h:636
VOID NTAPI CmpUnlockHiveFlusher(IN PCMHIVE Hive)
Definition: cmsysini.c:1916
ULONG PrivateAlloc
Definition: cm.h:269
HCELL_INDEX KeyCell
Definition: cm.h:151
ULONG DescriptorLength
Definition: cm.h:192
struct _HIVE_LIST_ENTRY HIVE_LIST_ENTRY
HANDLE FileHandle
Definition: stats.c:38
CM_KEY_VALUE KeyValue
Definition: cm.h:462
ULONG Disposition
Definition: cm.h:489
ERESOURCE * PERESOURCE
Definition: env_spec_w32.h:595
HCELL_INDEX Cell
Definition: cm.h:201
struct _CM_CELL_REMAP_BLOCK * PCM_CELL_REMAP_BLOCK
KEY_BASIC_INFORMATION KeyBasicInformation
Definition: cm.h:537
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:214
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:476
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
Definition: wdfdevice.h:2739
USHORT KcbMaxValueNameLen
Definition: cm.h:304
CM_KEY_REFERENCE ChildHive
Definition: cm.h:490
ULONG Count
Definition: cm.h:210
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
PCM_NAME_HASH Entry
Definition: cm.h:181
LIST_ENTRY HiveList
Definition: cm.h:321
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
ULONG CmpTraceLevel
Definition: cmsysini.c:33
ULONG InDelayClose
Definition: cm.h:313
PCM_KEY_CONTROL_BLOCK RootKcb
Definition: cm.h:424
VOID NTAPI CmpUnlockRegistry(VOID)
Definition: cmsysini.c:1944
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
Definition: mmfuncs.h:395
ULONG GrowOffset
Definition: cm.h:428
struct _CM_KEY_CONTROL_BLOCK * PCM_KEY_CONTROL_BLOCK
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:373
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:398
LANGID PsInstallUILanguageId
Definition: locale.c:21
struct _HIVE_LIST_ENTRY * PHIVE_LIST_ENTRY
HCELL_INDEX Cell
Definition: cm.h:381
unsigned char BOOLEAN
UNICODE_STRING FileFullPath
Definition: cm.h:413
struct _CACHED_CHILD_LIST * PCACHED_CHILD_LIST
struct _KEY_VALUE_INFORMATION * PKEY_VALUE_INFORMATION
ULONG SecurityCacheSize
Definition: cm.h:419
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:397
ULONG CmInstallUILanguageIdLength
Definition: cmdata.c:27
USHORT NameLength
Definition: cm.h:253
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:403
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1339
Definition: bufpool.h:45
LIST_ENTRY List
Definition: cm.h:191
#define HFILE_TYPE_MAX
Definition: hivedata.h:36
struct _CM_KEY_CONTROL_BLOCK CM_KEY_CONTROL_BLOCK
VOID NTAPI CmpLockRegistryExclusive(VOID)
Definition: cmsysini.c:1845
struct _CM_KEY_SECURITY_CACHE_ENTRY * PCM_KEY_SECURITY_CACHE_ENTRY
USHORT NameLength
Definition: cm.h:171
PVOID NTAPI CmpAllocate(IN SIZE_T Size, IN BOOLEAN Paged, IN ULONG Tag)
Definition: registry.c:46
_VALUE_SEARCH_RETURN_TYPE
Definition: cm.h:136
BOOLEAN CmpShareSystemHives
Definition: cmdata.c:57
struct _CM_DELAY_DEREF_KCB_ITEM CM_DELAY_DEREF_KCB_ITEM
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
Definition: wdfdevice.h:2697
_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:244
LIST_ENTRY PostList
Definition: cm.h:322
_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:252
BOOLEAN NTAPI CmInitSystem1(VOID)
Definition: cmsysini.c:1511
_In_ PVOID Argument2
Definition: classpnp.h:721
NTSTATUS NTAPI CmSaveKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN HANDLE FileHandle, IN ULONG Flags)
Definition: cmapi.c:2638
NTSTATUS NTAPI CmUnloadKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN ULONG Flags)
Definition: cmapi.c:2195
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
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:406
struct _CM_KEY_CONTROL_BLOCK * KeyControlBlock
Definition: cm.h:233
Status
Definition: gdiplustypes.h:24
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:57
struct _CM_USE_COUNT_LOG CM_USE_COUNT_LOG
VOID NTAPI CmpSetGlobalQuotaAllowed(VOID)
Definition: cmquota.c:22
BOOLEAN HiveIsLoading
Definition: cm.h:437
Definition: registry.c:568
BOOLEAN NTAPI CmpReferenceKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:357
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
struct _CM_DELAYED_CLOSE_ENTRY CM_DELAYED_CLOSE_ENTRY
UNICODE_STRING Class
Definition: cm.h:487
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:78
ULONG HCELL_INDEX
Definition: hivedata.h:80
_In_ WDFCOLLECTION _In_ ULONG Index
ULONG Filter
Definition: cm.h:325
BOOLEAN CmSelfHeal
Definition: cmdata.c:58
ULONG HashKey
Definition: cm.h:461
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:2707
LIST_ENTRY DelayedLRUList
Definition: cm.h:363
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:401
struct _CM_DELAY_ALLOC * PCM_DELAY_ALLOC
Definition: cm.h:199
VOID NTAPI CmpInitializeDelayedCloseTable(VOID)
Definition: cmdelay.c:191
USHORT Next
Definition: cm.h:387
BOOLEAN ExpInTextModeSetup
Definition: init.c:69
Type
Definition: Type.h:6
ULONG CmDefaultLanguageIdType
Definition: cmdata.c:24
Definition: cm.h:361
struct _KEY_INFORMATION KEY_INFORMATION
ULONG CmpConfigurationAreaSize
Definition: cmdata.c:36
ULONG DelayedCloseIndex
Definition: cm.h:271
PCM_KEY_HASH NextHash
Definition: cm.h:280
Definition: cm.h:178
PERESOURCE FlusherLock
Definition: cm.h:407
union _CM_CACHED_VALUE_INDEX::@1722 Data
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:2039
struct _CM_KEY_BODY CM_KEY_BODY
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
CM_SYSTEM_CONTROL_VECTOR CmControlVector[]
* PFILE_OBJECT
Definition: iotypes.h:1998
struct _CM_CACHED_VALUE_INDEX * PCM_CACHED_VALUE_INDEX
Definition: cm.h:379
LIST_ENTRY HiveList
Definition: cm.h:400
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:150
_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
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
Definition: wdfregistry.h:240
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:491
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:388
VOID NTAPI EnlistKeyBodyWithKCB(IN PCM_KEY_BODY KeyObject, IN ULONG Flags)
Definition: cmkcbncb.c:1042
BOOLEAN CmpSelfHeal
Definition: cmdata.c:59
LIST_ENTRY LRUViewListHead
Definition: cm.h:410
VOID NTAPI CmGetSystemControlValues(IN PVOID SystemHiveData, IN PCM_SYSTEM_CONTROL_VECTOR ControlVector)
Definition: cmcontrl.c:104
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:405
BOOLEAN CmpSpecialBootCondition
Definition: cmsysini.c:28
enum _REG_NOTIFY_CLASS REG_NOTIFY_CLASS
USHORT MappedViews
Definition: cm.h:415
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:700
_Must_inspect_result_ _In_ WDFCMRESLIST List
Definition: wdfresource.h:550
SECURITY_DESCRIPTOR_RELATIVE Descriptor
Definition: cm.h:193
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:281
struct _CM_DELAYED_CLOSE_ENTRY * PCM_DELAYED_CLOSE_ENTRY
ULONG KcbDebug
Definition: cm.h:310
HANDLE CmpRegistryRootHandle
Definition: cmdata.c:66
BOOLEAN CmpProfileLoaded
Definition: cmsysini.c:31
Definition: typedefs.h:119
WCHAR CmInstallUILanguageId[]
Definition: cmdata.c:26
PKTHREAD ViewLockOwner
Definition: cm.h:404
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
CELL_DATA CellData
Definition: cm.h:449
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
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
Definition: wdfdevice.h:4061
PKTHREAD WriterLockOwner
Definition: cm.h:406
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:417
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:727
PFILE_OBJECT FileObject
Definition: cm.h:412
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
Definition: wdfregistry.h:112
LIST_ENTRY KeyBodyListHead
Definition: cm.h:297
KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 KeyValuePartialInformationAlign64
Definition: cm.h:529
CMHIVE CmControlHive
Definition: cmdata.c:34
Definition: cm.h:157
LIST_ENTRY KnodeConvertListHead
Definition: cm.h:430
struct _CM_KEY_HASH_TABLE_ENTRY * PCM_KEY_HASH_TABLE_ENTRY
VOID NTAPI CmpInitCmPrivateAlloc(VOID)
Definition: cmalloc.c:29
HCELL_INDEX Cell
Definition: cm.h:189
ULONG CmpTypeCount[MaximumType+1]
Definition: cmdata.c:64
struct _CMP_MF_TYPE CMP_MF_TYPE
ULONG_PTR SIZE_T
Definition: typedefs.h:80
USHORT RefCount
Definition: cm.h:245
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:486
ULONG KcbUserFlags
Definition: cm.h:308
VOID NTAPI CmpLockRegistry(VOID)
Definition: cmsysini.c:1858
KEY_NODE_INFORMATION KeyNodeInformation
Definition: cm.h:539
struct _CM_USE_COUNT_LOG_ENTRY * PCM_USE_COUNT_LOG_ENTRY
USHORT DataCacheType
Definition: cm.h:459
LIST_ENTRY ListEntry
Definition: cm.h:354
struct _CMP_MF_TYPE * PCMP_MF_TYPE
ULONG CmpDelayedCloseSize
Definition: cmdelay.c:19
ULONG CmDefaultLanguageIdLength
Definition: cmdata.c:23
VOID NTAPI CmpReleaseTwoKcbLockByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
Definition: cmsysini.c:2001
struct _CM_CACHED_VALUE * PCM_CACHED_VALUE
PCM_CELL_REMAP_BLOCK CellRemapArray
Definition: cm.h:431
EX_PUSH_LOCK CmpLoadHiveLock
Definition: cmdata.c:39
PKTHREAD CreatorOwner
Definition: cm.h:438
unsigned short USHORT
Definition: pedump.c:61
_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:1878
VOID NTAPI CmpCleanUpSubKeyInfo(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:517
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:527
VOID NTAPI CmpDereferenceKeyControlBlockWithLock(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmkcbncb.c:606
PKTHREAD HiveSecurityLockOwner
Definition: cm.h:409
LIST_ENTRY PinViewListHead
Definition: cm.h:411
PKEVENT UnloadEvent
Definition: cm.h:423
ULONG SubKeyCount
Definition: cm.h:293
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:323
struct _CM_DELAY_ALLOC CM_DELAY_ALLOC
ULONG WatchTree
Definition: cm.h:326
CM_USE_COUNT_LOG LockHiveLog
Definition: cm.h:433
BOOLEAN Allocate
Definition: cm.h:478
_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:1905
EX_PUSH_LOCK Lock
Definition: cm.h:180
USHORT KcbMaxNameLen
Definition: cm.h:303
PCM_KEY_HASH Entry
Definition: cm.h:161
#define OUT
Definition: typedefs.h:40
PCM_KEY_SECURITY_CACHE_ENTRY SecurityCache
Definition: cm.h:421
struct _CM_KEY_HASH CM_KEY_HASH
VOID NTAPI CmpInitializeHiveList(VOID)
Definition: cmsysini.c:1358
BOOLEAN NTAPI CmpFileFlush(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PLARGE_INTEGER FileOffset, IN ULONG Length)
Definition: cmwraprs.c:162
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3810
struct _CM_ALLOC_PAGE CM_ALLOC_PAGE
ULONG ERESOURCE
Definition: env_spec_w32.h:594
PCMHIVE OriginatingPoint
Definition: cm.h:494
unsigned int ULONG
Definition: retypes.h:1
PCM_NAME_HASH_TABLE_ENTRY CmpNameCacheTable
Definition: cmkcbncb.c:19
ULONG RefCount
Definition: cm.h:265
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:355
NTSTATUS NTAPI CmpInitializeHardwareConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: cmconfig.c:328
VOID NTAPI CmpRemoveKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:306
CM_KEY_HASH KeyHash
Definition: cm.h:276
struct _CM_ALLOC_PAGE * PCM_ALLOC_PAGE
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE EventType
Definition: exfuncs.h:165
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
Definition: wdfdevice.h:3776
PCMHIVE CmHive2
Definition: cm.h:475
BOOLEAN NTAPI CmpTestHiveFlusherLockShared(IN PCMHIVE Hive)
Definition: cmsysini.c:1928
USHORT InterfaceType
Definition: cm.h:503
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:471
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:2328
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:301
VOID NTAPI CmpInitSecurityCache(IN PCMHIVE Hive)
Definition: cmsecach.c:21
enum _VALUE_SEARCH_RETURN_TYPE VALUE_SEARCH_RETURN_TYPE
ULONG Type
Definition: cm.h:232
_In_ ULONG _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
Definition: cmfuncs.h:93
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:287
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
struct _CM_KEY_BODY * PCM_KEY_BODY
VOID NTAPI CmpInitCmPrivateDelayAlloc(VOID)
Definition: cmalloc.c:44
BOOLEAN CreateLink
Definition: cm.h:492
KEY_VALUE_BASIC_INFORMATION KeyValueBasicInformation
Definition: cm.h:526
ULONG Reserved
Definition: cm.h:345
NTSTATUS NTAPI CmpDestroyHive(IN PCMHIVE CmHive)
Definition: cminit.c:235
struct _CM_NAME_HASH * NextHash
Definition: cm.h:170
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:248
PWSTR Name
Definition: cm.h:470
VOID NTAPI CmpRemoveFromHiveFileList(IN PCMHIVE Hive)
Definition: cmhvlist.c:254
ULONG HHiveFlags
Definition: cm.h:473
ULONG KcbMaxValueDataLen
Definition: cm.h:305
BOOLEAN CmpForceForceFlush
Definition: cmlazy.c:23
LIST_ENTRY FreeListEntry
Definition: cm.h:298
LIST_ENTRY SecurityHash[CMP_SECURITY_HASH_LISTS]
Definition: cm.h:422
static CODE_SEG("PAGE")
Definition: isapnp.c:1482
VOID NTAPI CmpSetVersionData(VOID)
Definition: cmsysini.c:2067
PSECURITY_DESCRIPTOR NTAPI CmpHiveRootSecurityDescriptor(VOID)
Definition: cmse.c:21
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:202
_Inout_opt_ PUNICODE_STRING Extension
Definition: fltkernel.h:1092
SECURITY_OPERATION_CODE
Definition: setypes.h:170
_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:493
ULONG ACCESS_MASK
Definition: nt_native.h:40
PCM_INDEX_HINT_BLOCK IndexHint
Definition: cm.h:291
LIST_ENTRY KcbConvertListHead
Definition: cm.h:429
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
Definition: wdffdo.h:461
base of all file and directory entries
Definition: entries.h:82
LIST_ENTRY ListEntry
Definition: cm.h:372
VOID NTAPI CmpFlushNotify(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
Definition: cmnotify.c:30
LANGID PsDefaultUILanguageId
Definition: locale.c:25
Definition: cm.h:395
struct _CM_KEY_HASH * NextHash
Definition: cm.h:149
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
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:460
struct _CM_INDEX_HINT_BLOCK CM_INDEX_HINT_BLOCK
Definition: dlist.c:348
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_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:857
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:427
VOID NTAPI CmpAcquireTwoKcbLocksExclusiveByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
Definition: cmsysini.c:1972