if (x & CmpTraceLevel) DbgPrint(__VA_ARGS__)
#endif
#else
-#define CMTRACE(x, ...) DPRINT(__VA_ARGS__)
+#define CMTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
#endif
//
#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
typedef struct _CM_KEY_CONTROL_BLOCK
{
ULONG Signature;
- USHORT RefCount;
- USHORT Flags;
+ ULONG RefCount;
struct
{
ULONG ExtFlags:8;
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;
//
// 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
//
IN ULONG CheckFlags
);
+NTSTATUS
+NTAPI
+CmpDestroyHive(
+ IN PCMHIVE CmHive
+);
+
PSECURITY_DESCRIPTOR
NTAPI
CmpHiveRootSecurityDescriptor(
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,
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
//
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
//