#define NDEBUG\r
#include <debug.h>\r
\r
-static PCELL_HEADER __inline CMAPI\r
+static PHCELL __inline CMAPI\r
HvpGetCellHeader(\r
PHHIVE RegistryHive,\r
HCELL_INDEX CellIndex)\r
PHHIVE RegistryHive,\r
PVOID Cell)\r
{\r
- return ((PCELL_HEADER)Cell - 1)->CellSize;\r
+ return ((PHCELL)Cell - 1)->Size;\r
}\r
\r
LONG CMAPI\r
PHHIVE RegistryHive,\r
PVOID Cell)\r
{\r
- PCELL_HEADER CellHeader;\r
+ PHCELL CellHeader;\r
\r
- CellHeader = (PCELL_HEADER)Cell - 1;\r
- if (CellHeader->CellSize < 0)\r
- return CellHeader->CellSize + sizeof(CELL_HEADER);\r
+ CellHeader = (PHCELL)Cell - 1;\r
+ if (CellHeader->Size < 0)\r
+ return CellHeader->Size + sizeof(HCELL);\r
else\r
- return CellHeader->CellSize - sizeof(CELL_HEADER);\r
+ return CellHeader->Size - sizeof(HCELL);\r
}\r
\r
VOID CMAPI\r
static NTSTATUS CMAPI\r
HvpAddFree(\r
PHHIVE RegistryHive,\r
- PCELL_HEADER FreeBlock,\r
+ PHCELL FreeBlock,\r
HCELL_INDEX FreeIndex)\r
{\r
PHCELL_INDEX FreeBlockData;\r
ASSERT(FreeBlock != NULL);\r
\r
Storage = (FreeIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;\r
- Index = HvpComputeFreeListIndex(FreeBlock->CellSize);\r
+ Index = HvpComputeFreeListIndex(FreeBlock->Size);\r
\r
FreeBlockData = (PHCELL_INDEX)(FreeBlock + 1);\r
*FreeBlockData = RegistryHive->Storage[Storage].FreeDisplay[Index];\r
static VOID CMAPI\r
HvpRemoveFree(\r
PHHIVE RegistryHive,\r
- PCELL_HEADER CellBlock,\r
+ PHCELL CellBlock,\r
HCELL_INDEX CellIndex)\r
{\r
PHCELL_INDEX FreeCellData;\r
ASSERT(RegistryHive->ReadOnly == FALSE);\r
\r
Storage = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;\r
- Index = HvpComputeFreeListIndex(CellBlock->CellSize);\r
+ Index = HvpComputeFreeListIndex(CellBlock->Size);\r
\r
pFreeCellOffset = &RegistryHive->Storage[Storage].FreeDisplay[Index];\r
while (*pFreeCellOffset != HCELL_NULL)\r
PHHIVE Hive)\r
{\r
HCELL_INDEX BlockOffset;\r
- PCELL_HEADER FreeBlock;\r
+ PHCELL FreeBlock;\r
ULONG BlockIndex;\r
ULONG FreeOffset;\r
PHBIN Bin;\r
FreeOffset = sizeof(HBIN);\r
while (FreeOffset < Bin->Size)\r
{\r
- FreeBlock = (PCELL_HEADER)((ULONG_PTR)Bin + FreeOffset);\r
- if (FreeBlock->CellSize > 0)\r
+ FreeBlock = (PHCELL)((ULONG_PTR)Bin + FreeOffset);\r
+ if (FreeBlock->Size > 0)\r
{\r
Status = HvpAddFree(Hive, FreeBlock, Bin->FileOffset + FreeOffset);\r
if (!NT_SUCCESS(Status))\r
return Status;\r
\r
- FreeOffset += FreeBlock->CellSize;\r
+ FreeOffset += FreeBlock->Size;\r
}\r
else\r
{\r
- FreeOffset -= FreeBlock->CellSize;\r
+ FreeOffset -= FreeBlock->Size;\r
}\r
}\r
\r
ULONG Size,\r
HV_STORAGE_TYPE Storage)\r
{\r
- PCELL_HEADER FreeCell;\r
+ PHCELL FreeCell;\r
HCELL_INDEX FreeCellOffset;\r
- PCELL_HEADER NewCell;\r
+ PHCELL NewCell;\r
PHBIN Bin;\r
\r
ASSERT(RegistryHive->ReadOnly == FALSE);\r
\r
/* Round to 16 bytes multiple. */\r
- Size = ROUND_UP(Size + sizeof(CELL_HEADER), 16);\r
+ Size = ROUND_UP(Size + sizeof(HCELL), 16);\r
\r
/* First search in free blocks. */\r
FreeCellOffset = HvpFindFree(RegistryHive, Size, Storage);\r
\r
/* Split the block in two parts */\r
/* FIXME: There is some minimal cell size that we must respect. */\r
- if (FreeCell->CellSize > Size + sizeof(HCELL_INDEX))\r
+ if (FreeCell->Size > Size + sizeof(HCELL_INDEX))\r
{\r
- NewCell = (PCELL_HEADER)((ULONG_PTR)FreeCell + Size);\r
- NewCell->CellSize = FreeCell->CellSize - Size;\r
- FreeCell->CellSize = Size;\r
+ NewCell = (PHCELL)((ULONG_PTR)FreeCell + Size);\r
+ NewCell->Size = FreeCell->Size - Size;\r
+ FreeCell->Size = Size;\r
HvpAddFree(RegistryHive, NewCell, FreeCellOffset + Size);\r
if (Storage == HvStable)\r
HvMarkCellDirty(RegistryHive, FreeCellOffset + Size);\r
\r
if (Storage == HvStable)\r
HvMarkCellDirty(RegistryHive, FreeCellOffset);\r
- FreeCell->CellSize = -FreeCell->CellSize;\r
- RtlZeroMemory(FreeCell + 1, Size - sizeof(CELL_HEADER));\r
+ FreeCell->Size = -FreeCell->Size;\r
+ RtlZeroMemory(FreeCell + 1, Size - sizeof(HCELL));\r
\r
return FreeCellOffset;\r
}\r
PHHIVE RegistryHive,\r
HCELL_INDEX CellIndex)\r
{\r
- PCELL_HEADER Free;\r
- PCELL_HEADER Neighbor;\r
+ PHCELL Free;\r
+ PHCELL Neighbor;\r
PHBIN Bin;\r
ULONG CellType;\r
ULONG CellBlock;\r
\r
Free = HvpGetCellHeader(RegistryHive, CellIndex);\r
\r
- ASSERT(Free->CellSize < 0); \r
+ ASSERT(Free->Size < 0); \r
\r
- Free->CellSize = -Free->CellSize;\r
+ Free->Size = -Free->Size;\r
\r
CellType = (CellIndex & HCELL_TYPE_MASK) >> HCELL_TYPE_SHIFT;\r
CellBlock = (CellIndex & HCELL_BLOCK_MASK) >> HCELL_BLOCK_SHIFT;\r
/* FIXME: Merge free blocks */\r
Bin = (PHBIN)RegistryHive->Storage[CellType].BlockList[CellBlock].Bin;\r
\r
- if ((CellIndex & ~HCELL_TYPE_MASK) + Free->CellSize <\r
+ if ((CellIndex & ~HCELL_TYPE_MASK) + Free->Size <\r
Bin->FileOffset + Bin->Size)\r
{\r
- Neighbor = (PCELL_HEADER)((ULONG_PTR)Free + Free->CellSize);\r
- if (Neighbor->CellSize > 0)\r
+ Neighbor = (PHCELL)((ULONG_PTR)Free + Free->Size);\r
+ if (Neighbor->Size > 0)\r
{\r
HvpRemoveFree(RegistryHive, Neighbor,\r
((HCELL_INDEX)Neighbor - (HCELL_INDEX)Bin +\r
Bin->FileOffset) | (CellIndex & HCELL_TYPE_MASK));\r
- Free->CellSize += Neighbor->CellSize;\r
+ Free->Size += Neighbor->Size;\r
}\r
}\r
\r
- Neighbor = (PCELL_HEADER)(Bin + 1);\r
+ Neighbor = (PHCELL)(Bin + 1);\r
while (Neighbor < Free)\r
{\r
- if (Neighbor->CellSize > 0)\r
+ if (Neighbor->Size > 0)\r
{\r
- if ((ULONG_PTR)Neighbor + Neighbor->CellSize == (ULONG_PTR)Free)\r
+ if ((ULONG_PTR)Neighbor + Neighbor->Size == (ULONG_PTR)Free)\r
{\r
- Neighbor->CellSize += Free->CellSize;\r
+ Neighbor->Size += Free->Size;\r
if (CellType == HvStable)\r
HvMarkCellDirty(RegistryHive,\r
(HCELL_INDEX)Neighbor - (HCELL_INDEX)Bin +\r
Bin->FileOffset);\r
return;\r
}\r
- Neighbor = (PCELL_HEADER)((ULONG_PTR)Neighbor + Neighbor->CellSize);\r
+ Neighbor = (PHCELL)((ULONG_PTR)Neighbor + Neighbor->Size);\r
}\r
else\r
{\r
- Neighbor = (PCELL_HEADER)((ULONG_PTR)Neighbor - Neighbor->CellSize);\r
+ Neighbor = (PHCELL)((ULONG_PTR)Neighbor - Neighbor->Size);\r
}\r
}\r
\r