[NTOSKRNL]
[reactos.git] / reactos / ntoskrnl / include / internal / cm.h
index c70e9c0..d4d7c9e 100644 (file)
@@ -33,7 +33,7 @@
     if (x & CmpTraceLevel) DbgPrint(__VA_ARGS__)
 #endif
 #else
-#define CMTRACE(x, ...) DPRINT(__VA_ARGS__)
+#define CMTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
 #endif
 
 //
@@ -49,7 +49,7 @@
 #define CM_KCB_INVALID_SIGNATURE                        '4FmC'
 
 //
-// CM_KEY_CONTROL_BLOCK Flags
+// CM_KEY_CONTROL_BLOCK ExtFlags
 //
 #define CM_KCB_NO_SUBKEY                                0x01
 #define CM_KCB_SUBKEY_ONE                               0x02
@@ -253,8 +253,7 @@ typedef struct _CM_NAME_CONTROL_BLOCK
 typedef struct _CM_KEY_CONTROL_BLOCK
 {
     ULONG Signature;
-    USHORT RefCount;
-    USHORT Flags;
+    ULONG RefCount;
     struct
     {
         ULONG ExtFlags:8;
@@ -295,6 +294,13 @@ typedef struct _CM_KEY_CONTROL_BLOCK
     USHORT KcbMaxNameLen;
     USHORT KcbMaxValueNameLen;
     ULONG KcbMaxValueDataLen;
+    struct
+    {
+         ULONG KcbUserFlags : 4;
+         ULONG KcbVirtControlFlags : 4;
+         ULONG KcbDebug : 8;
+         ULONG Flags : 16;
+    };
     ULONG InDelayClose;
 } CM_KEY_CONTROL_BLOCK, *PCM_KEY_CONTROL_BLOCK;
 
@@ -624,12 +630,25 @@ CmCheckRegistry(
 //
 // Hive List Routines
 //
+BOOLEAN
+NTAPI
+CmpGetHiveName(
+    IN  PCMHIVE Hive,
+    OUT PUNICODE_STRING HiveName
+);
+
 NTSTATUS
 NTAPI
 CmpAddToHiveFileList(
     IN PCMHIVE Hive
 );
 
+VOID
+NTAPI
+CmpRemoveFromHiveFileList(
+    IN PCMHIVE Hive
+);
+
 //
 // Quota Routines
 //
@@ -767,6 +786,12 @@ CmpInitializeHive(
     IN ULONG CheckFlags
 );
 
+NTSTATUS
+NTAPI
+CmpDestroyHive(
+    IN PCMHIVE CmHive
+);
+
 PSECURITY_DESCRIPTOR
 NTAPI
 CmpHiveRootSecurityDescriptor(
@@ -788,10 +813,10 @@ NTAPI
 CmpOpenHiveFiles(
     IN PCUNICODE_STRING BaseName,
     IN PCWSTR Extension OPTIONAL,
-    IN PHANDLE Primary,
-    IN PHANDLE Log,
-    IN PULONG PrimaryDisposition,
-    IN PULONG LogDisposition,
+    OUT PHANDLE Primary,
+    OUT PHANDLE Log,
+    OUT PULONG PrimaryDisposition,
+    OUT PULONG LogDisposition,
     IN BOOLEAN CreateAllowed,
     IN BOOLEAN MarkAsSystemHive,
     IN BOOLEAN NoBuffering,
@@ -1303,6 +1328,16 @@ CmpGetValueData(
     OUT PHCELL_INDEX CellToRelease
 );
 
+NTSTATUS
+NTAPI
+CmpCopyKeyValueList(
+    IN PHHIVE SourceHive,
+    IN PCHILD_LIST SrcValueList,
+    IN PHHIVE DestinationHive,
+    IN OUT PCHILD_LIST DestValueList,
+    IN HSTORAGE_TYPE StorageType
+);
+
 //
 // Boot Routines
 //
@@ -1508,6 +1543,33 @@ CmCountOpenSubKeys(
     IN BOOLEAN RemoveEmptyCacheEntries
 );
 
+HCELL_INDEX
+NTAPI
+CmpCopyCell(
+    IN PHHIVE SourceHive,
+    IN HCELL_INDEX SourceCell,
+    IN PHHIVE DestinationHive,
+    IN HSTORAGE_TYPE StorageType
+);
+
+NTSTATUS
+NTAPI
+CmpDeepCopyKey(
+    IN PHHIVE SourceHive,
+    IN HCELL_INDEX SrcKeyCell,
+    IN PHHIVE DestinationHive,
+    IN HSTORAGE_TYPE StorageType,
+    OUT PHCELL_INDEX DestKeyCell OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+CmSaveKey(
+    IN PCM_KEY_CONTROL_BLOCK Kcb,
+    IN HANDLE FileHandle,
+    IN ULONG Flags
+);
+
 //
 // Startup and Shutdown
 //