/*
* PROJECT: ReactOS Kernel
* LICENSE: GPL - See COPYING in the top level directory
- * FILE: ntoskrnl/cm/cm.h
+ * FILE: ntoskrnl/include/internal/cm.h
* PURPOSE: Internal header for the Configuration Manager
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
*/
// Hack since bigkeys are not yet supported
//
#define ASSERT_VALUE_BIG(h, s) \
- ASSERTMSG("Big keys not supported!", !CmpIsKeyValueBig(h, s));
+ ASSERTMSG("Big keys not supported!\n", !CmpIsKeyValueBig(h, s));
//
// CM_KEY_CONTROL_BLOCK Signatures
IN PCMHIVE Hive
);
+VOID
+NTAPI
+CmpDestroyHiveViewList(
+ IN PCMHIVE Hive
+);
+
//
// Security Cache Functions
//
IN PCMHIVE Hive
);
+VOID
+NTAPI
+CmpDestroySecurityCache(
+ IN PCMHIVE Hive
+);
+
//
// Value Cache Functions
//
NTAPI
CmpInitializeHive(
OUT PCMHIVE *CmHive,
- IN ULONG Operation,
- IN ULONG Flags,
+ IN ULONG OperationType,
+ IN ULONG HiveFlags,
IN ULONG FileType,
IN PVOID HiveData OPTIONAL,
IN HANDLE Primary,
OUT PULONG ClusterSize OPTIONAL
);
+VOID
+NTAPI
+CmpCloseHiveFiles(
+ IN PCMHIVE Hive
+);
+
NTSTATUS
NTAPI
CmpInitHiveFromFile(
IN BOOLEAN LockHeld
);
-NTSTATUS
-NTAPI
-CmpFreeKeyByCell(
- IN PHHIVE Hive,
- IN HCELL_INDEX Cell,
- IN BOOLEAN Unlink
-);
-
VOID
NTAPI
CmpAcquireTwoKcbLocksExclusiveByKey(
IN BOOLEAN LockHeld
);
-//
-// Name Functions
-//
-LONG
-NTAPI
-CmpCompareCompressedName(
- IN PCUNICODE_STRING SearchName,
- IN PWCHAR CompressedName,
- IN ULONG NameLength
-);
-
-USHORT
-NTAPI
-CmpNameSize(
- IN PHHIVE Hive,
- IN PUNICODE_STRING Name
-);
-
-USHORT
-NTAPI
-CmpCompressedNameSize(
- IN PWCHAR Name,
- IN ULONG Length
-);
-
-VOID
-NTAPI
-CmpCopyCompressedName(
- IN PWCHAR Destination,
- IN ULONG DestinationLength,
- IN PWCHAR Source,
- IN ULONG SourceLength
-);
-
-USHORT
-NTAPI
-CmpCopyName(
- IN PHHIVE Hive,
- IN PWCHAR Destination,
- IN PUNICODE_STRING Source
-);
-
-BOOLEAN
-NTAPI
-CmpFindNameInList(
- IN PHHIVE Hive,
- IN PCHILD_LIST ChildList,
- IN PUNICODE_STRING Name,
- IN PULONG ChildIndex,
- IN PHCELL_INDEX CellIndex
-);
-
//
// Parse Routines
//
OUT PVOID *Object
);
-//
-// Cell Index Routines
-//
-
-HCELL_INDEX
-NTAPI
-CmpFindSubKeyByName(
- IN PHHIVE Hive,
- IN PCM_KEY_NODE Parent,
- IN PCUNICODE_STRING SearchName
-);
-
-HCELL_INDEX
-NTAPI
-CmpFindSubKeyByNumber(
- IN PHHIVE Hive,
- IN PCM_KEY_NODE Node,
- IN ULONG Number
-);
-
-ULONG
-NTAPI
-CmpComputeHashKey(
- IN ULONG Hash,
- IN PCUNICODE_STRING Name,
- IN BOOLEAN AllowSeparators
-);
-
-BOOLEAN
-NTAPI
-CmpAddSubKey(
- IN PHHIVE Hive,
- IN HCELL_INDEX Parent,
- IN HCELL_INDEX Child
-);
-
-BOOLEAN
-NTAPI
-CmpRemoveSubKey(
- IN PHHIVE Hive,
- IN HCELL_INDEX ParentKey,
- IN HCELL_INDEX TargetKey
-);
-
-BOOLEAN
-NTAPI
-CmpMarkIndexDirty(
- IN PHHIVE Hive,
- HCELL_INDEX ParentKey,
- HCELL_INDEX TargetKey
-);
-
-//
-// Cell Value Routines
-//
-HCELL_INDEX
-NTAPI
-CmpFindValueByName(
- IN PHHIVE Hive,
- IN PCM_KEY_NODE KeyNode,
- IN PUNICODE_STRING Name
-);
-
-PCELL_DATA
-NTAPI
-CmpValueToData(
- IN PHHIVE Hive,
- IN PCM_KEY_VALUE Value,
- OUT PULONG Length
-);
-
-NTSTATUS
-NTAPI
-CmpSetValueDataNew(
- IN PHHIVE Hive,
- IN PVOID Data,
- IN ULONG DataSize,
- IN ULONG StorageType,
- IN HCELL_INDEX ValueCell,
- OUT PHCELL_INDEX DataCell
-);
-
-NTSTATUS
-NTAPI
-CmpAddValueToList(
- IN PHHIVE Hive,
- IN HCELL_INDEX ValueCell,
- IN ULONG Index,
- IN ULONG Type,
- IN OUT PCHILD_LIST ChildList
-);
-
-BOOLEAN
-NTAPI
-CmpFreeValue(
- IN PHHIVE Hive,
- IN HCELL_INDEX Cell
-);
-
-BOOLEAN
-NTAPI
-CmpMarkValueDataDirty(
- IN PHHIVE Hive,
- IN PCM_KEY_VALUE Value
-);
-
-BOOLEAN
-NTAPI
-CmpFreeValueData(
- IN PHHIVE Hive,
- IN HCELL_INDEX DataCell,
- IN ULONG DataLength
-);
-
-NTSTATUS
-NTAPI
-CmpRemoveValueFromList(
- IN PHHIVE Hive,
- IN ULONG Index,
- IN OUT PCHILD_LIST ChildList
-);
-
-BOOLEAN
-NTAPI
-CmpGetValueData(
- IN PHHIVE Hive,
- IN PCM_KEY_VALUE Value,
- IN PULONG Length,
- OUT PVOID *Buffer,
- OUT PBOOLEAN BufferAllocated,
- 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 PCM_SYSTEM_CONTROL_VECTOR ControlVector
);
-
//
// Hardware Configuration Routines
//
ULONG
NTAPI
-CmCountOpenSubKeys(
+CmpEnumerateOpenSubKeys(
IN PCM_KEY_CONTROL_BLOCK RootKcb,
- IN BOOLEAN RemoveEmptyCacheEntries
+ IN BOOLEAN RemoveEmptyCacheEntries,
+ IN BOOLEAN DereferenceOpenedEntries
);
HCELL_INDEX
IN ULONG Flags
);
+NTSTATUS
+NTAPI
+CmSaveMergedKeys(
+ IN PCM_KEY_CONTROL_BLOCK HighKcb,
+ IN PCM_KEY_CONTROL_BLOCK LowKcb,
+ IN HANDLE FileHandle
+);
+
//
// Startup and Shutdown
//
extern BOOLEAN CmpFlushOnLockRelease;
extern BOOLEAN CmpShareSystemHives;
extern BOOLEAN CmpMiniNTBoot;
+extern BOOLEAN CmpNoVolatileCreates;
extern EX_PUSH_LOCK CmpHiveListHeadLock, CmpLoadHiveLock;
extern LIST_ENTRY CmpHiveListHead;
extern POBJECT_TYPE CmpKeyObjectType;