ReactOS 0.4.17-dev-573-g8315b8c
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// CM_KEY_CONTROL_BLOCK Signatures
45//
46#define CM_KCB_SIGNATURE 'bKmC'
47#define CM_KCB_INVALID_SIGNATURE '4FmC'
48
49//
50// CM_KEY_CONTROL_BLOCK ExtFlags
51//
52#define CM_KCB_NO_SUBKEY 0x01
53#define CM_KCB_SUBKEY_ONE 0x02
54#define CM_KCB_SUBKEY_HINT 0x04
55#define CM_KCB_SYM_LINK_FOUND 0x08
56#define CM_KCB_KEY_NON_EXIST 0x10
57#define CM_KCB_NO_DELAY_CLOSE 0x20
58#define CM_KCB_INVALID_CACHED_INFO 0x40
59#define CM_KCB_READ_ONLY_KEY 0x80
60
61//
62// CM_KEY_BODY Types
63//
64#define CM_KEY_BODY_TYPE 0x6B793032 // 'ky02'
65
66//
67// Number of various lists and hashes
68//
69#if 0 // See sdk/lib/cmlib/cmlib.h
70#define CMP_SECURITY_HASH_LISTS 64
71#endif
72#define CMP_MAX_CALLBACKS 100
73
74//
75// Hashing Constants
76//
77#define CMP_HASH_IRRATIONAL 314159269
78#define CMP_HASH_PRIME 1000000007
79
80//
81// CmpCreateKeyControlBlock Flags
82//
83#define CMP_CREATE_FAKE_KCB 0x1
84#define CMP_LOCK_HASHES_FOR_KCB 0x2
85
86//
87// CmpDoCreate and CmpDoOpen flags
88//
89#define CMP_CREATE_KCB_KCB_LOCKED 0x2
90#define CMP_OPEN_KCB_NO_CREATE 0x4
91
92//
93// EnlistKeyBodyWithKCB Flags
94//
95#define CMP_ENLIST_KCB_LOCKED_SHARED 0x1
96#define CMP_ENLIST_KCB_LOCKED_EXCLUSIVE 0x2
97
98//
99// CmpBuildAndLockKcbArray & CmpLockKcbArray Flags
100//
101#define CMP_LOCK_KCB_ARRAY_EXCLUSIVE 0x1
102#define CMP_LOCK_KCB_ARRAY_SHARED 0x2
103
104//
105// Unload Flags
106//
107#define CMP_UNLOCK_KCB_LOCKED 0x1
108#define CMP_UNLOCK_REGISTRY_LOCKED 0x2
109
110//
111// Maximum size of Value Cache
112//
113#define MAXIMUM_CACHED_DATA (2 * PAGE_SIZE)
114
115//
116// Hives to load on startup
117//
118#define CM_NUMBER_OF_MACHINE_HIVES 6
119
120//
121// Number of items that can fit inside an Allocation Page
122//
123#define CM_KCBS_PER_PAGE \
124 ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_KEY_CONTROL_BLOCK))
125#define CM_DELAYS_PER_PAGE \
126 ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_DELAY_ALLOC))
127
128//
129// Cache Lookup & KCB Array constructs
130//
131#define CMP_SUBKEY_LEVELS_DEPTH_LIMIT 32
132#define CMP_KCBS_IN_ARRAY_LIMIT (CMP_SUBKEY_LEVELS_DEPTH_LIMIT + 2)
133
134//
135// Value Search Results
136//
138{
143
144//
145// Key Hash
146//
147typedef struct _CM_KEY_HASH
148{
154
155//
156// Key Hash Table Entry
157//
159{
163#if DBG
164 PVOID LockBackTrace[5];
165#endif
167
168//
169// Name Hash
170//
171typedef struct _CM_NAME_HASH
172{
178
179//
180// Name Hash Table Entry
181//
183{
187
188//
189// Key Security Cache
190//
192{
199
200//
201// Key Security Cache Entry
202//
204{
208
209//
210// Cached Child List
211//
212typedef struct _CACHED_CHILD_LIST
213{
215 union
216 {
219 };
221
222//
223// Index Hint Block
224//
226{
230
231//
232// Key Body
233//
234typedef struct _CM_KEY_BODY
235{
241
242 /* ReactOS specific -- boolean flag to avoid recursive locking of the KCB */
245
246//
247// Name Control Block (NCB)
248//
250{
253 union
254 {
256 struct
257 {
262 };
263 };
265
266//
267// Key Control Block (KCB)
268//
270{
273 struct
274 {
280 };
281 union
282 {
284 struct
285 {
290 };
291 };
296 union
297 {
301 };
302 union
303 {
306 };
313 struct
314 {
319 };
322
323//
324// Notify Block
325//
326typedef struct _CM_NOTIFY_BLOCK
327{
336
337//
338// Re-map Block
339//
341{
345
346//
347// Allocation Page
348//
349typedef struct _CM_ALLOC_PAGE
350{
355
356//
357// Allocation Page Entry
358//
359typedef struct _CM_DELAY_ALLOC
360{
364
365//
366// Delayed Close Entry
367//
369{
373
374//
375// Delayed KCB Dereference Entry
376//
378{
382
383//
384// Cached Value Index
385//
387{
389 union
390 {
395
396//
397// Cached Value
398//
399typedef struct _CM_CACHED_VALUE
400{
406
407//
408// Hive List Entry
409//
410typedef struct _HIVE_LIST_ENTRY
411{
422
423//
424// Hash Cache Stack
425//
427{
431
432//
433// Parse context for Key Object
434//
435typedef struct _CM_PARSE_CONTEXT
436{
447
448//
449// MultiFunction Adapter Recognizer Structure
450//
451typedef struct _CMP_MF_TYPE
452{
457
458//
459// System Control Vector
460//
462{
469
470//
471// Structure for CmpQueryValueDataFromCache
472//
474{
475 union
476 {
481 };
483
484typedef struct _KEY_INFORMATION
485{
486 union
487 {
491 };
493
495//
496// BUGBUG Old Hive Stuff for Temporary Support
497//
500
501//
502// Mapped View Hive Functions
503//
504VOID
505NTAPI
507 IN PCMHIVE Hive
508);
509
510VOID
511NTAPI
513 IN PCMHIVE Hive
514);
515
516//
517// Security Management Functions
518//
523);
524
525//
526// Security Cache Functions
527//
528VOID
529NTAPI
531 IN PCMHIVE Hive
532);
533
534VOID
535NTAPI
537 IN PCMHIVE Hive
538);
539
540//
541// Value Cache Functions
542//
544NTAPI
548 OUT PCM_CACHED_VALUE **CachedValue,
549 OUT ULONG *Index,
551 OUT BOOLEAN *ValueIsCached,
552 OUT PHCELL_INDEX CellToRelease
553);
554
556NTAPI
559 IN PCM_CACHED_VALUE *CachedValue,
560 IN PCM_KEY_VALUE ValueKey,
561 IN BOOLEAN ValueIsCached,
563 IN PVOID KeyValueInformation,
567);
568
570NTAPI
573 OUT PCELL_DATA *CellData,
574 OUT BOOLEAN *IndexIsCached,
575 OUT PHCELL_INDEX ValueListToRelease
576);
577
579NTAPI
582 IN PCELL_DATA CellData,
583 IN ULONG Index,
584 OUT PCM_CACHED_VALUE **CachedValue,
586 IN BOOLEAN IndexIsCached,
587 OUT BOOLEAN *ValueIsCached,
588 OUT PHCELL_INDEX CellToRelease
589);
590
592NTAPI
596 IN ULONG Type,
597 IN PVOID Data,
599);
600
601//
602// Hive List Routines
603//
605NTAPI
607 IN PCMHIVE Hive,
608 OUT PUNICODE_STRING HiveName
609);
610
612NTAPI
614 IN PCMHIVE Hive
615);
616
617VOID
618NTAPI
620 IN PCMHIVE Hive
621);
622
623//
624// Quota Routines
625//
626VOID
627NTAPI
629 VOID
630);
631
632//
633// Notification Routines
634//
635VOID
636NTAPI
639 IN PHHIVE Hive,
640 IN HCELL_INDEX Cell,
642);
643
644VOID
645NTAPI
647 IN PCM_KEY_BODY KeyBody,
648 IN BOOLEAN LockHeld
649);
650
651CODE_SEG("INIT")
652VOID
653NTAPI
655 VOID
656);
657
658//
659// KCB Cache/Delay Routines
660//
661CODE_SEG("INIT")
662VOID
663NTAPI
665 VOID
666);
667
668CODE_SEG("INIT")
669VOID
670NTAPI
672 VOID
673);
674
675CODE_SEG("INIT")
676VOID
677NTAPI
679 VOID
680);
681
682CODE_SEG("INIT")
683VOID
684NTAPI
686 VOID
687);
688
689//
690// Key Object Routines
691//
692VOID
693NTAPI
699 IN ULONG_PTR SystemHandleCount
700);
701
702VOID
703NTAPI
706);
707
709NTAPI
711 IN PVOID ParseObject,
716 IN OUT PUNICODE_STRING CompleteName,
721);
722
724NTAPI
727 IN SECURITY_OPERATION_CODE OperationType,
730 IN OUT PULONG CapturedLength,
731 IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor,
735);
736
738NTAPI
741 IN BOOLEAN HasObjectName,
742 OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
746);
747
748//
749// Hive Routines
750//
752NTAPI
754 _Out_ PCMHIVE *CmHive,
755 _In_ ULONG OperationType,
756 _In_ ULONG HiveFlags,
758 _In_opt_ PVOID HiveData,
759 _In_ HANDLE Primary,
760 _In_ HANDLE Log,
762 _In_ HANDLE Alternate,
764 _In_ ULONG CheckFlags
765);
766
768NTAPI
770 IN PCMHIVE CmHive
771);
772
774NTAPI
776 VOID
777);
778
780NTAPI
782 IN PUNICODE_STRING LinkName,
784 IN PCMHIVE CmHive,
787);
788
790NTAPI
792 IN PCUNICODE_STRING BaseName,
794 OUT PHANDLE Primary,
795 OUT PHANDLE Log,
796 OUT PULONG PrimaryDisposition,
797 OUT PULONG LogDisposition,
798 IN BOOLEAN CreateAllowed,
799 IN BOOLEAN MarkAsSystemHive,
800 IN BOOLEAN NoBuffering,
802);
803
804VOID
805NTAPI
807 IN PCMHIVE Hive
808);
809
811NTAPI
813 IN PCUNICODE_STRING HiveName,
814 IN ULONG HiveFlags,
815 OUT PCMHIVE *Hive,
816 IN OUT PBOOLEAN New,
817 IN ULONG CheckFlags
818);
819
820VOID
821NTAPI
823 VOID
824);
825
826//
827// Registry Utility Functions
828//
830NTAPI
832 VOID
833);
834
836NTAPI
838 VOID
839);
840
841VOID
842NTAPI
844 VOID
845);
846
847VOID
848NTAPI
850 VOID
851);
852
853VOID
854NTAPI
856 VOID
857);
858
859VOID
860NTAPI
862 IN PCMHIVE Hive
863);
864
865VOID
866NTAPI
868 IN PCMHIVE Hive
869);
870
872NTAPI
874 IN PCMHIVE Hive
875);
876
878NTAPI
880 IN PCMHIVE Hive
881);
882
883VOID
884NTAPI
886 IN PCMHIVE Hive
887);
888
889//
890// Delay Functions
891//
892PVOID
893NTAPI
895 VOID
896);
897
898VOID
899NTAPI
902);
903
904VOID
905NTAPI
908);
909
910VOID
911NTAPI
914 IN BOOLEAN LockHeldExclusively
915);
916
917VOID
918NTAPI
920 VOID
921);
922
923VOID
924NTAPI
926
927CODE_SEG("INIT")
928VOID
929NTAPI
931 VOID
932);
933
934//
935// KCB Functions
936//
938NTAPI
940 IN PHHIVE Hive,
944 IN ULONG Flags,
946);
947
949NTAPI
951 VOID
952);
953
954VOID
955NTAPI
958);
959
960VOID
961NTAPI
964);
965
966VOID
967NTAPI
970);
971
972VOID
973NTAPI
976 IN BOOLEAN LockHeldExclusively
977);
978
979VOID
980NTAPI
983);
984
986NTAPI
989);
990
992NTAPI
995);
996
997VOID
998NTAPI
1001 IN BOOLEAN LockHeldExclusively
1002);
1003
1004VOID
1005NTAPI
1008);
1009
1010VOID
1011NTAPI
1013 IN PCM_KEY_BODY KeyObject,
1014 IN ULONG Flags
1015);
1016
1017VOID
1018NTAPI
1020 IN PCM_KEY_BODY KeyBody,
1021 IN BOOLEAN LockHeld
1022);
1023
1024VOID
1026 _In_ PULONG LockedKcbs
1027);
1028
1029PULONG
1030NTAPI
1032 _In_ PCM_HASH_CACHE_STACK HashCacheStack,
1033 _In_ ULONG KcbLockFlags,
1035 _Inout_ PULONG OuterStackArray,
1036 _In_ ULONG TotalRemainingSubkeys,
1037 _In_ ULONG MatchRemainSubkeyLevel
1038);
1039
1040VOID
1041NTAPI
1043 IN ULONG ConvKey1,
1044 IN ULONG ConvKey2
1045);
1046
1047VOID
1048NTAPI
1050 IN ULONG ConvKey1,
1051 IN ULONG ConvKey2
1052);
1053
1054VOID
1055NTAPI
1058 IN BOOLEAN LockHeld
1059);
1060
1061//
1062// Parse Routines
1063//
1064BOOLEAN
1065NTAPI
1068 OUT PUNICODE_STRING NextName,
1069 OUT PBOOLEAN LastName
1070);
1071
1072//
1073// Command Routines (Flush, Open, Close, Init);
1074//
1075BOOLEAN
1076NTAPI
1078 IN BOOLEAN ForceFlush
1079);
1080
1081VOID
1082NTAPI
1084 VOID
1085);
1086
1087VOID
1088NTAPI
1090 IN BOOLEAN SetupBoot
1091);
1092
1094NTAPI
1097 IN PSECURITY_CLIENT_CONTEXT ImpersonationContext,
1099 OUT PCMHIVE *NewHive,
1100 IN ULONG CheckFlags
1101);
1102
1103VOID
1104NTAPI
1106 VOID
1107);
1108
1109//
1110// Open/Create Routines
1111//
1113NTAPI
1115 IN PHHIVE Hive,
1116 IN HCELL_INDEX Cell,
1121 IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1123);
1124
1126NTAPI
1128 IN PHHIVE Hive,
1129 IN HCELL_INDEX Cell,
1135 IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1136 IN PULONG KcbsLocked,
1138);
1139
1140//
1141// Boot Routines
1142//
1143CODE_SEG("INIT")
1144VOID
1145NTAPI
1147 IN PVOID SystemHiveData,
1148 IN PCM_SYSTEM_CONTROL_VECTOR ControlVector
1149);
1150
1152NTAPI
1154 IN USHORT ControlSet
1155);
1156
1157//
1158// Hardware Configuration Routines
1159//
1160CODE_SEG("INIT")
1162NTAPI
1164 IN PCONFIGURATION_COMPONENT_DATA CurrentEntry,
1166 OUT PHANDLE NewHandle,
1169 IN PUSHORT DeviceIndexTable
1170);
1171
1173NTAPI
1175 IN PLOADER_PARAMETER_BLOCK LoaderBlock
1176);
1177
1178CODE_SEG("INIT")
1180NTAPI
1182 IN PLOADER_PARAMETER_BLOCK LoaderBlock
1183);
1184
1185//
1186// Wrapper Routines
1187//
1189NTAPI
1194);
1195
1196PVOID
1197NTAPI
1199 IN SIZE_T Size,
1200 IN BOOLEAN Paged,
1201 IN ULONG Tag
1202);
1203
1204VOID
1205NTAPI
1206CmpFree(
1207 IN PVOID Ptr,
1208 IN ULONG Quota
1209);
1210
1211BOOLEAN
1212NTAPI
1214 IN PHHIVE RegistryHive,
1219);
1220
1221BOOLEAN
1222NTAPI
1224 IN PHHIVE RegistryHive,
1227 IN PVOID Buffer,
1229);
1230
1231BOOLEAN
1232NTAPI
1234 _In_ PHHIVE RegistryHive,
1237 _In_ ULONG OldFileSize
1238);
1239
1240BOOLEAN
1241NTAPI
1243 IN PHHIVE RegistryHive,
1247);
1248
1249//
1250// Configuration Manager side of Registry System Calls
1251//
1253NTAPI
1256 IN ULONG Index,
1258 IN PVOID KeyValueInformation,
1259 IN ULONG Length,
1261
1263NTAPI
1267 IN ULONG Type,
1268 IN PVOID Data,
1269 IN ULONG DataSize);
1270
1272NTAPI
1275 IN PVOID KeyInformation,
1276 IN ULONG Length,
1278);
1279
1281NTAPI
1283 IN ULONG Index,
1285 IN PVOID KeyInformation,
1286 IN ULONG Length,
1288);
1289
1291NTAPI
1293 IN PCM_KEY_BODY KeyBody
1294);
1295
1297NTAPI
1300 IN BOOLEAN EclusiveLock
1301);
1302
1304NTAPI
1308);
1309
1311NTAPI
1316 IN PVOID KeyValueInformation,
1317 IN ULONG Length,
1319);
1320
1322NTAPI
1323CmLoadKey(
1324 IN POBJECT_ATTRIBUTES TargetKey,
1325 IN POBJECT_ATTRIBUTES SourceFile,
1326 IN ULONG Flags,
1327 IN PCM_KEY_BODY KeyBody
1328);
1329
1331NTAPI
1335);
1336
1337ULONG
1338NTAPI
1341 _In_ BOOLEAN RemoveEmptyCacheEntries,
1342 _In_ BOOLEAN DereferenceOpenedEntries
1343);
1344
1346NTAPI
1348 IN PHHIVE SourceHive,
1349 IN HCELL_INDEX SourceCell,
1350 IN PHHIVE DestinationHive,
1351 IN HSTORAGE_TYPE StorageType
1352);
1353
1355NTAPI
1357 IN PHHIVE SourceHive,
1358 IN HCELL_INDEX SrcKeyCell,
1359 IN PHHIVE DestinationHive,
1360 IN HSTORAGE_TYPE StorageType,
1361 OUT PHCELL_INDEX DestKeyCell OPTIONAL
1362);
1363
1365NTAPI
1366CmSaveKey(
1369 IN ULONG Flags
1370);
1371
1373NTAPI
1375 IN PCM_KEY_CONTROL_BLOCK HighKcb,
1378);
1379
1380//
1381// Startup and Shutdown
1382//
1383CODE_SEG("INIT")
1384BOOLEAN
1385NTAPI
1387 VOID
1388);
1389
1390VOID
1391NTAPI
1393 VOID
1394);
1395
1396VOID
1397NTAPI
1400);
1401
1402VOID
1403NTAPI
1405 VOID
1406);
1407
1408//
1409// Driver List Routines
1410//
1411CODE_SEG("INIT")
1413NTAPI
1415 VOID
1416);
1417
1418//
1419// Global variables accessible from all of Cm
1420//
1421extern ULONG CmpTraceLevel;
1424extern ULONG CmpVolatileBoot;
1426extern BOOLEAN CmpMiniNTBoot;
1435extern CMHIVE CmControlHive;
1436extern WCHAR CmDefaultLanguageId[];
1442extern ULONG CmNtGlobalFlag;
1448extern UNICODE_STRING CmTypeName[];
1452extern ULONG CmpTypeCount[MaximumType + 1];
1457extern ULONG CmpBootType;
1458extern ULONG CmSelfHeal;
1459extern BOOLEAN CmpSelfHeal;
1463extern ULONG CmpHashTableSize;
1465extern BOOLEAN CmpNoWrite;
1475
1476//
1477// Inlined functions
1478//
1479#include "cm_x.h"
#define CODE_SEG(...)
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG ReturnLength
static GENERIC_MAPPING GenericMapping
Definition: SeInheritance.c:11
Type
Definition: Type.h:7
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx 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:732
unsigned char BOOLEAN
Definition: actypes.h:127
_In_ PATA_DEVICE_REQUEST _In_ BOOLEAN Allocate
Definition: ata_shared.h:437
LONG NTSTATUS
Definition: precomp.h:26
WCHAR RootDirectory[MAX_PATH]
Definition: format.c:73
DWORD ClusterSize
Definition: format.c:66
_In_ PFCB _In_ LONGLONG FileOffset
Definition: cdprocs.h:160
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
Definition: cdprocs.h:802
Definition: bufpool.h:45
_In_ PVOID Argument2
Definition: classpnp.h:721
struct _KEY_VALUE_INFORMATION * PKEY_VALUE_INFORMATION
NTSTATUS NTAPI CmpLinkHiveToMaster(IN PUNICODE_STRING LinkName, IN HANDLE RootDirectory, IN PCMHIVE CmHive, IN BOOLEAN Allocate, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
Definition: cmsysini.c:823
VOID NTAPI CmpAddToDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmdelay.c:350
HCELL_INDEX NTAPI CmpCopyCell(IN PHHIVE SourceHive, IN HCELL_INDEX SourceCell, IN PHHIVE DestinationHive, IN HSTORAGE_TYPE StorageType)
Definition: cmvalue.c:376
VOID NTAPI CmpDelayDerefKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmdelay.c:286
VOID NTAPI CmpLazyFlush(VOID)
Definition: cmlazy.c:157
VOID NTAPI CmpCleanUpKcbCacheWithLock(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmkcbncb.c:476
VOID NTAPI CmpSetVersionData(VOID)
Definition: cmsysini.c:2207
struct _CM_NAME_CONTROL_BLOCK CM_NAME_CONTROL_BLOCK
VOID CmpUnLockKcbArray(_In_ PULONG LockedKcbs)
Unlocks a number of KCBs provided by a KCB array.
Definition: cmkcbncb.c:1145
ULONG CmDefaultLanguageIdLength
Definition: cmdata.c:23
ULONG CmpDelayedCloseSize
Definition: cmdelay.c:19
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
UNICODE_STRING CmClassName[]
VOID NTAPI CmpLockRegistryExclusive(VOID)
Definition: cmsysini.c:1982
BOOLEAN NTAPI CmpTestHiveFlusherLockShared(IN PCMHIVE Hive)
Definition: cmsysini.c:2065
struct _CM_KEY_HASH CM_KEY_HASH
ULONG CmpVolatileBoot
Definition: cmdata.c:58
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
VOID NTAPI CmpDestroyHiveViewList(IN PCMHIVE Hive)
Definition: cmmapvw.c:35
VOID NTAPI CmpCloseHiveFiles(IN PCMHIVE Hive)
Definition: cminit.c:644
VOID NTAPI CmpUnlockRegistry(VOID)
Definition: cmsysini.c:2081
ULONG CmpLazyFlushHiveCount
Definition: cmlazy.c:25
struct _KEY_VALUE_INFORMATION KEY_VALUE_INFORMATION
ERESOURCE CmpRegistryLock
Definition: cmsysini.c:18
USHORT CmpUnknownBusCount
Definition: cmdata.c:68
VOID NTAPI CmpRemoveFromHiveFileList(IN PCMHIVE Hive)
Definition: cmhvlist.c:254
struct _CM_ALLOC_PAGE CM_ALLOC_PAGE
POBJECT_TYPE CmpKeyObjectType
Definition: cmsysini.c:15
NTSTATUS CmpAssignSecurityDescriptor(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
Definition: cmse.c:251
struct _CACHED_CHILD_LIST CACHED_CHILD_LIST
enum _VALUE_SEARCH_RETURN_TYPE VALUE_SEARCH_RETURN_TYPE
NTSTATUS NTAPI CmpAddToHiveFileList(IN PCMHIVE Hive)
Definition: cmhvlist.c:130
VOID NTAPI CmpLockHiveFlusherExclusive(IN PCMHIVE Hive)
Definition: cmsysini.c:2031
struct _CM_DELAY_DEREF_KCB_ITEM CM_DELAY_DEREF_KCB_ITEM
struct _CM_KEY_HASH_TABLE_ENTRY * PCM_KEY_HASH_TABLE_ENTRY
ULONG CmDefaultLanguageIdType
Definition: cmdata.c:24
VOID NTAPI CmpReportNotify(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PHHIVE Hive, IN HCELL_INDEX Cell, IN ULONG Filter)
Definition: cmnotify.c:19
struct _CM_DELAY_ALLOC CM_DELAY_ALLOC
struct _CM_SYSTEM_CONTROL_VECTOR CM_SYSTEM_CONTROL_VECTOR
struct _CM_KEY_CONTROL_BLOCK * PCM_KEY_CONTROL_BLOCK
ULONG CmpLazyFlushIntervalInSeconds
Definition: cmlazy.c:24
BOOLEAN NTAPI CmpTestHiveFlusherLockExclusive(IN PCMHIVE Hive)
Definition: cmsysini.c:2073
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
VOID NTAPI CmpAcquireTwoKcbLocksExclusiveByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
Definition: cmsysini.c:2104
VOID NTAPI CmpCloseKeyObject(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG_PTR ProcessHandleCount, IN ULONG_PTR SystemHandleCount)
Definition: cmsysini.c:162
VOID NTAPI CmpFree(IN PVOID Ptr, IN ULONG Quota)
Definition: registry.c:60
NTSTATUS NTAPI CmpInitializeMachineDependentConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: cmhardwr.c:21
VOID NTAPI CmpInitCallback(VOID)
Definition: cmhook.c:38
EX_PUSH_LOCK CmpHiveListHeadLock
Definition: cmdata.c:39
NTSTATUS NTAPI CmQueryKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN KEY_INFORMATION_CLASS KeyInformationClass, IN PVOID KeyInformation, IN ULONG Length, IN PULONG ResultLength)
struct _CM_KEY_SECURITY_CACHE * PCM_KEY_SECURITY_CACHE
PSECURITY_DESCRIPTOR NTAPI CmpHiveRootSecurityDescriptor(VOID)
Definition: cmse.c:21
LANGID PsDefaultUILanguageId
Definition: locale.c:25
VOID NTAPI CmpInitializeCache(VOID)
Definition: cmkcbncb.c:26
struct _CACHED_CHILD_LIST * PCACHED_CHILD_LIST
LANGID PsInstallUILanguageId
Definition: locale.c:21
EX_PUSH_LOCK CmpLoadHiveLock
Definition: cm.h:1428
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
VOID NTAPI CmpDestroySecurityCache(IN PCMHIVE Hive)
Definition: cmsecach.c:41
HIVE_LIST_ENTRY CmpMachineHiveList[]
Definition: cmdata.c:41
VOID NTAPI CmpReleaseTwoKcbLockByKey(IN ULONG ConvKey1, IN ULONG ConvKey2)
Definition: cmsysini.c:2133
BOOLEAN NTAPI CmInitSystem1(VOID)
Definition: cmsysini.c:1642
struct _CM_CACHED_VALUE * PCM_CACHED_VALUE
UNICODE_STRING CmpSystemStartOptions
struct _CM_NOTIFY_BLOCK CM_NOTIFY_BLOCK
VOID NTAPI CmpLockRegistry(VOID)
Definition: cmsysini.c:1995
VOID NTAPI CmpLockHiveFlusherShared(IN PCMHIVE Hive)
Definition: cmsysini.c:2042
struct _CMP_MF_TYPE * PCMP_MF_TYPE
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:1848
_VALUE_SEARCH_RETURN_TYPE
Definition: cm.h:138
@ SearchSuccess
Definition: cm.h:139
@ SearchNeedExclusiveLock
Definition: cm.h:140
@ SearchFail
Definition: cm.h:141
struct _CMP_MF_TYPE CMP_MF_TYPE
NTSTATUS NTAPI CmpQueryKeyName(IN PVOID Object, IN BOOLEAN HasObjectName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE AccessMode)
NTSTATUS NTAPI CmpInitializeHardwareConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: cmconfig.c:329
UNICODE_STRING CmSymbolicLinkValueName
Definition: cmdata.c:52
VOID NTAPI CmpArmDelayedCloseTimer(VOID)
Definition: cmdelay.c:335
WCHAR CmInstallUILanguageId[]
Definition: cmdata.c:26
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
VOID NTAPI CmpCmdInit(IN BOOLEAN SetupBoot)
Definition: cmlazy.c:233
VOID NTAPI DelistKeyBodyFromKCB(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
Definition: cmkcbncb.c:1100
KGUARDED_MUTEX CmpDelayedCloseTableLock
Definition: cmdelay.c:21
NTSTATUS NTAPI CmSaveMergedKeys(IN PCM_KEY_CONTROL_BLOCK HighKcb, IN PCM_KEY_CONTROL_BLOCK LowKcb, IN HANDLE FileHandle)
Definition: cmapi.c:2743
VOID NTAPI CmpInitializeHiveList(VOID)
Definition: cmsysini.c:1488
CMP_MF_TYPE CmpMultifunctionTypes[]
struct _CM_KEY_SECURITY_CACHE_ENTRY CM_KEY_SECURITY_CACHE_ENTRY
BOOLEAN CmpSpecialBootCondition
Definition: cmsysini.c:26
struct _CM_NAME_CONTROL_BLOCK * PCM_NAME_CONTROL_BLOCK
ULONG CmSelfHeal
Definition: cmdata.c:65
VOID NTAPI CmpInitDelayDerefKCBEngine(VOID)
Definition: cmdelay.c:268
VOID NTAPI CmGetSystemControlValues(IN PVOID SystemHiveData, IN PCM_SYSTEM_CONTROL_VECTOR ControlVector)
Definition: cmcontrl.c:104
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, IN PULONG KcbsLocked, OUT PVOID *Object)
Definition: cmparse.c:830
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:1734
PCM_KEY_HASH_TABLE_ENTRY CmpCacheTable
Definition: cmkcbncb.c:18
BOOLEAN NTAPI CmpReferenceKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:357
struct _CM_CELL_REMAP_BLOCK * PCM_CELL_REMAP_BLOCK
UNICODE_STRING CmTypeName[]
PCM_FULL_RESOURCE_DESCRIPTOR CmpConfigurationData
Definition: cmdata.c:37
struct _CM_KEY_BODY * PCM_KEY_BODY
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:643
struct _CM_DELAYED_CLOSE_ENTRY CM_DELAYED_CLOSE_ENTRY
struct _CM_NAME_HASH CM_NAME_HASH
BOOLEAN NTAPI CmpFileSetSize(_In_ PHHIVE RegistryHive, _In_ ULONG FileType, _In_ ULONG FileSize, _In_ ULONG OldFileSize)
Definition: cmwraprs.c:132
ULONG NTAPI CmpEnumerateOpenSubKeys(_In_ PCM_KEY_CONTROL_BLOCK RootKcb, _In_ BOOLEAN RemoveEmptyCacheEntries, _In_ BOOLEAN DereferenceOpenedEntries)
Definition: cmapi.c:2339
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, IN KPROCESSOR_MODE AccessMode)
NTSTATUS NTAPI CmFlushKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN EclusiveLock)
Definition: cmapi.c:1937
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
struct _CM_DELAY_ALLOC * PCM_DELAY_ALLOC
struct _CM_HASH_CACHE_STACK * PCM_HASH_CACHE_STACK
VOID NTAPI CmpShutdownWorkers(VOID)
Definition: cmlazy.c:437
VOID NTAPI CmpCleanUpKcbValueCache(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:431
struct _CM_NAME_HASH * PCM_NAME_HASH
BOOLEAN HvShutdownComplete
Definition: cmsysini.c:36
VOID NTAPI CmpDereferenceKeyControlBlockWithLock(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmkcbncb.c:606
VOID NTAPI CmpDereferenceKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:571
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:404
struct _CM_DELAY_DEREF_KCB_ITEM * PCM_DELAY_DEREF_KCB_ITEM
BOOLEAN CmpNoVolatileCreates
Definition: cmsysini.c:34
NTSTATUS NTAPI CmpSaveBootControlSet(IN USHORT ControlSet)
Definition: cmcontrl.c:267
ULONG CmInstallUILanguageIdLength
Definition: cmdata.c:27
PUNICODE_STRING NTAPI CmpConstructName(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:897
struct _CM_ALLOC_PAGE * PCM_ALLOC_PAGE
VOID NTAPI CmpFlushNotifiesOnKeyBodyList(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeld)
Definition: cmkcbncb.c:1368
struct _CM_SYSTEM_CONTROL_VECTOR * PCM_SYSTEM_CONTROL_VECTOR
BOOLEAN NTAPI CmpFileWrite(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PULONG FileOffset, IN PVOID Buffer, IN SIZE_T BufferLength)
struct _CM_NAME_HASH_TABLE_ENTRY CM_NAME_HASH_TABLE_ENTRY
NTSTATUS CmiCallRegisteredCallbacks(IN REG_NOTIFY_CLASS Argument1, IN PVOID Argument2)
Definition: cmhook.c:59
PCMHIVE CmiVolatileHive
Definition: cmsysini.c:16
NTSTATUS NTAPI CmpInitializeHive(_Out_ PCMHIVE *CmHive, _In_ ULONG OperationType, _In_ ULONG HiveFlags, _In_ ULONG FileType, _In_opt_ PVOID HiveData, _In_ HANDLE Primary, _In_ HANDLE Log, _In_ HANDLE External, _In_ HANDLE Alternate, _In_opt_ PCUNICODE_STRING FileName, _In_ ULONG CheckFlags)
Definition: cminit.c:19
struct _KEY_INFORMATION KEY_INFORMATION
BOOLEAN CmpProfileLoaded
Definition: cmsysini.c:33
BOOLEAN NTAPI CmpTestRegistryLockExclusive(VOID)
Definition: cmsysini.c:2023
VOID NTAPI CmpRemoveFromDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmdelay.c:425
ULONG CmpBootType
Definition: cmdata.c:64
LIST_ENTRY CmpHiveListHead
Definition: cmsysini.c:17
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:2632
ULONG CmpTypeCount[MaximumType+1]
Definition: cmdata.c:69
BOOLEAN CmpWasSetupBoot
Definition: cmsysini.c:32
struct _CM_KEY_HASH * PCM_KEY_HASH
BOOLEAN CmpNoWrite
Definition: cmsysini.c:30
VOID NTAPI CmpSetGlobalQuotaAllowed(VOID)
Definition: cmquota.c:22
BOOLEAN CmpMiniNTBoot
Definition: cmdata.c:62
struct _CM_NOTIFY_BLOCK * PCM_NOTIFY_BLOCK
NTSTATUS NTAPI CmpInitHiveFromFile(IN PCUNICODE_STRING HiveName, IN ULONG HiveFlags, OUT PCMHIVE *Hive, IN OUT PBOOLEAN New, IN ULONG CheckFlags)
Definition: cmsysini.c:289
CMHIVE CmControlHive
Definition: cmdata.c:34
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:1074
CM_SYSTEM_CONTROL_VECTOR CmControlVector[]
VOID NTAPI CmpDeleteKeyObject(IN PVOID Object)
struct _HIVE_LIST_ENTRY * PHIVE_LIST_ENTRY
BOOLEAN ExpInTextModeSetup
Definition: init.c:69
struct _CM_PARSE_CONTEXT * PCM_PARSE_CONTEXT
ULONG CmpTraceLevel
Definition: cmsysini.c:35
BOOLEAN CmpSelfHeal
Definition: cmdata.c:66
BOOLEAN NTAPI CmpFileFlush(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PLARGE_INTEGER FileOffset, IN ULONG Length)
Definition: cmwraprs.c:192
NTSTATUS NTAPI CmpCreateEvent(IN EVENT_TYPE EventType, OUT PHANDLE EventHandle, OUT PKEVENT *Event)
Definition: cmwraprs.c:19
ULONG CmpConfigurationAreaSize
Definition: cmdata.c:36
WCHAR CmDefaultLanguageId[]
Definition: cmdata.c:22
struct _CM_INDEX_HINT_BLOCK * PCM_INDEX_HINT_BLOCK
VOID NTAPI EnlistKeyBodyWithKCB(IN PCM_KEY_BODY KeyObject, IN ULONG Flags)
Definition: cmkcbncb.c:1042
PCM_NAME_HASH_TABLE_ENTRY CmpNameCacheTable
Definition: cmkcbncb.c:19
VOID NTAPI CmpInitializeDelayedCloseTable(VOID)
Definition: cmdelay.c:191
struct _CM_HASH_CACHE_STACK CM_HASH_CACHE_STACK
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:276
VOID NTAPI CmpInitHiveViewList(IN PCMHIVE Hive)
Definition: cmmapvw.c:21
BOOLEAN NTAPI CmpFileRead(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PULONG FileOffset, OUT PVOID Buffer, IN SIZE_T BufferLength)
NTSTATUS NTAPI CmDeleteValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN UNICODE_STRING ValueName)
Definition: cmapi.c:915
VOID NTAPI CmpCleanUpSubKeyInfo(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:517
struct _CM_CACHED_VALUE CM_CACHED_VALUE
VOID NTAPI CmSetLazyFlushState(IN BOOLEAN Enable)
Definition: cmlazy.c:446
struct _CM_INDEX_HINT_BLOCK CM_INDEX_HINT_BLOCK
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:1191
struct _CM_DELAYED_CLOSE_ENTRY * PCM_DELAYED_CLOSE_ENTRY
VOID NTAPI CmpUnlockHiveFlusher(IN PCMHIVE Hive)
Definition: cmsysini.c:2053
struct _CM_KEY_BODY CM_KEY_BODY
PVOID NTAPI CmpAllocateDelayItem(VOID)
Definition: cmalloc.c:199
NTSTATUS NTAPI CmSaveKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN HANDLE FileHandle, IN ULONG Flags)
Definition: cmapi.c:2649
BOOLEAN CmpForceForceFlush
Definition: cmlazy.c:22
VOID NTAPI CmpInitSecurityCache(IN PCMHIVE Hive)
Definition: cmsecach.c:21
ULONG CmNtGlobalFlag
Definition: cmdata.c:19
VOID NTAPI CmpRemoveKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:306
BOOLEAN NTAPI CmpDoFlushAll(IN BOOLEAN ForceFlush)
Definition: cmapi.c:81
BOOLEAN CmpFlushOnLockRelease
Definition: cmsysini.c:25
struct _CM_CACHED_VALUE_INDEX CM_CACHED_VALUE_INDEX
VOID NTAPI CmpFlushNotify(IN PCM_KEY_BODY KeyBody, IN BOOLEAN LockHeld)
Definition: cmnotify.c:30
HANDLE CmpRegistryRootHandle
Definition: cmdata.c:71
NTSTATUS NTAPI CmDeleteKey(IN PCM_KEY_BODY KeyBody)
Definition: cmapi.c:1823
struct _CM_KEY_SECURITY_CACHE_ENTRY * PCM_KEY_SECURITY_CACHE_ENTRY
BOOLEAN CmpHoldLazyFlush
Definition: cmlazy.c:23
VOID NTAPI CmShutdownSystem(VOID)
Definition: cmsysini.c:2171
BOOLEAN CmpShareSystemHives
Definition: cmdata.c:60
ULONG CmInstallUILanguageIdType
Definition: cmdata.c:28
UNICODE_STRING CmpLoadOptions
Definition: cmdata.c:55
PUNICODE_STRING *NTAPI CmGetSystemDriverList(VOID)
Definition: cmsysini.c:1864
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:273
PVOID NTAPI CmpAllocate(IN SIZE_T Size, IN BOOLEAN Paged, IN ULONG Tag)
Definition: registry.c:49
VOID NTAPI CmpInitCmPrivateAlloc(VOID)
Definition: cmalloc.c:29
ULONG CmpHashTableSize
Definition: cmkcbncb.c:17
PULONG NTAPI CmpBuildAndLockKcbArray(_In_ PCM_HASH_CACHE_STACK HashCacheStack, _In_ ULONG KcbLockFlags, _In_ PCM_KEY_CONTROL_BLOCK Kcb, _Inout_ PULONG OuterStackArray, _In_ ULONG TotalRemainingSubkeys, _In_ ULONG MatchRemainSubkeyLevel)
Builds an array of KCBs and locks them. Whether these KCBs are locked exclusively or in shared mode b...
Definition: cmkcbncb.c:1302
NTSTATUS NTAPI CmLoadKey(IN POBJECT_ATTRIBUTES TargetKey, IN POBJECT_ATTRIBUTES SourceFile, IN ULONG Flags, IN PCM_KEY_BODY KeyBody)
Definition: cmapi.c:2012
NTSTATUS NTAPI CmpDestroyHive(IN PCMHIVE CmHive)
Definition: cminit.c:242
struct _CM_KEY_CONTROL_BLOCK CM_KEY_CONTROL_BLOCK
BOOLEAN NTAPI CmpTestRegistryLock(VOID)
Definition: cmsysini.c:2015
VOID NTAPI CmpInitCmPrivateDelayAlloc(VOID)
Definition: cmalloc.c:44
NTSTATUS NTAPI CmUnloadKey(_In_ PCM_KEY_CONTROL_BLOCK Kcb, _In_ ULONG Flags)
Definition: cmapi.c:2209
struct _CM_KEY_HASH_TABLE_ENTRY CM_KEY_HASH_TABLE_ENTRY
VOID NTAPI CmpFreeKeyControlBlock(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmalloc.c:53
struct _HIVE_LIST_ENTRY HIVE_LIST_ENTRY
struct _CM_NAME_HASH_TABLE_ENTRY * PCM_NAME_HASH_TABLE_ENTRY
struct _KEY_INFORMATION * PKEY_INFORMATION
LIST_ENTRY CmiKeyObjectListHead
VOID NTAPI CmpFreeDelayItem(PVOID Entry)
Definition: cmalloc.c:267
struct _CM_CELL_REMAP_BLOCK CM_CELL_REMAP_BLOCK
struct _CM_PARSE_CONTEXT CM_PARSE_CONTEXT
PCM_KEY_CONTROL_BLOCK NTAPI CmpAllocateKeyControlBlock(VOID)
Definition: cmalloc.c:111
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
struct _CM_KEY_SECURITY_CACHE CM_KEY_SECURITY_CACHE
BOOLEAN NTAPI CmpGetNextName(IN OUT PUNICODE_STRING RemainingName, OUT PUNICODE_STRING NextName, OUT PBOOLEAN LastName)
Definition: cmparse.c:21
struct _CM_CACHED_VALUE_INDEX * PCM_CACHED_VALUE_INDEX
BOOLEAN InitIsWinPEMode
Definition: init.c:72
LPWSTR Name
Definition: desk.c:124
ULONG ERESOURCE
Definition: env_spec_w32.h:594
_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:1236
_Inout_opt_ PUNICODE_STRING Extension
Definition: fltkernel.h:1092
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
Definition: fltkernel.h:1231
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1340
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:223
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
Definition: fsrtlfuncs.h:108
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
Definition: fsrtlfuncs.h:898
Status
Definition: gdiplustypes.h:24
ULONG * PHCELL_INDEX
Definition: hivedata.h:105
HSTORAGE_TYPE
Definition: hivedata.h:126
ULONG HCELL_INDEX
Definition: hivedata.h:105
_In_ PKSNODE_CREATE _In_ ACCESS_MASK _Out_ PHANDLE NodeHandle
Definition: ks.h:4548
USHORT LANGID
Definition: mui.h:9
* PNTSTATUS
Definition: strlen.c:14
ObjectType
Definition: metafile.c:88
static IDispatch External
Definition: htmldoc.c:521
DWORD * PSECURITY_INFORMATION
Definition: ms-dtyp.idl:311
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4755
_In_ ULONG _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
Definition: cmfuncs.h:94
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE EventType
Definition: exfuncs.h:167
#define _Inout_
Definition: no_sal2.h:162
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
enum _KEY_INFORMATION_CLASS KEY_INFORMATION_CLASS
Definition: reg.c:144
enum _KEY_VALUE_INFORMATION_CLASS KEY_VALUE_INFORMATION_CLASS
Definition: reg.c:138
ULONG ACCESS_MASK
Definition: nt_native.h:40
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
Definition: ntddpcm.h:142
enum _EVENT_TYPE EVENT_TYPE
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
_In_ ULONG BusNumber
Definition: pciidex.h:65
short WCHAR
Definition: pedump.c:58
unsigned short USHORT
Definition: pedump.c:61
enum _INTERFACE_TYPE INTERFACE_TYPE
@ MaximumType
Definition: arc.h:154
Entry
Definition: section.c:5216
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
_In_ PVOID Context
Definition: storport.h:2269
struct _CM_KEY_CONTROL_BLOCK * RealKcb
Definition: cm.h:218
ULONG Count
Definition: cm.h:214
ULONG ValueList
Definition: cm.h:217
Definition: cmlib.h:316
USHORT Count
Definition: cm.h:455
PCHAR Identifier
Definition: cm.h:453
USHORT InterfaceType
Definition: cm.h:454
PVOID AllocPage
Definition: cm.h:353
ULONG Reserved
Definition: cm.h:352
ULONG FreeCount
Definition: cm.h:351
union _CM_CACHED_VALUE_INDEX::@1948 Data
CELL_DATA CellData
Definition: cm.h:391
HCELL_INDEX CellIndex
Definition: cm.h:388
ULONG HashKey
Definition: cm.h:403
CM_KEY_VALUE KeyValue
Definition: cm.h:404
USHORT ValueKeySize
Definition: cm.h:402
USHORT DataCacheType
Definition: cm.h:401
HCELL_INDEX OldCell
Definition: cm.h:342
HCELL_INDEX NewCell
Definition: cm.h:343
Definition: cm.h:369
LIST_ENTRY DelayedLRUList
Definition: cm.h:370
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:371
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:362
LIST_ENTRY ListEntry
Definition: cm.h:361
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:380
LIST_ENTRY ListEntry
Definition: cm.h:379
UNICODE_STRING NameOfKey
Definition: cm.h:428
ULONG ConvKey
Definition: cm.h:429
ULONG HashKey[ANYSIZE_ARRAY]
Definition: cm.h:228
ULONG Type
Definition: cm.h:236
HANDLE ProcessID
Definition: cm.h:239
BOOLEAN KcbLocked
Definition: cm.h:243
struct _CM_NOTIFY_BLOCK * NotifyBlock
Definition: cm.h:238
struct _CM_KEY_CONTROL_BLOCK * KeyControlBlock
Definition: cm.h:237
LIST_ENTRY KeyBodyList
Definition: cm.h:240
LIST_ENTRY KeyBodyListHead
Definition: cm.h:304
ULONG PrivateAlloc
Definition: cm.h:276
ULONG TotalLevels
Definition: cm.h:279
USHORT KcbMaxValueNameLen
Definition: cm.h:311
ULONG DelayedCloseIndex
Definition: cm.h:278
ULONG KcbMaxValueDataLen
Definition: cm.h:312
PCM_NAME_CONTROL_BLOCK NameBlock
Definition: cm.h:293
CM_KEY_HASH KeyHash
Definition: cm.h:283
PCM_INDEX_HINT_BLOCK IndexHint
Definition: cm.h:298
ULONG RefCount
Definition: cm.h:272
PHHIVE KeyHive
Definition: cm.h:288
struct _CM_KEY_CONTROL_BLOCK * ParentKcb
Definition: cm.h:292
ULONG KcbDebug
Definition: cm.h:317
ULONG ExtFlags
Definition: cm.h:275
HCELL_INDEX KeyCell
Definition: cm.h:289
LARGE_INTEGER KcbLastWriteTime
Definition: cm.h:309
ULONG Signature
Definition: cm.h:271
PCM_KEY_BODY KeyBodyArray[4]
Definition: cm.h:307
ULONG KcbVirtControlFlags
Definition: cm.h:316
LIST_ENTRY FreeListEntry
Definition: cm.h:305
USHORT KcbMaxNameLen
Definition: cm.h:310
ULONG InDelayClose
Definition: cm.h:320
ULONG KcbUserFlags
Definition: cm.h:315
PCM_KEY_HASH NextHash
Definition: cm.h:287
ULONG SubKeyCount
Definition: cm.h:300
PVOID DelayCloseEntry
Definition: cm.h:308
CACHED_CHILD_LIST ValueCache
Definition: cm.h:295
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:294
Definition: cm.h:159
PCM_KEY_HASH Entry
Definition: cm.h:162
EX_PUSH_LOCK Lock
Definition: cm.h:160
PKTHREAD Owner
Definition: cm.h:161
ULONG ConvKey
Definition: cm.h:149
PHHIVE KeyHive
Definition: cm.h:151
HCELL_INDEX KeyCell
Definition: cm.h:152
struct _CM_KEY_HASH * NextHash
Definition: cm.h:150
Definition: cm.h:204
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:206
HCELL_INDEX Cell
Definition: cm.h:205
ULONG DescriptorLength
Definition: cm.h:196
HCELL_INDEX Cell
Definition: cm.h:193
SECURITY_DESCRIPTOR_RELATIVE Descriptor
Definition: cm.h:197
LIST_ENTRY List
Definition: cm.h:195
PCM_KEY_HASH NextHash
Definition: cm.h:259
CM_NAME_HASH NameHash
Definition: cm.h:255
BOOLEAN Compressed
Definition: cm.h:251
USHORT NameLength
Definition: cm.h:260
WCHAR Name[ANYSIZE_ARRAY]
Definition: cm.h:261
USHORT RefCount
Definition: cm.h:252
Definition: cm.h:183
EX_PUSH_LOCK Lock
Definition: cm.h:184
PCM_NAME_HASH Entry
Definition: cm.h:185
WCHAR Name[ANYSIZE_ARRAY]
Definition: cm.h:176
struct _CM_NAME_HASH * NextHash
Definition: cm.h:174
USHORT NameLength
Definition: cm.h:175
ULONG ConvKey
Definition: cm.h:173
ULONG WatchTree
Definition: cm.h:333
PCM_KEY_BODY KeyBody
Definition: cm.h:331
LIST_ENTRY HiveList
Definition: cm.h:328
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:330
ULONG NotifyPending
Definition: cm.h:334
LIST_ENTRY PostList
Definition: cm.h:329
ULONG Filter
Definition: cm.h:332
HANDLE PredefinedHandle
Definition: cm.h:442
CM_KEY_REFERENCE ChildHive
Definition: cm.h:441
ULONG TitleIndex
Definition: cm.h:437
ULONG Disposition
Definition: cm.h:440
BOOLEAN CreateLink
Definition: cm.h:443
PCMHIVE OriginatingPoint
Definition: cm.h:445
UNICODE_STRING Class
Definition: cm.h:438
BOOLEAN CreateOperation
Definition: cm.h:444
ULONG CreateOptions
Definition: cm.h:439
Definition: registry.c:569
BOOLEAN ThreadStarted
Definition: cm.h:419
PCMHIVE CmHive
Definition: cm.h:414
PWSTR Name
Definition: cm.h:412
PWSTR BaseName
Definition: cm.h:413
PCMHIVE CmHive2
Definition: cm.h:417
BOOLEAN Allocate
Definition: cm.h:420
BOOLEAN ThreadFinished
Definition: cm.h:418
ULONG HHiveFlags
Definition: cm.h:415
ULONG CmHiveFlags
Definition: cm.h:416
KEY_FULL_INFORMATION KeyFullInformation
Definition: cm.h:489
KEY_NODE_INFORMATION KeyNodeInformation
Definition: cm.h:490
KEY_BASIC_INFORMATION KeyBasicInformation
Definition: cm.h:488
KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 KeyValuePartialInformationAlign64
Definition: cm.h:480
KEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInformation
Definition: cm.h:479
KEY_VALUE_BASIC_INFORMATION KeyValueBasicInformation
Definition: cm.h:477
KEY_VALUE_FULL_INFORMATION KeyValueFullInformation
Definition: cm.h:478
Definition: typedefs.h:120
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * PCWSTR
Definition: typedefs.h:57
unsigned char * PBOOLEAN
Definition: typedefs.h:53
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
INT POOL_TYPE
Definition: typedefs.h:78
#define NTAPI
Definition: typedefs.h:36
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint16_t * PUSHORT
Definition: typedefs.h:56
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint16_t * PWCHAR
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char * PCHAR
Definition: typedefs.h:51
Definition: dlist.c:348
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
Definition: wdfdevice.h:3782
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
Definition: wdfdevice.h:4071
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3821
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
Definition: wdfdevice.h:2747
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4539
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
Definition: wdfdevice.h:2705
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3777
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
Definition: wdffdo.h:463
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
Definition: wdfregistry.h:118
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
Definition: wdfregistry.h:243
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
_Must_inspect_result_ _In_ WDFCMRESLIST List
Definition: wdfresource.h:550
@ ProcessHandleCount
Definition: winternl.h:1902
_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:191
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
enum _REG_NOTIFY_CLASS REG_NOTIFY_CLASS
_IRQL_requires_same_ _In_opt_ PVOID Argument1
Definition: cmtypes.h:696
_Out_ PHANDLE EventHandle
Definition: iofuncs.h:857
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
Definition: mmfuncs.h:396
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState
Definition: sefuncs.h:417
_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:20
SECURITY_OPERATION_CODE
Definition: setypes.h:170
_In_ ULONG _In_ KEY_INFORMATION_CLASS KeyInformationClass
Definition: zwfuncs.h:167