ReactOS 0.4.15-dev-6054-gbddd8b0
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// Unload Flags
100//
101#define CMP_UNLOCK_KCB_LOCKED 0x1
102#define CMP_UNLOCK_REGISTRY_LOCKED 0x2
103
104//
105// Maximum size of Value Cache
106//
107#define MAXIMUM_CACHED_DATA (2 * PAGE_SIZE)
108
109//
110// Hives to load on startup
111//
112#define CM_NUMBER_OF_MACHINE_HIVES 6
113
114//
115// Number of items that can fit inside an Allocation Page
116//
117#define CM_KCBS_PER_PAGE \
118 ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_KEY_CONTROL_BLOCK))
119#define CM_DELAYS_PER_PAGE \
120 ((PAGE_SIZE - FIELD_OFFSET(CM_ALLOC_PAGE, AllocPage)) / sizeof(CM_DELAY_ALLOC))
121
122//
123// Value Search Results
124//
126{
131
132//
133// Key Hash
134//
135typedef struct _CM_KEY_HASH
136{
142
143//
144// Key Hash Table Entry
145//
147{
152
153//
154// Name Hash
155//
156typedef struct _CM_NAME_HASH
157{
163
164//
165// Name Hash Table Entry
166//
168{
172
173//
174// Key Security Cache
175//
177{
184
185//
186// Key Security Cache Entry
187//
189{
193
194//
195// Cached Child List
196//
197typedef struct _CACHED_CHILD_LIST
198{
200 union
201 {
204 };
206
207//
208// Index Hint Block
209//
211{
215
216//
217// Key Body
218//
219typedef struct _CM_KEY_BODY
220{
227
228//
229// Name Control Block (NCB)
230//
232{
235 union
236 {
238 struct
239 {
244 };
245 };
247
248//
249// Key Control Block (KCB)
250//
252{
255 struct
256 {
262 };
263 union
264 {
266 struct
267 {
272 };
273 };
278 union
279 {
283 };
284 union
285 {
288 };
295 struct
296 {
301 };
304
305//
306// Notify Block
307//
308typedef struct _CM_NOTIFY_BLOCK
309{
318
319//
320// Re-map Block
321//
323{
327
328//
329// Allocation Page
330//
331typedef struct _CM_ALLOC_PAGE
332{
337
338//
339// Allocation Page Entry
340//
341typedef struct _CM_DELAY_ALLOC
342{
346
347//
348// Delayed Close Entry
349//
351{
355
356//
357// Delayed KCB Dereference Entry
358//
360{
364
365//
366// Cached Value Index
367//
369{
371 union
372 {
377
378//
379// Cached Value
380//
381typedef struct _CM_CACHED_VALUE
382{
388
389//
390// Hive List Entry
391//
392typedef struct _HIVE_LIST_ENTRY
393{
404
405//
406// Parse context for Key Object
407//
408typedef struct _CM_PARSE_CONTEXT
409{
420
421//
422// MultiFunction Adapter Recognizer Structure
423//
424typedef struct _CMP_MF_TYPE
425{
430
431//
432// System Control Vector
433//
435{
442
443//
444// Structure for CmpQueryValueDataFromCache
445//
447{
448 union
449 {
454 };
456
457typedef struct _KEY_INFORMATION
458{
459 union
460 {
464 };
466
468//
469// BUGBUG Old Hive Stuff for Temporary Support
470//
473
474//
475// Mapped View Hive Functions
476//
477VOID
478NTAPI
480 IN PCMHIVE Hive
481);
482
483VOID
484NTAPI
486 IN PCMHIVE Hive
487);
488
489//
490// Security Cache Functions
491//
492VOID
493NTAPI
495 IN PCMHIVE Hive
496);
497
498VOID
499NTAPI
501 IN PCMHIVE Hive
502);
503
504//
505// Value Cache Functions
506//
508NTAPI
512 OUT PCM_CACHED_VALUE **CachedValue,
513 OUT ULONG *Index,
515 OUT BOOLEAN *ValueIsCached,
516 OUT PHCELL_INDEX CellToRelease
517);
518
520NTAPI
523 IN PCM_CACHED_VALUE *CachedValue,
524 IN PCM_KEY_VALUE ValueKey,
525 IN BOOLEAN ValueIsCached,
527 IN PVOID KeyValueInformation,
531);
532
534NTAPI
537 OUT PCELL_DATA *CellData,
538 OUT BOOLEAN *IndexIsCached,
539 OUT PHCELL_INDEX ValueListToRelease
540);
541
543NTAPI
546 IN PCELL_DATA CellData,
547 IN ULONG Index,
548 OUT PCM_CACHED_VALUE **CachedValue,
550 IN BOOLEAN IndexIsCached,
551 OUT BOOLEAN *ValueIsCached,
552 OUT PHCELL_INDEX CellToRelease
553);
554
556NTAPI
560 IN ULONG Type,
561 IN PVOID Data,
563);
564
565//
566// Registry Validation Functions
567//
568ULONG
569NTAPI
571 IN PCMHIVE Hive,
573);
574
575//
576// Hive List Routines
577//
579NTAPI
581 IN PCMHIVE Hive,
582 OUT PUNICODE_STRING HiveName
583);
584
586NTAPI
588 IN PCMHIVE Hive
589);
590
591VOID
592NTAPI
594 IN PCMHIVE Hive
595);
596
597//
598// Quota Routines
599//
600VOID
601NTAPI
603 VOID
604);
605
606//
607// Notification Routines
608//
609VOID
610NTAPI
613 IN PHHIVE Hive,
614 IN HCELL_INDEX Cell,
616);
617
618VOID
619NTAPI
621 IN PCM_KEY_BODY KeyBody,
622 IN BOOLEAN LockHeld
623);
624
625CODE_SEG("INIT")
626VOID
627NTAPI
629 VOID
630);
631
632//
633// KCB Cache/Delay Routines
634//
635CODE_SEG("INIT")
636VOID
637NTAPI
639 VOID
640);
641
642CODE_SEG("INIT")
643VOID
644NTAPI
646 VOID
647);
648
649CODE_SEG("INIT")
650VOID
651NTAPI
653 VOID
654);
655
656CODE_SEG("INIT")
657VOID
658NTAPI
660 VOID
661);
662
663//
664// Key Object Routines
665//
666VOID
667NTAPI
673 IN ULONG SystemHandleCount
674);
675
676VOID
677NTAPI
680);
681
683NTAPI
685 IN PVOID ParseObject,
690 IN OUT PUNICODE_STRING CompleteName,
695);
696
698NTAPI
701 IN SECURITY_OPERATION_CODE OperationType,
704 IN OUT PULONG CapturedLength,
705 IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor,
708);
709
711NTAPI
714 IN BOOLEAN HasObjectName,
715 OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
719);
720
721//
722// Hive Routines
723//
725NTAPI
727 OUT PCMHIVE *CmHive,
728 IN ULONG OperationType,
729 IN ULONG HiveFlags,
731 IN PVOID HiveData OPTIONAL,
732 IN HANDLE Primary,
733 IN HANDLE Log,
736 IN ULONG CheckFlags
737);
738
740NTAPI
742 IN PCMHIVE CmHive
743);
744
746NTAPI
748 VOID
749);
750
752NTAPI
754 IN PUNICODE_STRING LinkName,
756 IN PCMHIVE CmHive,
759);
760
762NTAPI
764 IN PCUNICODE_STRING BaseName,
766 OUT PHANDLE Primary,
767 OUT PHANDLE Log,
768 OUT PULONG PrimaryDisposition,
769 OUT PULONG LogDisposition,
770 IN BOOLEAN CreateAllowed,
771 IN BOOLEAN MarkAsSystemHive,
772 IN BOOLEAN NoBuffering,
774);
775
776VOID
777NTAPI
779 IN PCMHIVE Hive
780);
781
783NTAPI
785 IN PCUNICODE_STRING HiveName,
786 IN ULONG HiveFlags,
787 OUT PCMHIVE *Hive,
789 IN ULONG CheckFlags
790);
791
792VOID
793NTAPI
795 VOID
796);
797
798//
799// Registry Utility Functions
800//
802NTAPI
804 VOID
805);
806
808NTAPI
810 VOID
811);
812
813VOID
814NTAPI
816 VOID
817);
818
819VOID
820NTAPI
822 VOID
823);
824
825VOID
826NTAPI
828 VOID
829);
830
831VOID
832NTAPI
834 IN PCMHIVE Hive
835);
836
837VOID
838NTAPI
840 IN PCMHIVE Hive
841);
842
844NTAPI
846 IN PCMHIVE Hive
847);
848
850NTAPI
852 IN PCMHIVE Hive
853);
854
855VOID
856NTAPI
858 IN PCMHIVE Hive
859);
860
861//
862// Delay Functions
863//
864PVOID
865NTAPI
867 VOID
868);
869
870VOID
871NTAPI
874);
875
876VOID
877NTAPI
880);
881
882VOID
883NTAPI
886 IN BOOLEAN LockHeldExclusively
887);
888
889VOID
890NTAPI
892 VOID
893);
894
895VOID
896NTAPI
898
899CODE_SEG("INIT")
900VOID
901NTAPI
903 VOID
904);
905
906//
907// KCB Functions
908//
910NTAPI
912 IN PHHIVE Hive,
916 IN ULONG Flags,
918);
919
921NTAPI
923 VOID
924);
925
926VOID
927NTAPI
930);
931
932VOID
933NTAPI
936);
937
938VOID
939NTAPI
942);
943
944VOID
945NTAPI
948 IN BOOLEAN LockHeldExclusively
949);
950
951VOID
952NTAPI
955);
956
958NTAPI
961);
962
964NTAPI
967);
968
969VOID
970NTAPI
973 IN BOOLEAN LockHeldExclusively
974);
975
976VOID
977NTAPI
980);
981
982VOID
983NTAPI
985 IN PCM_KEY_BODY KeyObject,
987);
988
989VOID
990NTAPI
992 IN PCM_KEY_BODY KeyBody,
993 IN BOOLEAN LockHeld
994);
995
996VOID
997NTAPI
999 IN ULONG ConvKey1,
1000 IN ULONG ConvKey2
1001);
1002
1003VOID
1004NTAPI
1006 IN ULONG ConvKey1,
1007 IN ULONG ConvKey2
1008);
1009
1010VOID
1011NTAPI
1014 IN BOOLEAN LockHeld
1015);
1016
1017//
1018// Parse Routines
1019//
1020BOOLEAN
1021NTAPI
1024 OUT PUNICODE_STRING NextName,
1025 OUT PBOOLEAN LastName
1026);
1027
1028//
1029// Command Routines (Flush, Open, Close, Init);
1030//
1031BOOLEAN
1032NTAPI
1034 IN BOOLEAN ForceFlush
1035);
1036
1037VOID
1038NTAPI
1040 VOID
1041);
1042
1043VOID
1044NTAPI
1046 IN BOOLEAN SetupBoot
1047);
1048
1050NTAPI
1053 IN PSECURITY_CLIENT_CONTEXT ImpersonationContext,
1055 OUT PCMHIVE *NewHive,
1056 IN ULONG CheckFlags
1057);
1058
1059VOID
1060NTAPI
1062 VOID
1063);
1064
1065//
1066// Open/Create Routines
1067//
1069NTAPI
1071 IN PHHIVE Hive,
1072 IN HCELL_INDEX Cell,
1077 IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1079);
1080
1082NTAPI
1084 IN PHHIVE Hive,
1085 IN HCELL_INDEX Cell,
1091 IN PCM_KEY_CONTROL_BLOCK ParentKcb,
1093);
1094
1095//
1096// Boot Routines
1097//
1098CODE_SEG("INIT")
1099VOID
1100NTAPI
1102 IN PVOID SystemHiveData,
1103 IN PCM_SYSTEM_CONTROL_VECTOR ControlVector
1104);
1105
1107NTAPI
1109 IN USHORT ControlSet
1110);
1111
1112//
1113// Hardware Configuration Routines
1114//
1115CODE_SEG("INIT")
1117NTAPI
1119 IN PCONFIGURATION_COMPONENT_DATA CurrentEntry,
1121 OUT PHANDLE NewHandle,
1124 IN PUSHORT DeviceIndexTable
1125);
1126
1128NTAPI
1130 IN PLOADER_PARAMETER_BLOCK LoaderBlock
1131);
1132
1133CODE_SEG("INIT")
1135NTAPI
1137 IN PLOADER_PARAMETER_BLOCK LoaderBlock
1138);
1139
1140//
1141// Wrapper Routines
1142//
1144NTAPI
1149);
1150
1151PVOID
1152NTAPI
1154 IN SIZE_T Size,
1155 IN BOOLEAN Paged,
1156 IN ULONG Tag
1157);
1158
1159VOID
1160NTAPI
1161CmpFree(
1162 IN PVOID Ptr,
1163 IN ULONG Quota
1164);
1165
1166BOOLEAN
1167NTAPI
1169 IN PHHIVE RegistryHive,
1174);
1175
1176BOOLEAN
1177NTAPI
1179 IN PHHIVE RegistryHive,
1182 IN PVOID Buffer,
1184);
1185
1186BOOLEAN
1187NTAPI
1189 IN PHHIVE RegistryHive,
1192 IN ULONG OldFileSize
1193);
1194
1195BOOLEAN
1196NTAPI
1198 IN PHHIVE RegistryHive,
1202);
1203
1204//
1205// Configuration Manager side of Registry System Calls
1206//
1208NTAPI
1211 IN ULONG Index,
1213 IN PVOID KeyValueInformation,
1214 IN ULONG Length,
1216
1218NTAPI
1222 IN ULONG Type,
1223 IN PVOID Data,
1224 IN ULONG DataSize);
1225
1227NTAPI
1230 IN PVOID KeyInformation,
1231 IN ULONG Length,
1233);
1234
1236NTAPI
1238 IN ULONG Index,
1240 IN PVOID KeyInformation,
1241 IN ULONG Length,
1243);
1244
1246NTAPI
1248 IN PCM_KEY_BODY KeyBody
1249);
1250
1252NTAPI
1255 IN BOOLEAN EclusiveLock
1256);
1257
1259NTAPI
1263);
1264
1266NTAPI
1271 IN PVOID KeyValueInformation,
1272 IN ULONG Length,
1274);
1275
1277NTAPI
1278CmLoadKey(
1279 IN POBJECT_ATTRIBUTES TargetKey,
1280 IN POBJECT_ATTRIBUTES SourceFile,
1281 IN ULONG Flags,
1282 IN PCM_KEY_BODY KeyBody
1283);
1284
1286NTAPI
1289 IN ULONG Flags
1290);
1291
1292ULONG
1293NTAPI
1295 IN PCM_KEY_CONTROL_BLOCK RootKcb,
1296 IN BOOLEAN RemoveEmptyCacheEntries,
1297 IN BOOLEAN DereferenceOpenedEntries
1298);
1299
1301NTAPI
1303 IN PHHIVE SourceHive,
1304 IN HCELL_INDEX SourceCell,
1305 IN PHHIVE DestinationHive,
1306 IN HSTORAGE_TYPE StorageType
1307);
1308
1310NTAPI
1312 IN PHHIVE SourceHive,
1313 IN HCELL_INDEX SrcKeyCell,
1314 IN PHHIVE DestinationHive,
1315 IN HSTORAGE_TYPE StorageType,
1316 OUT PHCELL_INDEX DestKeyCell OPTIONAL
1317);
1318
1320NTAPI
1321CmSaveKey(
1324 IN ULONG Flags
1325);
1326
1328NTAPI
1330 IN PCM_KEY_CONTROL_BLOCK HighKcb,
1333);
1334
1335//
1336// Startup and Shutdown
1337//
1338CODE_SEG("INIT")
1339BOOLEAN
1340NTAPI
1342 VOID
1343);
1344
1345VOID
1346NTAPI
1348 VOID
1349);
1350
1351VOID
1352NTAPI
1355);
1356
1357VOID
1358NTAPI
1360 VOID
1361);
1362
1363//
1364// Driver List Routines
1365//
1366CODE_SEG("INIT")
1368NTAPI
1370 VOID
1371);
1372
1373//
1374// Global variables accessible from all of Cm
1375//
1376extern ULONG CmpTraceLevel;
1380extern BOOLEAN CmpMiniNTBoot;
1389extern CMHIVE CmControlHive;
1390extern WCHAR CmDefaultLanguageId[];
1396extern ULONG CmNtGlobalFlag;
1402extern UNICODE_STRING CmTypeName[];
1406extern ULONG CmpTypeCount[MaximumType + 1];
1411extern BOOLEAN CmSelfHeal;
1412extern BOOLEAN CmpSelfHeal;
1413extern ULONG CmpBootType;
1417extern ULONG CmpHashTableSize;
1419extern BOOLEAN CmpNoWrite;
1426
1427//
1428// Inlined functions
1429//
1430#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:798
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:158
VOID NTAPI CmpCleanUpKcbCacheWithLock(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN LockHeldExclusively)
Definition: cmkcbncb.c:476
VOID NTAPI CmpSetVersionData(VOID)
Definition: cmsysini.c:2062
struct _CM_NAME_CONTROL_BLOCK CM_NAME_CONTROL_BLOCK
ULONG CmDefaultLanguageIdLength
Definition: cmdata.c:23
NTSTATUS NTAPI CmUnloadKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN ULONG Flags)
Definition: cmapi.c:2201
ULONG CmpDelayedCloseIndex
Definition: cm.h:1418
ULONG CmpDelayedCloseSize
Definition: cmdelay.c:19
NTSTATUS NTAPI CmpInitializeHive(OUT PCMHIVE *CmHive, IN ULONG OperationType, IN ULONG HiveFlags, IN ULONG FileType, IN PVOID HiveData OPTIONAL, IN HANDLE Primary, IN HANDLE Log, IN HANDLE External, IN PCUNICODE_STRING FileName OPTIONAL, IN ULONG CheckFlags)
Definition: cminit.c:19
BOOLEAN 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:1845
BOOLEAN NTAPI CmpTestHiveFlusherLockShared(IN PCMHIVE Hive)
Definition: cmsysini.c:1928
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:637
VOID NTAPI CmpUnlockRegistry(VOID)
Definition: cmsysini.c:1944
struct _KEY_VALUE_INFORMATION KEY_VALUE_INFORMATION
ERESOURCE CmpRegistryLock
Definition: cmsysini.c:19
USHORT CmpUnknownBusCount
Definition: cmdata.c:63
VOID NTAPI CmpRemoveFromHiveFileList(IN PCMHIVE Hive)
Definition: cmhvlist.c:254
struct _CM_ALLOC_PAGE CM_ALLOC_PAGE
POBJECT_TYPE CmpKeyObjectType
Definition: cmsysini.c:16
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:1894
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:1936
ULONG NTAPI CmCheckRegistry(IN PCMHIVE Hive, IN ULONG Flags)
Definition: cmcheck.c:21
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:1967
VOID NTAPI CmpFree(IN PVOID Ptr, IN ULONG Quota)
Definition: registry.c:57
NTSTATUS NTAPI CmpInitializeMachineDependentConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: cmhardwr.c:21
NTSTATUS NTAPI CmpCreateLinkNode(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN PACCESS_STATE AccessState, IN UNICODE_STRING Name, IN KPROCESSOR_MODE AccessMode, IN ULONG CreateOptions, IN PCM_PARSE_CONTEXT Context, IN PCM_KEY_CONTROL_BLOCK ParentKcb, OUT PVOID *Object)
Definition: cmparse.c:727
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
BOOLEAN NTAPI CmpFileSetSize(IN PHHIVE RegistryHive, IN ULONG FileType, IN ULONG FileSize, IN ULONG OldFileSize)
Definition: cmwraprs.c:132
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:1382
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:1996
BOOLEAN NTAPI CmInitSystem1(VOID)
Definition: cmsysini.c:1511
struct _CM_CACHED_VALUE * PCM_CACHED_VALUE
UNICODE_STRING CmpSystemStartOptions
struct _CM_NOTIFY_BLOCK CM_NOTIFY_BLOCK
VOID NTAPI CmpLockRegistry(VOID)
Definition: cmsysini.c:1858
VOID NTAPI CmpLockHiveFlusherShared(IN PCMHIVE Hive)
Definition: cmsysini.c:1905
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:1030
_VALUE_SEARCH_RETURN_TYPE
Definition: cm.h:126
@ SearchSuccess
Definition: cm.h:127
@ SearchNeedExclusiveLock
Definition: cm.h:128
@ SearchFail
Definition: cm.h:129
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:328
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:234
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:2713
VOID NTAPI CmpInitializeHiveList(VOID)
Definition: cmsysini.c:1358
CMP_MF_TYPE CmpMultifunctionTypes[]
struct _CM_KEY_SECURITY_CACHE_ENTRY CM_KEY_SECURITY_CACHE_ENTRY
BOOLEAN CmpSpecialBootCondition
Definition: cmsysini.c:28
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 CmEnumerateKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN ULONG Index, IN KEY_INFORMATION_CLASS KeyInformationClass, IN PVOID KeyInformation, IN ULONG Length, IN PULONG ResultLength)
Definition: cmapi.c:1735
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:159
NTSTATUS NTAPI CmSetValueKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN PUNICODE_STRING ValueName, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
Definition: cmapi.c:644
struct _CM_DELAYED_CLOSE_ENTRY CM_DELAYED_CLOSE_ENTRY
struct _CM_NAME_HASH CM_NAME_HASH
NTSTATUS NTAPI CmFlushKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN BOOLEAN EclusiveLock)
Definition: cmapi.c:1938
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
VOID NTAPI CmpShutdownWorkers(VOID)
Definition: cmlazy.c:433
VOID NTAPI CmpCleanUpKcbValueCache(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmkcbncb.c:431
struct _CM_NAME_HASH * PCM_NAME_HASH
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:403
struct _CM_DELAY_DEREF_KCB_ITEM * PCM_DELAY_DEREF_KCB_ITEM
BOOLEAN CmpNoVolatileCreates
Definition: cmsysini.c:32
NTSTATUS NTAPI CmpSaveBootControlSet(IN USHORT ControlSet)
Definition: cmcontrl.c:268
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:1139
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:17
struct _KEY_INFORMATION KEY_INFORMATION
BOOLEAN CmpProfileLoaded
Definition: cmsysini.c:31
BOOLEAN NTAPI CmpTestRegistryLockExclusive(VOID)
Definition: cmsysini.c:1886
VOID NTAPI CmpRemoveFromDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb)
Definition: cmdelay.c:425
ULONG CmpBootType
Definition: cmdata.c:61
LIST_ENTRY CmpHiveListHead
Definition: cmsysini.c:18
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:2627
ULONG CmpTypeCount[MaximumType+1]
Definition: cmdata.c:64
BOOLEAN CmpWasSetupBoot
Definition: cmsysini.c:30
struct _CM_KEY_HASH * PCM_KEY_HASH
BOOLEAN CmpNoWrite
Definition: cmsysini.c:29
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:286
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:1075
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:33
BOOLEAN CmpSelfHeal
Definition: cmdata.c:59
BOOLEAN NTAPI CmpFileFlush(IN PHHIVE RegistryHive, IN ULONG FileType, IN OUT PLARGE_INTEGER FileOffset, IN ULONG Length)
Definition: cmwraprs.c:169
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
NTSTATUS NTAPI CmpCmdHiveOpen(IN POBJECT_ATTRIBUTES FileAttributes, IN PSECURITY_CLIENT_CONTEXT ImpersonationContext, IN OUT PBOOLEAN Allocate, OUT PCMHIVE *NewHive, IN ULONG CheckFlags)
Definition: cmlazy.c:272
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:916
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:442
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:1192
struct _CM_DELAYED_CLOSE_ENTRY * PCM_DELAYED_CLOSE_ENTRY
VOID NTAPI CmpUnlockHiveFlusher(IN PCMHIVE Hive)
Definition: cmsysini.c:1916
struct _CM_KEY_BODY CM_KEY_BODY
PVOID NTAPI CmpAllocateDelayItem(VOID)
Definition: cmalloc.c:196
NTSTATUS NTAPI CmSaveKey(IN PCM_KEY_CONTROL_BLOCK Kcb, IN HANDLE FileHandle, IN ULONG Flags)
Definition: cmapi.c:2644
BOOLEAN CmpForceForceFlush
Definition: cmlazy.c:23
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:82
BOOLEAN CmpFlushOnLockRelease
Definition: cmsysini.c:27
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:66
NTSTATUS NTAPI CmDeleteKey(IN PCM_KEY_BODY KeyBody)
Definition: cmapi.c:1824
struct _CM_KEY_SECURITY_CACHE_ENTRY * PCM_KEY_SECURITY_CACHE_ENTRY
BOOLEAN CmpHoldLazyFlush
Definition: cmlazy.c:24
BOOLEAN CmSelfHeal
Definition: cmdata.c:58
VOID NTAPI CmShutdownSystem(VOID)
Definition: cmsysini.c:2034
BOOLEAN CmpShareSystemHives
Definition: cmdata.c:57
ULONG CmInstallUILanguageIdType
Definition: cmdata.c:28
UNICODE_STRING CmpLoadOptions
Definition: cmdata.c:55
PUNICODE_STRING *NTAPI CmGetSystemDriverList(VOID)
Definition: cmsysini.c:1727
NTSTATUS NTAPI CmpOpenHiveFiles(IN PCUNICODE_STRING BaseName, IN PCWSTR Extension OPTIONAL, OUT PHANDLE Primary, OUT PHANDLE Log, OUT PULONG PrimaryDisposition, OUT PULONG LogDisposition, IN BOOLEAN CreateAllowed, IN BOOLEAN MarkAsSystemHive, IN BOOLEAN NoBuffering, OUT PULONG ClusterSize OPTIONAL)
Definition: cminit.c:266
PVOID NTAPI CmpAllocate(IN SIZE_T Size, IN BOOLEAN Paged, IN ULONG Tag)
Definition: registry.c:46
VOID NTAPI CmpInitCmPrivateAlloc(VOID)
Definition: cmalloc.c:29
ULONG CmpHashTableSize
Definition: cmkcbncb.c:17
NTSTATUS NTAPI CmLoadKey(IN POBJECT_ATTRIBUTES TargetKey, IN POBJECT_ATTRIBUTES SourceFile, IN ULONG Flags, IN PCM_KEY_BODY KeyBody)
Definition: cmapi.c:2004
NTSTATUS NTAPI CmpDestroyHive(IN PCMHIVE CmHive)
Definition: cminit.c:235
struct _CM_KEY_CONTROL_BLOCK CM_KEY_CONTROL_BLOCK
BOOLEAN NTAPI CmpTestRegistryLock(VOID)
Definition: cmsysini.c:1878
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:2334
LIST_ENTRY CmiKeyObjectListHead
VOID NTAPI CmpFreeDelayItem(PVOID Entry)
Definition: cmalloc.c:266
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:80
HSTORAGE_TYPE
Definition: hivedata.h:101
ULONG HCELL_INDEX
Definition: hivedata.h:80
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
* 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
_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
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:203
ULONG Count
Definition: cm.h:199
ULONG ValueList
Definition: cm.h:202
Definition: cmlib.h:245
USHORT Count
Definition: cm.h:428
PCHAR Identifier
Definition: cm.h:426
USHORT InterfaceType
Definition: cm.h:427
PVOID AllocPage
Definition: cm.h:335
ULONG Reserved
Definition: cm.h:334
ULONG FreeCount
Definition: cm.h:333
union _CM_CACHED_VALUE_INDEX::@1741 Data
CELL_DATA CellData
Definition: cm.h:373
HCELL_INDEX CellIndex
Definition: cm.h:370
ULONG HashKey
Definition: cm.h:385
CM_KEY_VALUE KeyValue
Definition: cm.h:386
USHORT ValueKeySize
Definition: cm.h:384
USHORT DataCacheType
Definition: cm.h:383
HCELL_INDEX OldCell
Definition: cm.h:324
HCELL_INDEX NewCell
Definition: cm.h:325
Definition: cm.h:351
LIST_ENTRY DelayedLRUList
Definition: cm.h:352
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:353
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:344
LIST_ENTRY ListEntry
Definition: cm.h:343
PCM_KEY_CONTROL_BLOCK Kcb
Definition: cm.h:362
LIST_ENTRY ListEntry
Definition: cm.h:361
ULONG HashKey[ANYSIZE_ARRAY]
Definition: cm.h:213
ULONG Type
Definition: cm.h:221
HANDLE ProcessID
Definition: cm.h:224
struct _CM_NOTIFY_BLOCK * NotifyBlock
Definition: cm.h:223
struct _CM_KEY_CONTROL_BLOCK * KeyControlBlock
Definition: cm.h:222
LIST_ENTRY KeyBodyList
Definition: cm.h:225
LIST_ENTRY KeyBodyListHead
Definition: cm.h:286
ULONG PrivateAlloc
Definition: cm.h:258
ULONG TotalLevels
Definition: cm.h:261
USHORT KcbMaxValueNameLen
Definition: cm.h:293
ULONG DelayedCloseIndex
Definition: cm.h:260
ULONG KcbMaxValueDataLen
Definition: cm.h:294
PCM_NAME_CONTROL_BLOCK NameBlock
Definition: cm.h:275
CM_KEY_HASH KeyHash
Definition: cm.h:265
PCM_INDEX_HINT_BLOCK IndexHint
Definition: cm.h:280
ULONG RefCount
Definition: cm.h:254
PHHIVE KeyHive
Definition: cm.h:270
struct _CM_KEY_CONTROL_BLOCK * ParentKcb
Definition: cm.h:274
ULONG KcbDebug
Definition: cm.h:299
ULONG ExtFlags
Definition: cm.h:257
HCELL_INDEX KeyCell
Definition: cm.h:271
LARGE_INTEGER KcbLastWriteTime
Definition: cm.h:291
ULONG Signature
Definition: cm.h:253
PCM_KEY_BODY KeyBodyArray[4]
Definition: cm.h:289
ULONG KcbVirtControlFlags
Definition: cm.h:298
LIST_ENTRY FreeListEntry
Definition: cm.h:287
USHORT KcbMaxNameLen
Definition: cm.h:292
ULONG InDelayClose
Definition: cm.h:302
ULONG KcbUserFlags
Definition: cm.h:297
PCM_KEY_HASH NextHash
Definition: cm.h:269
ULONG SubKeyCount
Definition: cm.h:282
PVOID DelayCloseEntry
Definition: cm.h:290
CACHED_CHILD_LIST ValueCache
Definition: cm.h:277
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:276
Definition: cm.h:147
PCM_KEY_HASH Entry
Definition: cm.h:150
EX_PUSH_LOCK Lock
Definition: cm.h:148
PKTHREAD Owner
Definition: cm.h:149
ULONG ConvKey
Definition: cm.h:137
PHHIVE KeyHive
Definition: cm.h:139
HCELL_INDEX KeyCell
Definition: cm.h:140
struct _CM_KEY_HASH * NextHash
Definition: cm.h:138
Definition: cm.h:189
PCM_KEY_SECURITY_CACHE CachedSecurity
Definition: cm.h:191
HCELL_INDEX Cell
Definition: cm.h:190
ULONG DescriptorLength
Definition: cm.h:181
HCELL_INDEX Cell
Definition: cm.h:178
SECURITY_DESCRIPTOR_RELATIVE Descriptor
Definition: cm.h:182
LIST_ENTRY List
Definition: cm.h:180
PCM_KEY_HASH NextHash
Definition: cm.h:241
CM_NAME_HASH NameHash
Definition: cm.h:237
BOOLEAN Compressed
Definition: cm.h:233
USHORT NameLength
Definition: cm.h:242
USHORT RefCount
Definition: cm.h:234
Definition: cm.h:168
EX_PUSH_LOCK Lock
Definition: cm.h:169
PCM_NAME_HASH Entry
Definition: cm.h:170
struct _CM_NAME_HASH * NextHash
Definition: cm.h:159
USHORT NameLength
Definition: cm.h:160
ULONG ConvKey
Definition: cm.h:158
ULONG WatchTree
Definition: cm.h:315
PCM_KEY_BODY KeyBody
Definition: cm.h:313
LIST_ENTRY HiveList
Definition: cm.h:310
PCM_KEY_CONTROL_BLOCK KeyControlBlock
Definition: cm.h:312
ULONG NotifyPending
Definition: cm.h:316
LIST_ENTRY PostList
Definition: cm.h:311
ULONG Filter
Definition: cm.h:314
HANDLE PredefinedHandle
Definition: cm.h:415
CM_KEY_REFERENCE ChildHive
Definition: cm.h:414
ULONG TitleIndex
Definition: cm.h:410
ULONG Disposition
Definition: cm.h:413
BOOLEAN CreateLink
Definition: cm.h:416
PCMHIVE OriginatingPoint
Definition: cm.h:418
UNICODE_STRING Class
Definition: cm.h:411
BOOLEAN CreateOperation
Definition: cm.h:417
ULONG CreateOptions
Definition: cm.h:412
Definition: registry.c:569
BOOLEAN ThreadStarted
Definition: cm.h:401
PCMHIVE CmHive
Definition: cm.h:396
PWSTR Name
Definition: cm.h:394
PWSTR BaseName
Definition: cm.h:395
PCMHIVE CmHive2
Definition: cm.h:399
BOOLEAN Allocate
Definition: cm.h:402
BOOLEAN ThreadFinished
Definition: cm.h:400
ULONG HHiveFlags
Definition: cm.h:397
ULONG CmHiveFlags
Definition: cm.h:398
KEY_FULL_INFORMATION KeyFullInformation
Definition: cm.h:462
KEY_NODE_INFORMATION KeyNodeInformation
Definition: cm.h:463
KEY_BASIC_INFORMATION KeyBasicInformation
Definition: cm.h:461
KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 KeyValuePartialInformationAlign64
Definition: cm.h:453
KEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInformation
Definition: cm.h:452
KEY_VALUE_BASIC_INFORMATION KeyValueBasicInformation
Definition: cm.h:450
KEY_VALUE_FULL_INFORMATION KeyValueFullInformation
Definition: cm.h:451
Definition: typedefs.h:120
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t * PULONG
Definition: typedefs.h:59
WORD LANGID
Definition: typedefs.h:81
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