Author: ion
Date: Tue Jan 5 01:51:54 2016
New Revision: 70489
URL:
http://svn.reactos.org/svn/reactos?rev=70489&view=rev
Log:
[CMLIB]: Move Value functions to CMLIB as well, so that they can be shared with the new
boot code.
Added:
trunk/reactos/lib/cmlib/cmvalue.c
- copied, changed from r70480, trunk/reactos/ntoskrnl/config/cmvalue.c
Removed:
trunk/reactos/ntoskrnl/config/cmvalue.c
Modified:
trunk/reactos/boot/environ/app/bootmgr/rtlcompat.c
trunk/reactos/lib/cmlib/CMakeLists.txt
trunk/reactos/lib/cmlib/cmdata.h
trunk/reactos/lib/cmlib/cmlib.h
trunk/reactos/ntoskrnl/config/cmapi.c
trunk/reactos/ntoskrnl/include/internal/cm_x.h
trunk/reactos/ntoskrnl/ntos.cmake
Modified: trunk/reactos/boot/environ/app/bootmgr/rtlcompat.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/environ/app/bootmgr/r…
==============================================================================
--- trunk/reactos/boot/environ/app/bootmgr/rtlcompat.c [iso-8859-1] (original)
+++ trunk/reactos/boot/environ/app/bootmgr/rtlcompat.c [iso-8859-1] Tue Jan 5 01:51:54
2016
@@ -75,3 +75,15 @@
{
return 0;
}
+
+VOID
+NTAPI
+KeBugCheckEx(
+ _In_ ULONG BugCheckCode,
+ _In_ ULONG_PTR BugCheckParameter1,
+ _In_ ULONG_PTR BugCheckParameter2,
+ _In_ ULONG_PTR BugCheckParameter3,
+ _In_ ULONG_PTR BugCheckParameter4)
+{
+ __assume(0);
+}
Modified: trunk/reactos/lib/cmlib/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/CMakeLists.txt?r…
==============================================================================
--- trunk/reactos/lib/cmlib/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/CMakeLists.txt [iso-8859-1] Tue Jan 5 01:51:54 2016
@@ -9,6 +9,7 @@
cmindex.c
cmname.c
cmtools.c
+ cmvalue.c
hivebin.c
hivecell.c
hiveinit.c
Modified: trunk/reactos/lib/cmlib/cmdata.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/cmdata.h?rev=704…
==============================================================================
--- trunk/reactos/lib/cmlib/cmdata.h [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/cmdata.h [iso-8859-1] Tue Jan 5 01:51:54 2016
@@ -47,6 +47,13 @@
// CM_KEY_VALUE Flags
//
#define VALUE_COMP_NAME 0x0001
+
+//
+// CM_KEY_VALUE Types
+//
+#define CM_KEY_VALUE_SMALL 0x4
+#define CM_KEY_VALUE_BIG 0x3FD8
+#define CM_KEY_VALUE_SPECIAL_SIZE 0x80000000
#include <pshpack1.h>
Modified: trunk/reactos/lib/cmlib/cmlib.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/cmlib.h?rev=7048…
==============================================================================
--- trunk/reactos/lib/cmlib/cmlib.h [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/cmlib.h [iso-8859-1] Tue Jan 5 01:51:54 2016
@@ -160,6 +160,7 @@
#include <wchar.h>
#include "hivedata.h"
#include "cmdata.h"
+#include "bugcodes.h"
#if defined(_TYPEDEFS_HOST_H) || defined(__FREELDR_H)
@@ -253,6 +254,56 @@
extern ULONG CmlibTraceLevel;
+//
+// Hack since bigkeys are not yet supported
+//
+#define ASSERT_VALUE_BIG(h, s) \
+ ASSERTMSG("Big keys not supported!", !CmpIsKeyValueBig(h, s));
+
+//
+// Returns whether or not this is a small valued key
+//
+static inline
+BOOLEAN
+CmpIsKeyValueSmall(OUT PULONG RealLength,
+ IN ULONG Length)
+{
+ /* Check if the length has the special size value */
+ if (Length >= CM_KEY_VALUE_SPECIAL_SIZE)
+ {
+ /* It does, so this is a small key: return the real length */
+ *RealLength = Length - CM_KEY_VALUE_SPECIAL_SIZE;
+ return TRUE;
+ }
+
+ /* This is not a small key, return the length we read */
+ *RealLength = Length;
+ return FALSE;
+}
+
+//
+// Returns whether or not this is a big valued key
+//
+static inline
+BOOLEAN
+CmpIsKeyValueBig(IN PHHIVE Hive,
+ IN ULONG Length)
+{
+ /* Check if the hive is XP Beta 1 or newer */
+ if (Hive->Version >= HSYS_WHISTLER_BETA1)
+ {
+ /* Check if the key length is valid for a big value key */
+ if ((Length < CM_KEY_VALUE_SPECIAL_SIZE) && (Length >
CM_KEY_VALUE_BIG))
+ {
+ /* Yes, this value is big */
+ return TRUE;
+ }
+ }
+
+ /* Not a big value key */
+ return FALSE;
+}
+
/*
* Public Hive functions.
*/
Copied: trunk/reactos/lib/cmlib/cmvalue.c (from r70480,
trunk/reactos/ntoskrnl/config/cmvalue.c)
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/cmlib/cmvalue.c?p2=tru…
==============================================================================
--- trunk/reactos/ntoskrnl/config/cmvalue.c [iso-8859-1] (original)
+++ trunk/reactos/lib/cmlib/cmvalue.c [iso-8859-1] Tue Jan 5 01:51:54 2016
@@ -1,16 +1,16 @@
/*
* PROJECT: ReactOS Kernel
* LICENSE: GPL - See COPYING in the top level directory
- * FILE: ntoskrnl/config/cmvalue.c
- * PURPOSE: Configuration Manager - Cell Values
+ * FILE: lib/cmlib/cmvalue.c
+ * PURPOSE: Configuration Manager Library - Cell Values
* PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org)
*/
/* INCLUDES ******************************************************************/
-#include "ntoskrnl.h"
+#include "cmlib.h"
#define NDEBUG
-#include "debug.h"
+#include <debug.h>
/* FUNCTIONS *****************************************************************/
@@ -362,6 +362,46 @@
return STATUS_SUCCESS;
}
+HCELL_INDEX
+NTAPI
+CmpCopyCell(IN PHHIVE SourceHive,
+ IN HCELL_INDEX SourceCell,
+ IN PHHIVE DestinationHive,
+ IN HSTORAGE_TYPE StorageType)
+{
+ PCELL_DATA SourceData;
+ PCELL_DATA DestinationData = NULL;
+ HCELL_INDEX DestinationCell = HCELL_NIL;
+ LONG DataSize;
+ PAGED_CODE();
+
+ /* Get the data and the size of the source cell */
+ SourceData = HvGetCell(SourceHive, SourceCell);
+ DataSize = HvGetCellSize(SourceHive, SourceData);
+
+ /* Allocate a new cell in the destination hive */
+ DestinationCell = HvAllocateCell(DestinationHive,
+ DataSize,
+ StorageType,
+ HCELL_NIL);
+ if (DestinationCell == HCELL_NIL) goto Cleanup;
+
+ /* Get the data of the destination cell */
+ DestinationData = HvGetCell(DestinationHive, DestinationCell);
+
+ /* Copy the data from the source cell to the destination cell */
+ RtlMoveMemory(DestinationData, SourceData, DataSize);
+
+Cleanup:
+
+ /* Release the cells */
+ if (SourceData) HvReleaseCell(SourceHive, SourceCell);
+ if (DestinationData) HvReleaseCell(DestinationHive, DestinationCell);
+
+ /* Return the destination cell index */
+ return DestinationCell;
+}
+
NTSTATUS
NTAPI
CmpCopyKeyValueList(IN PHHIVE SourceHive,
Modified: trunk/reactos/ntoskrnl/config/cmapi.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/config/cmapi.c?re…
==============================================================================
--- trunk/reactos/ntoskrnl/config/cmapi.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/config/cmapi.c [iso-8859-1] Tue Jan 5 01:51:54 2016
@@ -2345,46 +2345,6 @@
return SubKeys;
}
-HCELL_INDEX
-NTAPI
-CmpCopyCell(IN PHHIVE SourceHive,
- IN HCELL_INDEX SourceCell,
- IN PHHIVE DestinationHive,
- IN HSTORAGE_TYPE StorageType)
-{
- PCELL_DATA SourceData;
- PCELL_DATA DestinationData = NULL;
- HCELL_INDEX DestinationCell = HCELL_NIL;
- LONG DataSize;
- PAGED_CODE();
-
- /* Get the data and the size of the source cell */
- SourceData = HvGetCell(SourceHive, SourceCell);
- DataSize = HvGetCellSize(SourceHive, SourceData);
-
- /* Allocate a new cell in the destination hive */
- DestinationCell = HvAllocateCell(DestinationHive,
- DataSize,
- StorageType,
- HCELL_NIL);
- if (DestinationCell == HCELL_NIL) goto Cleanup;
-
- /* Get the data of the destination cell */
- DestinationData = HvGetCell(DestinationHive, DestinationCell);
-
- /* Copy the data from the source cell to the destination cell */
- RtlMoveMemory(DestinationData, SourceData, DataSize);
-
-Cleanup:
-
- /* Release the cells */
- if (SourceData) HvReleaseCell(SourceHive, SourceCell);
- if (DestinationData) HvReleaseCell(DestinationHive, DestinationCell);
-
- /* Return the destination cell index */
- return DestinationCell;
-}
-
static
NTSTATUS
NTAPI
Removed: trunk/reactos/ntoskrnl/config/cmvalue.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/config/cmvalue.c?…
==============================================================================
--- trunk/reactos/ntoskrnl/config/cmvalue.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/config/cmvalue.c (removed)
@@ -1,422 +0,0 @@
-/*
- * PROJECT: ReactOS Kernel
- * LICENSE: GPL - See COPYING in the top level directory
- * FILE: ntoskrnl/config/cmvalue.c
- * PURPOSE: Configuration Manager - Cell Values
- * PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org)
- */
-
-/* INCLUDES ******************************************************************/
-
-#include "ntoskrnl.h"
-#define NDEBUG
-#include "debug.h"
-
-/* FUNCTIONS *****************************************************************/
-
-BOOLEAN
-NTAPI
-CmpMarkValueDataDirty(IN PHHIVE Hive,
- IN PCM_KEY_VALUE Value)
-{
- ULONG KeySize;
- PAGED_CODE();
-
- /* Make sure there's actually any data */
- if (Value->Data != HCELL_NIL)
- {
- /* If this is a small key, there's no need to have it dirty */
- if (CmpIsKeyValueSmall(&KeySize, Value->DataLength)) return TRUE;
-
- /* Check if this is a big key */
- ASSERT_VALUE_BIG(Hive, KeySize);
-
- /* Normal value, just mark it dirty */
- HvMarkCellDirty(Hive, Value->Data, FALSE);
- }
-
- /* Operation complete */
- return TRUE;
-}
-
-BOOLEAN
-NTAPI
-CmpFreeValueData(IN PHHIVE Hive,
- IN HCELL_INDEX DataCell,
- IN ULONG DataLength)
-{
- ULONG KeySize;
- PAGED_CODE();
-
- /* If this is a small key, the data is built-in */
- if (!CmpIsKeyValueSmall(&KeySize, DataLength))
- {
- /* If there's no data cell, there's nothing to do */
- if (DataCell == HCELL_NIL) return TRUE;
-
- /* Make sure the data cell is allocated */
- //ASSERT(HvIsCellAllocated(Hive, DataCell));
-
- /* Unsupported value type */
- ASSERT_VALUE_BIG(Hive, KeySize);
-
- /* Normal value, just free the data cell */
- HvFreeCell(Hive, DataCell);
- }
-
- /* Operation complete */
- return TRUE;
-}
-
-BOOLEAN
-NTAPI
-CmpFreeValue(IN PHHIVE Hive,
- IN HCELL_INDEX Cell)
-{
- PCM_KEY_VALUE Value;
- PAGED_CODE();
-
- /* Get the cell data */
- Value = (PCM_KEY_VALUE)HvGetCell(Hive, Cell);
- if (!Value) ASSERT(FALSE);
-
- /* Free it */
- if (!CmpFreeValueData(Hive, Value->Data, Value->DataLength))
- {
- /* We failed to free the data, return failure */
- HvReleaseCell(Hive, Cell);
- return FALSE;
- }
-
- /* Release the cell and free it */
- HvReleaseCell(Hive, Cell);
- HvFreeCell(Hive, Cell);
- return TRUE;
-}
-
-HCELL_INDEX
-NTAPI
-CmpFindValueByName(IN PHHIVE Hive,
- IN PCM_KEY_NODE KeyNode,
- IN PUNICODE_STRING Name)
-{
- HCELL_INDEX CellIndex;
-
- /* Call the main function */
- if (!CmpFindNameInList(Hive,
- &KeyNode->ValueList,
- Name,
- NULL,
- &CellIndex))
- {
- /* Santy check */
- ASSERT(CellIndex == HCELL_NIL);
- }
-
- /* Return the index */
- return CellIndex;
-}
-
-BOOLEAN
-NTAPI
-CmpGetValueData(IN PHHIVE Hive,
- IN PCM_KEY_VALUE Value,
- IN PULONG Length,
- OUT PVOID *Buffer,
- OUT PBOOLEAN BufferAllocated,
- OUT PHCELL_INDEX CellToRelease)
-{
- PAGED_CODE();
-
- /* Sanity check */
- ASSERT(Value->Signature == CM_KEY_VALUE_SIGNATURE);
-
- /* Set failure defaults */
- *BufferAllocated = FALSE;
- *Buffer = NULL;
- *CellToRelease = HCELL_NIL;
-
- /* Check if this is a small key */
- if (CmpIsKeyValueSmall(Length, Value->DataLength))
- {
- /* Return the data immediately */
- *Buffer = &Value->Data;
- return TRUE;
- }
-
- /* Unsupported */
- ASSERT_VALUE_BIG(Hive, *Length);
-
- /* Get the data from the cell */
- *Buffer = HvGetCell(Hive, Value->Data);
- if (!(*Buffer)) return FALSE;
-
- /* Return success and the cell to be released */
- *CellToRelease = Value->Data;
- return TRUE;
-}
-
-PCELL_DATA
-NTAPI
-CmpValueToData(IN PHHIVE Hive,
- IN PCM_KEY_VALUE Value,
- OUT PULONG Length)
-{
- PCELL_DATA Buffer;
- BOOLEAN BufferAllocated;
- HCELL_INDEX CellToRelease;
- PAGED_CODE();
-
- /* Sanity check */
- ASSERT(Hive->ReleaseCellRoutine == NULL);
-
- /* Get the actual data */
- if (!CmpGetValueData(Hive,
- Value,
- Length,
- (PVOID)&Buffer,
- &BufferAllocated,
- &CellToRelease))
- {
- /* We failed */
- ASSERT(BufferAllocated == FALSE);
- ASSERT(Buffer == NULL);
- return NULL;
- }
-
- /* This should never happen!*/
- if (BufferAllocated)
- {
- /* Free the buffer and bugcheck */
- CmpFree(Buffer, 0);
- KeBugCheckEx(REGISTRY_ERROR, 8, 0, (ULONG_PTR)Hive, (ULONG_PTR)Value);
- }
-
- /* Otherwise, return the cell data */
- return Buffer;
-}
-
-NTSTATUS
-NTAPI
-CmpAddValueToList(IN PHHIVE Hive,
- IN HCELL_INDEX ValueCell,
- IN ULONG Index,
- IN ULONG Type,
- IN OUT PCHILD_LIST ChildList)
-{
- HCELL_INDEX ListCell;
- ULONG ChildCount, Length, i;
- PCELL_DATA CellData;
- PAGED_CODE();
-
- /* Sanity check */
- ASSERT((((LONG)Index) >= 0) && (Index <= ChildList->Count));
-
- /* Get the number of entries in the child list */
- ChildCount = ChildList->Count;
- ChildCount++;
- if (ChildCount > 1)
- {
- /* The cell should be dirty at this point */
- ASSERT(HvIsCellDirty(Hive, ChildList->List));
-
- /* Check if we have less then 100 children */
- if (ChildCount < 100)
- {
- /* Allocate just enough as requested */
- Length = ChildCount * sizeof(HCELL_INDEX);
- }
- else
- {
- /* Otherwise, we have quite a few, so allocate a batch */
- Length = ROUND_UP(ChildCount, 100) * sizeof(HCELL_INDEX);
- if (Length > HBLOCK_SIZE)
- {
- /* But make sure we don't allocate beyond our block size */
- Length = ROUND_UP(Length, HBLOCK_SIZE);
- }
- }
-
- /* Perform the allocation */
- ListCell = HvReallocateCell(Hive, ChildList->List, Length);
- }
- else
- {
- /* This is our first child, so allocate a single cell */
- ListCell = HvAllocateCell(Hive, sizeof(HCELL_INDEX), Type, HCELL_NIL);
- }
-
- /* Fail if we couldn't get a cell */
- if (ListCell == HCELL_NIL) return STATUS_INSUFFICIENT_RESOURCES;
-
- /* Set this cell as the child list's list cell */
- ChildList->List = ListCell;
-
- /* Get the actual key list memory */
- CellData = HvGetCell(Hive, ListCell);
- ASSERT(CellData != NULL);
-
- /* Loop all the children */
- for (i = ChildCount - 1; i > Index; i--)
- {
- /* Move them all down */
- CellData->u.KeyList[i] = CellData->u.KeyList[i - 1];
- }
-
- /* Insert us on top now */
- CellData->u.KeyList[Index] = ValueCell;
- ChildList->Count = ChildCount;
-
- /* Release the list cell and make sure the value cell is dirty */
- HvReleaseCell(Hive, ListCell);
- ASSERT(HvIsCellDirty(Hive, ValueCell));
-
- /* We're done here */
- return STATUS_SUCCESS;
-}
-
-NTSTATUS
-NTAPI
-CmpSetValueDataNew(IN PHHIVE Hive,
- IN PVOID Data,
- IN ULONG DataSize,
- IN ULONG StorageType,
- IN HCELL_INDEX ValueCell,
- OUT PHCELL_INDEX DataCell)
-{
- PCELL_DATA CellData;
- PAGED_CODE();
- ASSERT(DataSize > CM_KEY_VALUE_SMALL);
-
- /* Check if this is a big key */
- ASSERT_VALUE_BIG(Hive, DataSize);
-
- /* Allocate a data cell */
- *DataCell = HvAllocateCell(Hive, DataSize, StorageType, HCELL_NIL);
- if (*DataCell == HCELL_NIL) return STATUS_INSUFFICIENT_RESOURCES;
-
- /* Get the actual data */
- CellData = HvGetCell(Hive, *DataCell);
- if (!CellData) ASSERT(FALSE);
-
- /* Copy our buffer into it */
- RtlCopyMemory(CellData, Data, DataSize);
-
- /* All done */
- return STATUS_SUCCESS;
-}
-
-NTSTATUS
-NTAPI
-CmpRemoveValueFromList(IN PHHIVE Hive,
- IN ULONG Index,
- IN OUT PCHILD_LIST ChildList)
-{
- ULONG Count;
- PCELL_DATA CellData;
- HCELL_INDEX NewCell;
- PAGED_CODE();
-
- /* Sanity check */
- ASSERT((((LONG)Index) >= 0) && (Index <= ChildList->Count));
-
- /* Get the new count after removal */
- Count = ChildList->Count - 1;
- if (Count > 0)
- {
- /* Get the actual list array */
- CellData = HvGetCell(Hive, ChildList->List);
- if (!CellData) return STATUS_INSUFFICIENT_RESOURCES;
-
- /* Make sure cells data have been made dirty */
- ASSERT(HvIsCellDirty(Hive, ChildList->List));
- ASSERT(HvIsCellDirty(Hive, CellData->u.KeyList[Index]));
-
- /* Loop the list */
- while (Index < Count)
- {
- /* Move everything up */
- CellData->u.KeyList[Index] = CellData->u.KeyList[Index + 1];
- Index++;
- }
-
- /* Re-allocate the cell for the list by decreasing the count */
- NewCell = HvReallocateCell(Hive,
- ChildList->List,
- Count * sizeof(HCELL_INDEX));
- ASSERT(NewCell != HCELL_NIL);
- HvReleaseCell(Hive,ChildList->List);
-
- /* Update the list cell */
- ChildList->List = NewCell;
- }
- else
- {
- /* Otherwise, we were the last entry, so free the list entirely */
- HvFreeCell(Hive, ChildList->List);
- ChildList->List = HCELL_NIL;
- }
-
- /* Update the child list with the new count */
- ChildList->Count = Count;
- return STATUS_SUCCESS;
-}
-
-NTSTATUS
-NTAPI
-CmpCopyKeyValueList(IN PHHIVE SourceHive,
- IN PCHILD_LIST SrcValueList,
- IN PHHIVE DestinationHive,
- IN OUT PCHILD_LIST DestValueList,
- IN HSTORAGE_TYPE StorageType)
-
-{
- NTSTATUS Status = STATUS_SUCCESS;
- HCELL_INDEX CellIndex = HCELL_NIL;
- ULONG Index;
- PCELL_DATA SrcListData = NULL;
- PCELL_DATA DestListData = NULL;
-
- PAGED_CODE();
-
- /* Set the count */
- DestValueList->Count = SrcValueList->Count;
-
- /* Check if the list is empty */
- if (!DestValueList->Count)
- {
- DestValueList->List = HCELL_NIL;
- return STATUS_SUCCESS;
- }
-
- /* Create a simple copy of the list */
- CellIndex = CmpCopyCell(SourceHive,
- SrcValueList->List,
- DestinationHive,
- StorageType);
- if (CellIndex == HCELL_NIL) return STATUS_INSUFFICIENT_RESOURCES;
-
- /* Get the source and the destination value list */
- SrcListData = HvGetCell(SourceHive, SrcValueList->List);
- DestListData = HvGetCell(DestinationHive, CellIndex);
-
- /* Copy the actual values */
- for (Index = 0; Index < SrcValueList->Count; Index++)
- {
- DestListData->u.KeyList[Index] = CmpCopyCell(SourceHive,
- SrcListData->u.KeyList[Index],
- DestinationHive,
- StorageType);
- if (DestListData->u.KeyList[Index] == HCELL_NIL)
- {
- Status = STATUS_INSUFFICIENT_RESOURCES;
- break;
- }
- }
-
- /* Release the cells */
- if (SrcListData) HvReleaseCell(SourceHive, SrcValueList->List);
- if (DestListData) HvReleaseCell(DestinationHive, CellIndex);
-
- return Status;
-}
Modified: trunk/reactos/ntoskrnl/include/internal/cm_x.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/cm_x.h [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/include/internal/cm_x.h [iso-8859-1] Tue Jan 5 01:51:54 2016
@@ -5,50 +5,6 @@
* PURPOSE: Inlined Functions for the Configuration Manager
* PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org)
*/
-
-//
-// Returns whether or not this is a small valued key
-//
-FORCEINLINE
-BOOLEAN
-CmpIsKeyValueSmall(OUT PULONG RealLength,
- IN ULONG Length)
-{
- /* Check if the length has the special size value */
- if (Length >= CM_KEY_VALUE_SPECIAL_SIZE)
- {
- /* It does, so this is a small key: return the real length */
- *RealLength = Length - CM_KEY_VALUE_SPECIAL_SIZE;
- return TRUE;
- }
-
- /* This is not a small key, return the length we read */
- *RealLength = Length;
- return FALSE;
-}
-
-//
-// Returns whether or not this is a big valued key
-//
-FORCEINLINE
-BOOLEAN
-CmpIsKeyValueBig(IN PHHIVE Hive,
- IN ULONG Length)
-{
- /* Check if the hive is XP Beta 1 or newer */
- if (Hive->Version >= HSYS_WHISTLER_BETA1)
- {
- /* Check if the key length is valid for a big value key */
- if ((Length < CM_KEY_VALUE_SPECIAL_SIZE) && (Length >
CM_KEY_VALUE_BIG))
- {
- /* Yes, this value is big */
- return TRUE;
- }
- }
-
- /* Not a big value key */
- return FALSE;
-}
//
// Returns the hashkey corresponding to a convkey
Modified: trunk/reactos/ntoskrnl/ntos.cmake
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntos.cmake?rev=70…
==============================================================================
--- trunk/reactos/ntoskrnl/ntos.cmake [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ntos.cmake [iso-8859-1] Tue Jan 5 01:51:54 2016
@@ -68,7 +68,6 @@
${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmsecach.c
${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmsysini.c
${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmvalche.c
- ${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmvalue.c
${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmwraprs.c
${REACTOS_SOURCE_DIR}/ntoskrnl/config/ntapi.c
${REACTOS_SOURCE_DIR}/ntoskrnl/dbgk/dbgkobj.c