[NTOSKRNL]
[reactos.git] / reactos / ntoskrnl / include / internal / cm.h
index 4cc872d..30fa366 100644 (file)
@@ -45,8 +45,8 @@
 //
 // CM_KEY_CONTROL_BLOCK Signatures
 //
-#define CM_KCB_SIGNATURE                                TAG('C', 'm', 'K', 'b')
-#define CM_KCB_INVALID_SIGNATURE                        TAG('C', 'm', 'F', '4')
+#define CM_KCB_SIGNATURE                                'bKmC'
+#define CM_KCB_INVALID_SIGNATURE                        '4FmC'
 
 //
 // CM_KEY_CONTROL_BLOCK Flags
 #define CMP_CREATE_FAKE_KCB                             0x1
 #define CMP_LOCK_HASHES_FOR_KCB                         0x2
 
+//
+// CmpDoCreate and CmpDoOpen flags
+//
+#define CMP_CREATE_KCB_KCB_LOCKED                       0x2
+#define CMP_OPEN_KCB_NO_CREATE                          0x4
+
 //
 // EnlistKeyBodyWithKCB Flags
 //
 #define CMP_ENLIST_KCB_LOCKED_SHARED                    0x1
 #define CMP_ENLIST_KCB_LOCKED_EXCLUSIVE                 0x2
 
+//
+// Unload Flags
+//
+#define CMP_UNLOCK_KCB_LOCKED                    0x1
+#define CMP_UNLOCK_REGISTRY_LOCKED               0x2
+
 //
 // Maximum size of Value Cache
 //
@@ -609,6 +621,24 @@ CmCheckRegistry(
     IN ULONG Flags
 );
 
+//
+// Hive List Routines
+//
+NTSTATUS
+NTAPI
+CmpAddToHiveFileList(
+    IN PCMHIVE Hive
+);
+
+//
+// Quota Routines
+//
+VOID
+NTAPI
+CmpSetGlobalQuotaAllowed(
+    VOID
+);
+
 //
 // Notification Routines
 //
@@ -621,6 +651,13 @@ CmpReportNotify(
     IN ULONG Filter
 );
 
+VOID
+NTAPI
+CmpFlushNotify(
+    IN PCM_KEY_BODY KeyBody,
+    IN BOOLEAN LockHeld
+);
+
 VOID
 NTAPI
 CmpInitCallback(
@@ -810,6 +847,36 @@ CmpUnlockRegistry(
     VOID
 );
 
+VOID
+NTAPI
+CmpLockHiveFlusherExclusive(
+    IN PCMHIVE Hive
+);
+
+VOID
+NTAPI
+CmpLockHiveFlusherShared(
+    IN PCMHIVE Hive
+);
+
+BOOLEAN
+NTAPI
+CmpTestHiveFlusherLockExclusive(
+    IN PCMHIVE Hive
+);
+
+BOOLEAN
+NTAPI
+CmpTestHiveFlusherLockShared(
+    IN PCMHIVE Hive
+);
+
+VOID
+NTAPI
+CmpUnlockHiveFlusher(
+    IN PCMHIVE Hive
+);
+
 //
 // Delay Functions
 //
@@ -966,6 +1033,13 @@ CmpReleaseTwoKcbLockByKey(
     IN ULONG ConvKey2
 );
 
+VOID
+NTAPI
+CmpFlushNotifiesOnKeyBodyList(
+    IN PCM_KEY_CONTROL_BLOCK Kcb,
+    IN BOOLEAN LockHeld
+);
+
 //
 // Name Functions
 //
@@ -1420,6 +1494,20 @@ CmLoadKey(
     IN PCM_KEY_BODY KeyBody
 );
 
+NTSTATUS
+NTAPI
+CmUnloadKey(
+    IN PCM_KEY_CONTROL_BLOCK Kcb,
+    IN ULONG Flags
+);
+
+ULONG
+NTAPI
+CmCountOpenSubKeys(
+    IN PCM_KEY_CONTROL_BLOCK RootKcb,
+    IN BOOLEAN RemoveEmptyCacheEntries
+);
+
 //
 // Startup and Shutdown
 //
@@ -1435,6 +1523,46 @@ CmShutdownSystem(
     VOID
 );
 
+VOID
+NTAPI
+CmSetLazyFlushState(
+    IN BOOLEAN Enable
+);
+
+//
+// Driver List Routines
+//
+PUNICODE_STRING*
+NTAPI
+CmGetSystemDriverList(
+    VOID
+);
+
+BOOLEAN
+NTAPI
+CmpFindDrivers(
+    IN PHHIVE Hive,
+    IN HCELL_INDEX ControlSet,
+    IN SERVICE_LOAD_TYPE LoadType,
+    IN PWSTR BootFileSystem OPTIONAL,
+    IN PLIST_ENTRY DriverListHead
+);
+
+
+BOOLEAN
+NTAPI
+CmpSortDriverList(
+    IN PHHIVE Hive,
+    IN HCELL_INDEX ControlSet,
+    IN PLIST_ENTRY DriverListHead
+);
+
+BOOLEAN
+NTAPI
+CmpResolveDriverDependencies(
+    IN PLIST_ENTRY DriverListHead
+);
+
 //
 // Global variables accessible from all of Cm
 //
@@ -1482,6 +1610,7 @@ extern ULONG CmpDelayedCloseSize, CmpDelayedCloseIndex;
 extern BOOLEAN CmpNoWrite;
 extern BOOLEAN CmpForceForceFlush;
 extern BOOLEAN CmpWasSetupBoot;
+extern BOOLEAN CmpProfileLoaded;
 extern PCMHIVE CmiVolatileHive;
 extern LIST_ENTRY CmiKeyObjectListHead;
 extern BOOLEAN CmpHoldLazyFlush;