ReactOS 0.4.15-dev-7788-g1ad9096
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{
164
165//
166// Name Hash
167//
168typedef struct _CM_NAME_HASH
169{
175
176//
177// Name Hash Table Entry
178//
180{
184
185//
186// Key Security Cache
187//
189{
196
197//
198// Key Security Cache Entry
199//
201{
205
206//
207// Cached Child List
208//
209typedef struct _CACHED_CHILD_LIST
210{
212 union
213 {
216 };
218
219//
220// Index Hint Block
221//
223{
227
228//
229// Key Body
230//
231typedef struct _CM_KEY_BODY
232{
238
239 /* ReactOS specific -- boolean flag to avoid recursive locking of the KCB */
242
243//
244// Name Control Block (NCB)
245//
247{
250 union
251 {
253 struct
254 {
259 };
260 };
262
263//
264// Key Control Block (KCB)
265//
267{
270 struct
271 {
277 };
278 union
279 {
281 struct
282 {
287 };
288 };
293 union
294 {
298 };
299 union
300 {
303 };
310 struct
311 {
316 };
319
320//
321// Notify Block
322//
323typedef struct _CM_NOTIFY_BLOCK
324{
333
334//
335// Re-map Block
336//
338{
342
343//
344// Allocation Page
345//
346typedef struct _CM_ALLOC_PAGE
347{
352
353//
354// Allocation Page Entry
355//
356typedef struct _CM_DELAY_ALLOC
357{
361
362//
363// Delayed Close Entry
364//
366{
370
371//
372// Delayed KCB Dereference Entry
373//
375{
379
380//
381// Cached Value Index
382//
384{
386 union
387 {
392
393//
394// Cached Value
395//
396typedef struct _CM_CACHED_VALUE
397{
403
404//
405// Hive List Entry
406//
407typedef struct _HIVE_LIST_ENTRY
408{
419
420//
421// Hash Cache Stack
422//
424{
428
429//
430// Parse context for Key Object
431//
432typedef struct _CM_PARSE_CONTEXT
433{
444
445//
446// MultiFunction Adapter Recognizer Structure
447//
448typedef struct _CMP_MF_TYPE
449{
454
455//
456// System Control Vector
457//
459{
466
467//
468// Structure for CmpQueryValueDataFromCache
469//
471{
472 union
473 {
478 };
480
481typedef struct _KEY_INFORMATION
482{
483 union
484 {
488 };
490
492//
493// BUGBUG Old Hive Stuff for Temporary Support
494//
497
498//
499// Mapped View Hive Functions
500//
501VOID
502NTAPI
504 IN PCMHIVE Hive
505);
506
507VOID
508NTAPI
510 IN PCMHIVE Hive
511);
512
513//
514// Security Management Functions
515//
520);
521
522//
523// Security Cache Functions
524//
525VOID
526NTAPI
528 IN PCMHIVE Hive
529);
530
531VOID
532NTAPI
534 IN PCMHIVE Hive
535);
536
537//
538// Value Cache Functions
539//
541NTAPI
545 OUT PCM_CACHED_VALUE **CachedValue,
546 OUT ULONG *Index,
548 OUT BOOLEAN *ValueIsCached,
549 OUT PHCELL_INDEX CellToRelease
550);
551
553NTAPI
556 IN PCM_CACHED_VALUE *CachedValue,
557 IN PCM_KEY_VALUE ValueKey,
558 IN BOOLEAN ValueIsCached,
560 IN PVOID KeyValueInformation,
564);
565
567NTAPI
570 OUT PCELL_DATA *CellData,
571 OUT BOOLEAN *IndexIsCached,
572 OUT PHCELL_INDEX ValueListToRelease
573);
574
576NTAPI
579 IN PCELL_DATA CellData,
580 IN ULONG Index,
581 OUT PCM_CACHED_VALUE **CachedValue,
583 IN BOOLEAN IndexIsCached,
584 OUT BOOLEAN *ValueIsCached,
585 OUT PHCELL_INDEX CellToRelease
586);
587
589NTAPI
593 IN ULONG Type,
594 IN PVOID Data,
596);
597
598//
599// Hive List Routines
600//
602NTAPI
604 IN PCMHIVE Hive,
605 OUT PUNICODE_STRING HiveName
606);
607
609NTAPI
611 IN PCMHIVE Hive
612);
613
614VOID
615NTAPI
617 IN PCMHIVE Hive
618);
619
620//
621// Quota Routines
622//
623VOID
624NTAPI
626 VOID
627);
628
629//
630// Notification Routines
631//
632VOID
633NTAPI
636 IN PHHIVE Hive,
637 IN HCELL_INDEX Cell,
639);
640
641VOID
642NTAPI
644 IN PCM_KEY_BODY KeyBody,
645 IN BOOLEAN LockHeld
646);
647
648CODE_SEG("INIT")
649VOID
650NTAPI
652 VOID
653);
654
655//
656// KCB Cache/Delay Routines
657//
658CODE_SEG("INIT")
659VOID
660NTAPI
662 VOID
663);
664
665CODE_SEG("INIT")
666VOID
667NTAPI
669 VOID
670);
671
672CODE_SEG("INIT")
673VOID
674NTAPI
676 VOID
677);
678
679CODE_SEG("INIT")
680VOID
681NTAPI
683 VOID
684);
685
686//
687// Key Object Routines
688//
689VOID
690NTAPI
696 IN ULONG SystemHandleCount
697);
698
699VOID
700NTAPI
703);
704
706NTAPI
708 IN PVOID ParseObject,
713 IN OUT PUNICODE_STRING CompleteName,
718);
719
721NTAPI
724 IN SECURITY_OPERATION_CODE OperationType,
727 IN OUT PULONG CapturedLength,
728 IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor,
731);
732
734NTAPI
737 IN BOOLEAN HasObjectName,
738 OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
742);
743
744//
745// Hive Routines
746//
748NTAPI
750 _Out_ PCMHIVE *CmHive,
751 _In_ ULONG OperationType,
752 _In_ ULONG HiveFlags,
754 _In_opt_ PVOID HiveData,
755 _In_ HANDLE Primary,
756 _In_ HANDLE Log,
758 _In_ HANDLE Alternate,
760 _In_ ULONG CheckFlags
761);
762
764NTAPI
766 IN PCMHIVE CmHive
767);
768
770NTAPI
772 VOID
773);
774
776NTAPI
778 IN PUNICODE_STRING LinkName,
780 IN PCMHIVE CmHive,
783);
784
786NTAPI
788 IN PCUNICODE_STRING BaseName,
790 OUT PHANDLE Primary,
791 OUT PHANDLE Log,
792 OUT PULONG PrimaryDisposition,
793 OUT PULONG LogDisposition,
794 IN BOOLEAN CreateAllowed,
795 IN BOOLEAN MarkAsSystemHive,
796 IN BOOLEAN NoBuffering,
798);
799
800VOID
801NTAPI
803 IN PCMHIVE Hive
804);
805
807NTAPI
809 IN PCUNICODE_STRING HiveName,
810 IN ULONG HiveFlags,
811 OUT PCMHIVE *Hive,
813 IN ULONG CheckFlags
814);
815
816VOID
817NTAPI
819 VOID
820);
821
822//
823// Registry Utility Functions
824//
826NTAPI
828 VOID
829);
830
832NTAPI
834 VOID
835);
836
837VOID
838NTAPI
840 VOID
841);
842
843VOID
844NTAPI
846 VOID
847);
848
849VOID
850NTAPI
852 VOID
853);
854
855VOID
856NTAPI
858 IN PCMHIVE Hive
859);
860
861VOID
862NTAPI
864 IN PCMHIVE Hive
865);
866
868NTAPI
870 IN PCMHIVE Hive
871);
872
874NTAPI
876 IN PCMHIVE Hive
877);
878
879VOID
880NTAPI
882 IN PCMHIVE Hive
883);
884
885//
886// Delay Functions
887//
888PVOID
889NTAPI
891 VOID
892);
893
894VOID
895NTAPI
898);
899
900VOID
901NTAPI
904);
905
906VOID
907NTAPI
910 IN BOOLEAN LockHeldExclusively
911);
912
913VOID
914NTAPI
916 VOID
917);
918
919VOID
920NTAPI
922
923CODE_SEG("INIT")
924VOID
925NTAPI
927 VOID
928);
929
930//
931// KCB Functions
932//
934NTAPI
936 IN PHHIVE Hive,
940 IN ULONG Flags,
942);
943
945NTAPI
947 VOID
948);
949
950VOID
951NTAPI
954);
955
956VOID
957NTAPI
960);
961
962VOID
963NTAPI
966);
967
968VOID
969NTAPI
972 IN BOOLEAN LockHeldExclusively
973);
974
975VOID
976NTAPI
979);
980
982NTAPI
985);
986
988NTAPI
991);
992
993VOID
994NTAPI
997 IN BOOLEAN LockHeldExclusively
998);
999
1000VOID
1001NTAPI
1004);
1005
1006VOID
1007NTAPI
1009 IN PCM_KEY_BODY KeyObject,
1010 IN ULONG Flags
1011);
1012
1013VOID
1014NTAPI
1016 IN PCM_KEY_BODY KeyBody,
1017 IN BOOLEAN LockHeld
1018);
1019
1020VOID
1022 _In_ PULONG LockedKcbs
1023);
1024
1025PULONG
1026NTAPI
1028 _In_ PCM_HASH_CACHE_STACK HashCacheStack,
1029 _In_ ULONG KcbLockFlags,
1031 _Inout_ PULONG OuterStackArray,
1032 _In_ ULONG TotalRemainingSubkeys,
1033 _In_ ULONG MatchRemainSubkeyLevel
1034);
1035
1036VOID
1037NTAPI
1039 IN ULONG ConvKey1,
1040 IN ULONG ConvKey2
1041);
1042
1043VOID
1044NTAPI
1046 IN ULONG ConvKey1,
1047 IN ULONG ConvKey2
1048);
1049
1050VOID
1051NTAPI
1054 IN BOOLEAN LockHeld
1055);
1056
1057//
1058// Parse Routines
1059//
1060BOOLEAN
1061NTAPI
1064 OUT PUNICODE_STRING NextName,
1065 OUT PBOOLEAN LastName
1066);
1067
1068//
1069// Command Routines (Flush, Open, Close, Init);
1070//
1071BOOLEAN
1072NTAPI
1074 IN BOOLEAN ForceFlush
1075);
1076
1077VOID
1078NTAPI
1080 VOID
1081);
1082
1083VOID
1084NTAPI
1086 IN BOOLEAN SetupBoot
1087);
1088
1090NTAPI
1093 IN PSECURITY_CLIENT_CONTEXT ImpersonationContext,
1095 OUT PCMHIVE *NewHive,
1096 IN ULONG CheckFlags
1097);
1098
1099VOID
1100NTAPI
1102 VOID
1103);
1104
1105//
1106// Open/Create Routines
1107//
1109NTAPI
1111 IN PHHIVE Hive,
1112 IN HCELL_INDEX Cell,
1117 IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1119);
1120
1122NTAPI
1124 IN PHHIVE Hive,
1125 IN HCELL_INDEX Cell,
1131 IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1132 IN PULONG KcbsLocked,
1134);
1135
1136//
1137// Boot Routines
1138//
1139CODE_SEG("INIT")
1140VOID
1141NTAPI
1143 IN PVOID SystemHiveData,
1144 IN PCM_SYSTEM_CONTROL_VECTOR ControlVector
1145);
1146
1148NTAPI
1150 IN USHORT ControlSet
1151);
1152
1153//
1154// Hardware Configuration Routines
1155//
1156CODE_SEG("INIT")
1158NTAPI
1160 IN PCONFIGURATION_COMPONENT_DATA CurrentEntry,
1162 OUT PHANDLE NewHandle,
1165 IN PUSHORT DeviceIndexTable
1166);
1167
1169NTAPI
1171 IN PLOADER_PARAMETER_BLOCK LoaderBlock
1172);
1173
1174CODE_SEG("INIT")
1176NTAPI
1178 IN PLOADER_PARAMETER_BLOCK LoaderBlock
1179);
1180
1181//
1182// Wrapper Routines
1183//
1185NTAPI
1190);
1191
1192PVOID
1193NTAPI
1195 IN SIZE_T Size,
1196 IN BOOLEAN Paged,
1197 IN ULONG Tag
1198);
1199
1200VOID
1201NTAPI
1202CmpFree(
1203 IN PVOID Ptr,
1204 IN ULONG Quota
1205);
1206
1207BOOLEAN
1208NTAPI
1210 IN PHHIVE RegistryHive,
1215);
1216
1217BOOLEAN
1218NTAPI
1220 IN PHHIVE RegistryHive,
1223 IN PVOID Buffer,
1225);
1226
1227BOOLEAN
1228NTAPI
1230 _In_ PHHIVE RegistryHive,
1233 _In_ ULONG OldFileSize
1234);
1235
1236BOOLEAN
1237NTAPI
1239 IN PHHIVE RegistryHive,
1243);
1244
1245//
1246// Configuration Manager side of Registry System Calls
1247//
1249NTAPI
1252 IN ULONG Index,
1254 IN PVOID KeyValueInformation,
1255 IN ULONG Length,
1257
1259NTAPI
1263 IN ULONG Type,
1264 IN PVOID Data,
1265 IN ULONG DataSize);
1266
1268NTAPI
1271 IN PVOID KeyInformation,
1272 IN ULONG Length,
1274);
1275
1277NTAPI
1279 IN ULONG Index,
1281 IN PVOID KeyInformation,
1282 IN ULONG Length,
1284);
1285
1287NTAPI
1289 IN PCM_KEY_BODY KeyBody
1290);
1291
1293NTAPI
1296 IN BOOLEAN EclusiveLock
1297);
1298
1300NTAPI
1304);
1305
1307NTAPI
1312 IN PVOID KeyValueInformation,
1313 IN ULONG Length,
1315);
1316
1318NTAPI
1319CmLoadKey(
1320 IN POBJECT_ATTRIBUTES TargetKey,
1321 IN POBJECT_ATTRIBUTES SourceFile,
1322 IN ULONG Flags,
1323 IN PCM_KEY_BODY KeyBody
1324);
1325
1327NTAPI
1330 IN ULONG Flags
1331);
1332
1333ULONG
1334NTAPI
1336 IN PCM_KEY_CONTROL_BLOCK RootKcb,
1337 IN BOOLEAN RemoveEmptyCacheEntries,
1338 IN BOOLEAN DereferenceOpenedEntries
1339);
1340
1342NTAPI
1344 IN PHHIVE SourceHive,
1345 IN HCELL_INDEX SourceCell,
1346 IN PHHIVE DestinationHive,
1347 IN HSTORAGE_TYPE StorageType
1348);
1349
1351NTAPI
1353 IN PHHIVE SourceHive,
1354 IN HCELL_INDEX SrcKeyCell,
1355 IN PHHIVE DestinationHive,
1356 IN HSTORAGE_TYPE StorageType,
1357 OUT PHCELL_INDEX DestKeyCell OPTIONAL
1358);
1359
1361NTAPI
1362CmSaveKey(
1365 IN ULONG Flags
1366);
1367
1369NTAPI
1371 IN PCM_KEY_CONTROL_BLOCK HighKcb,
1374);
1375
1376//
1377// Startup and Shutdown
1378//
1379CODE_SEG("INIT")
1380BOOLEAN
1381NTAPI
1383 VOID
1384);
1385
1386VOID
1387NTAPI
1389 VOID
1390);
1391
1392VOID
1393NTAPI
1396);
1397
1398VOID
1399NTAPI
1401 VOID
1402);
1403
1404//
1405// Driver List Routines
1406//
1407CODE_SEG("INIT")
1409NTAPI
1411 VOID
1412);
1413
1414//
1415// Global variables accessible from all of Cm
1416//
1417extern ULONG CmpTraceLevel;
1421extern BOOLEAN CmpMiniNTBoot;
1430extern CMHIVE CmControlHive;
1431extern WCHAR CmDefaultLanguageId[];
1437extern ULONG CmNtGlobalFlag;
1443extern UNICODE_STRING CmTypeName[];
1447extern ULONG CmpTypeCount[MaximumType + 1];
1452extern BOOLEAN CmSelfHeal;
1453extern BOOLEAN CmpSelfHeal;
1454extern ULONG CmpBootType;
1458extern ULONG CmpHashTableSize;
1460extern BOOLEAN CmpNoWrite;
1468
1469//
1470// Inlined functions
1471//
1472#include "cm_x.h"
unsigned char BOOLEAN
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
LONG NTSTATUS
Definition: precomp.h:26
WCHAR RootDirectory[MAX_PATH]
Definition: format.c:74
DWORD ClusterSize
Definition: format.c:67
_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
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)
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:802
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:2179
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
NTSTATUS NTAPI CmUnloadKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN ULONG Flags)
Definition: cmapi.c:2209
ULONG CmpDelayedCloseIndex
Definition: cm.h:1459
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:1954
BOOLEAN NTAPI CmpTestHiveFlusherLockShared(IN PCMHIVE Hive)
Definition: cmsysini.c:2037
struct _CM_KEY_HASH CM_KEY_HASH
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:2053
struct _KEY_VALUE_INFORMATION KEY_VALUE_INFORMATION
ERESOURCE CmpRegistryLock
Definition: cmsysini.c:18
USHORT CmpUnknownBusCount
Definition: cmdata.c:66
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:2003
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
BOOLEAN NTAPI CmpTestHiveFlusherLockExclusive(IN PCMHIVE Hive)
Definition: cmsysini.c:2045
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:2076
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:1423
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:2105
BOOLEAN NTAPI CmInitSystem1(VOID)
Definition: cmsysini.c:1618
struct _CM_CACHED_VALUE * PCM_CACHED_VALUE
UNICODE_STRING CmpSystemStartOptions
struct _CM_NOTIFY_BLOCK CM_NOTIFY_BLOCK
VOID NTAPI CmpLockRegistry(VOID)
Definition: cmsysini.c:1967
VOID NTAPI CmpLockHiveFlusherShared(IN PCMHIVE Hive)
Definition: cmsysini.c:2014
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:2746
VOID NTAPI CmpInitializeHiveList(VOID)
Definition: cmsysini.c:1464
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
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
VOID NTAPI CmpCloseKeyObject(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount)
Definition: cmsysini.c:162
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
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:1995
VOID NTAPI CmpRemoveFromDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmdelay.c:425
ULONG CmpBootType
Definition: cmdata.c:62
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:2635
ULONG CmpTypeCount[MaximumType+1]
Definition: cmdata.c:67
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:60
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:64
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:2025
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:2652
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:69
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
BOOLEAN CmSelfHeal
Definition: cmdata.c:63
VOID NTAPI CmShutdownSystem(VOID)
Definition: cmsysini.c:2143
BOOLEAN CmpShareSystemHives
Definition: cmdata.c:58
ULONG CmInstallUILanguageIdType
Definition: cmdata.c:28
UNICODE_STRING CmpLoadOptions
Definition: cmdata.c:55
PUNICODE_STRING *NTAPI CmGetSystemDriverList(VOID)
Definition: cmsysini.c:1836
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:1987
VOID NTAPI CmpInitCmPrivateDelayAlloc(VOID)
Definition: cmalloc.c:44
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
ULONG NTAPI CmpEnumerateOpenSubKeys(IN PCM_KEY_CONTROL_BLOCK RootKcb, IN BOOLEAN RemoveEmptyCacheEntries, IN BOOLEAN DereferenceOpenedEntries)
Definition: cmapi.c:2342
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
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
Definition: dumpinfo.c:43
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:25
ULONG * PHCELL_INDEX
Definition: hivedata.h:105
HSTORAGE_TYPE
Definition: hivedata.h:126
ULONG HCELL_INDEX
Definition: hivedata.h:105
enum _INTERFACE_TYPE INTERFACE_TYPE
@ ProcessHandleCount
Definition: winternl.h:876
static CODE_SEG("PAGE")
Definition: isapnp.c:1482
_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:81
static IDispatch External
Definition: htmldoc.c:521
DWORD * PSECURITY_INFORMATION
Definition: ms-dtyp.idl:311
#define _Inout_
Definition: ms_sal.h:378
#define _Out_
Definition: ms_sal.h:345
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
_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
ULONG ACCESS_MASK
Definition: nt_native.h:40
enum _KEY_VALUE_INFORMATION_CLASS KEY_VALUE_INFORMATION_CLASS
Definition: reg.c:135
enum _KEY_INFORMATION_CLASS KEY_INFORMATION_CLASS
_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
unsigned short USHORT
Definition: pedump.c:61
#define New(t)
Definition: rtf.h:1086
@ MaximumType
Definition: arc.h:145
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
base of all file and directory entries
Definition: entries.h:83
struct _CM_KEY_CONTROL_BLOCK * RealKcb
Definition: cm.h:215
ULONG Count
Definition: cm.h:211
ULONG ValueList
Definition: cm.h:214
Definition: cmlib.h:316
USHORT Count
Definition: cm.h:452
PCHAR Identifier
Definition: cm.h:450
USHORT InterfaceType
Definition: cm.h:451
PVOID AllocPage
Definition: cm.h:350
ULONG Reserved
Definition: cm.h:349
ULONG FreeCount
Definition: cm.h:348
union _CM_CACHED_VALUE_INDEX::@1759 Data
CELL_DATA CellData
Definition: cm.h:388
HCELL_INDEX CellIndex
Definition: cm.h:385
ULONG HashKey
Definition: cm.h:400
CM_KEY_VALUE KeyValue
Definition: cm.h:401
USHORT ValueKeySize
Definition: cm.h:399
USHORT DataCacheType
Definition: cm.h:398
HCELL_INDEX OldCell
Definition: cm.h:339
HCELL_INDEX NewCell
Definition: cm.h:340
Definition: cm.h:366
LIST_ENTRY DelayedLRUList
Definition: cm.h:367
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:368
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:359
LIST_ENTRY ListEntry
Definition: cm.h:358
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:377
LIST_ENTRY ListEntry
Definition: cm.h:376
UNICODE_STRING NameOfKey
Definition: cm.h:425
ULONG ConvKey
Definition: cm.h:426
ULONG HashKey[ANYSIZE_ARRAY]
Definition: cm.h:225
ULONG Type
Definition: cm.h:233
HANDLE ProcessID
Definition: cm.h:236
BOOLEAN KcbLocked
Definition: cm.h:240
struct _CM_NOTIFY_BLOCK * NotifyBlock
Definition: cm.h:235
struct _CM_KEY_CONTROL_BLOCK * KeyControlBlock
Definition: cm.h:234
LIST_ENTRY KeyBodyList
Definition: cm.h:237
LIST_ENTRY KeyBodyListHead
Definition: cm.h:301
ULONG PrivateAlloc
Definition: cm.h:273
ULONG TotalLevels
Definition: cm.h:276
USHORT KcbMaxValueNameLen
Definition: cm.h:308
ULONG DelayedCloseIndex
Definition: cm.h:275
ULONG KcbMaxValueDataLen
Definition: cm.h:309
PCM_NAME_CONTROL_BLOCK NameBlock
Definition: cm.h:290
CM_KEY_HASH KeyHash
Definition: cm.h:280
PCM_INDEX_HINT_BLOCK IndexHint
Definition: cm.h:295
ULONG RefCount
Definition: cm.h:269
PHHIVE KeyHive
Definition: cm.h:285
struct _CM_KEY_CONTROL_BLOCK * ParentKcb
Definition: cm.h:289
ULONG KcbDebug
Definition: cm.h:314
ULONG ExtFlags
Definition: cm.h:272
HCELL_INDEX KeyCell
Definition: cm.h:286
LARGE_INTEGER KcbLastWriteTime
Definition: cm.h:306
ULONG Signature
Definition: cm.h:268
PCM_KEY_BODY KeyBodyArray[4]
Definition: cm.h:304
ULONG KcbVirtControlFlags
Definition: cm.h:313
LIST_ENTRY FreeListEntry
Definition: cm.h:302
USHORT KcbMaxNameLen
Definition: cm.h:307
ULONG InDelayClose
Definition: cm.h:317
ULONG KcbUserFlags
Definition: cm.h:312
PCM_KEY_HASH NextHash
Definition: cm.h:284
ULONG SubKeyCount
Definition: cm.h:297
PVOID DelayCloseEntry
Definition: cm.h:305
CACHED_CHILD_LIST ValueCache
Definition: cm.h:292
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:291
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:201
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:203
HCELL_INDEX Cell
Definition: cm.h:202
ULONG DescriptorLength
Definition: cm.h:193
HCELL_INDEX Cell
Definition: cm.h:190
SECURITY_DESCRIPTOR_RELATIVE Descriptor
Definition: cm.h:194
LIST_ENTRY List
Definition: cm.h:192
PCM_KEY_HASH NextHash
Definition: cm.h:256
CM_NAME_HASH NameHash
Definition: cm.h:252
BOOLEAN Compressed
Definition: cm.h:248
USHORT NameLength
Definition: cm.h:257
USHORT RefCount
Definition: cm.h:249
Definition: cm.h:180
EX_PUSH_LOCK Lock
Definition: cm.h:181
PCM_NAME_HASH Entry
Definition: cm.h:182
struct _CM_NAME_HASH * NextHash
Definition: cm.h:171
USHORT NameLength
Definition: cm.h:172
ULONG ConvKey
Definition: cm.h:170
ULONG WatchTree
Definition: cm.h:330
PCM_KEY_BODY KeyBody
Definition: cm.h:328
LIST_ENTRY HiveList
Definition: cm.h:325
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:327
ULONG NotifyPending
Definition: cm.h:331
LIST_ENTRY PostList
Definition: cm.h:326
ULONG Filter
Definition: cm.h:329
HANDLE PredefinedHandle
Definition: cm.h:439
CM_KEY_REFERENCE ChildHive
Definition: cm.h:438
ULONG TitleIndex
Definition: cm.h:434
ULONG Disposition
Definition: cm.h:437
BOOLEAN CreateLink
Definition: cm.h:440
PCMHIVE OriginatingPoint
Definition: cm.h:442
UNICODE_STRING Class
Definition: cm.h:435
BOOLEAN CreateOperation
Definition: cm.h:441
ULONG CreateOptions
Definition: cm.h:436
Definition: registry.c:569
BOOLEAN ThreadStarted
Definition: cm.h:416
PCMHIVE CmHive
Definition: cm.h:411
PWSTR Name
Definition: cm.h:409
PWSTR BaseName
Definition: cm.h:410
PCMHIVE CmHive2
Definition: cm.h:414
BOOLEAN Allocate
Definition: cm.h:417
BOOLEAN ThreadFinished
Definition: cm.h:415
ULONG HHiveFlags
Definition: cm.h:412
ULONG CmHiveFlags
Definition: cm.h:413
KEY_FULL_INFORMATION KeyFullInformation
Definition: cm.h:486
KEY_NODE_INFORMATION KeyNodeInformation
Definition: cm.h:487
KEY_BASIC_INFORMATION KeyBasicInformation
Definition: cm.h:485
KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 KeyValuePartialInformationAlign64
Definition: cm.h:477
KEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInformation
Definition: cm.h:476
KEY_VALUE_BASIC_INFORMATION KeyValueBasicInformation
Definition: cm.h:474
KEY_VALUE_FULL_INFORMATION KeyValueFullInformation
Definition: cm.h:475
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:3776
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
Definition: wdfdevice.h:4065
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3815
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
Definition: wdfdevice.h:2741
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
Definition: wdfdevice.h:2699
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3771
_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
_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
_In_opt_ PALLOCATE_FUNCTION Allocate
Definition: exfuncs.h:814
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
Definition: halfuncs.h:160
_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
__wchar_t WCHAR
Definition: xmlstorage.h:180
_In_ ULONG _In_ KEY_INFORMATION_CLASS KeyInformationClass
Definition: zwfuncs.h:167