diff --git a/reactos/boot/freeldr/freeldr/reactos/binhive.c b/reactos/boot/freeldr/freeldr/reactos/binhive.c index ac244eb1b62..f251d9723db 100644 --- a/reactos/boot/freeldr/freeldr/reactos/binhive.c +++ b/reactos/boot/freeldr/freeldr/reactos/binhive.c @@ -787,8 +787,8 @@ CmiWriteHive(PHHIVE Hive, { Bin = (PHBIN)Hive->Storage[HvStable].BlockList[i].Bin; memcpy (ChunkBase + (i + 1) * HV_BLOCK_SIZE, - Bin, Bin->BinSize); - Size += Bin->BinSize; + Bin, Bin->Size); + Size += Bin->Size; } } diff --git a/reactos/lib/cmlib/cmdata.h b/reactos/lib/cmlib/cmdata.h index ea7a96896f0..04b949f2304 100644 --- a/reactos/lib/cmlib/cmdata.h +++ b/reactos/lib/cmlib/cmdata.h @@ -133,16 +133,17 @@ typedef struct _CM_KEY_VALUE #define REG_DATA_SIZE_MASK 0x7FFFFFFF #define REG_DATA_IN_OFFSET 0x80000000 -typedef struct _SECURITY_CELL +typedef struct _CM_KEY_SECURITY { - USHORT Id; // "sk" - USHORT Reserved; - HCELL_INDEX PrevSecurityCell; - HCELL_INDEX NextSecurityCell; - ULONG RefCount; - ULONG SdSize; - UCHAR Data[0]; -} SECURITY_CELL, *PSECURITY_CELL; + USHORT Signature; // "sk" + USHORT Reserved; + HCELL_INDEX Flink; + HCELL_INDEX Blink; + ULONG ReferenceCount; + ULONG DescriptorLength; + //SECURITY_DESCRIPTOR_RELATIVE Descriptor; + UCHAR Data[0]; +} CM_KEY_SECURITY, *PCM_KEY_SECURITY; #include diff --git a/reactos/lib/cmlib/hivebin.c b/reactos/lib/cmlib/hivebin.c index 2394e71ee2c..d650975c32b 100644 --- a/reactos/lib/cmlib/hivebin.c +++ b/reactos/lib/cmlib/hivebin.c @@ -32,9 +32,9 @@ HvpAddBin( RtlZeroMemory(Bin, sizeof(HBIN)); Bin->Signature = HV_BIN_SIGNATURE; - Bin->BinOffset = RegistryHive->Storage[Storage].Length * + Bin->FileOffset = RegistryHive->Storage[Storage].Length * HV_BLOCK_SIZE; - Bin->BinSize = BinSize; + Bin->Size = BinSize; /* Allocate new block list */ OldBlockListSize = RegistryHive->Storage[Storage].Length; @@ -90,7 +90,7 @@ HvpAddBin( /* Mark new bin dirty. */ RtlSetBits(&RegistryHive->DirtyVector, - Bin->BinOffset / HV_BLOCK_SIZE, + Bin->FileOffset / HV_BLOCK_SIZE, BlockCount); } diff --git a/reactos/lib/cmlib/hivecell.c b/reactos/lib/cmlib/hivecell.c index 1ee2329eb9e..a00eca1f766 100644 --- a/reactos/lib/cmlib/hivecell.c +++ b/reactos/lib/cmlib/hivecell.c @@ -242,12 +242,12 @@ HvpCreateHiveFreeCellList( /* Search free blocks and add to list */ FreeOffset = sizeof(HBIN); - while (FreeOffset < Bin->BinSize) + while (FreeOffset < Bin->Size) { FreeBlock = (PCELL_HEADER)((ULONG_PTR)Bin + FreeOffset); if (FreeBlock->CellSize > 0) { - Status = HvpAddFree(Hive, FreeBlock, Bin->BinOffset + FreeOffset); + Status = HvpAddFree(Hive, FreeBlock, Bin->FileOffset + FreeOffset); if (!NT_SUCCESS(Status)) return Status; @@ -259,8 +259,8 @@ HvpCreateHiveFreeCellList( } } - BlockIndex += Bin->BinSize / HV_BLOCK_SIZE; - BlockOffset += Bin->BinSize; + BlockIndex += Bin->Size / HV_BLOCK_SIZE; + BlockOffset += Bin->Size; } return STATUS_SUCCESS; @@ -291,7 +291,7 @@ HvAllocateCell( Bin = HvpAddBin(RegistryHive, Size, Storage); if (Bin == NULL) return HCELL_NULL; - FreeCellOffset = Bin->BinOffset + sizeof(HBIN); + FreeCellOffset = Bin->FileOffset + sizeof(HBIN); FreeCellOffset |= Storage << HCELL_TYPE_SHIFT; } @@ -387,14 +387,14 @@ HvFreeCell( Bin = (PHBIN)RegistryHive->Storage[CellType].BlockList[CellBlock].Bin; if ((CellIndex & ~HCELL_TYPE_MASK) + Free->CellSize < - Bin->BinOffset + Bin->BinSize) + Bin->FileOffset + Bin->Size) { Neighbor = (PCELL_HEADER)((ULONG_PTR)Free + Free->CellSize); if (Neighbor->CellSize > 0) { HvpRemoveFree(RegistryHive, Neighbor, ((HCELL_INDEX)Neighbor - (HCELL_INDEX)Bin + - Bin->BinOffset) | (CellIndex & HCELL_TYPE_MASK)); + Bin->FileOffset) | (CellIndex & HCELL_TYPE_MASK)); Free->CellSize += Neighbor->CellSize; } } @@ -410,7 +410,7 @@ HvFreeCell( if (CellType == HvStable) HvMarkCellDirty(RegistryHive, (HCELL_INDEX)Neighbor - (HCELL_INDEX)Bin + - Bin->BinOffset); + Bin->FileOffset); return; } Neighbor = (PCELL_HEADER)((ULONG_PTR)Neighbor + Neighbor->CellSize); diff --git a/reactos/lib/cmlib/hivedata.h b/reactos/lib/cmlib/hivedata.h index e8f0f4d19e4..9b2a52bb2d4 100644 --- a/reactos/lib/cmlib/hivedata.h +++ b/reactos/lib/cmlib/hivedata.h @@ -99,21 +99,21 @@ typedef struct _HBASE_BLOCK ULONG BootRecover; } HBASE_BLOCK, *PHBASE_BLOCK; -typedef struct _BIN_HEADER +typedef struct _HBIN { /* Bin identifier "hbin" (0x6E696268) */ ULONG Signature; /* Block offset of this bin */ - HCELL_INDEX BinOffset; + HCELL_INDEX FileOffset; /* Size in bytes, multiple of the block size (4KB) */ - ULONG BinSize; + ULONG Size; - ULONG Reserved[2]; + ULONG Reserved1[2]; /* When this bin was last modified */ - LARGE_INTEGER DateModified; + LARGE_INTEGER TimeStamp; /* ? (In-memory only) */ ULONG MemAlloc; diff --git a/reactos/lib/cmlib/hiveinit.c b/reactos/lib/cmlib/hiveinit.c index 55a7f5dbc90..9d8b3c8e2c3 100644 --- a/reactos/lib/cmlib/hiveinit.c +++ b/reactos/lib/cmlib/hiveinit.c @@ -181,14 +181,14 @@ HvpInitializeMemoryHive( { Bin = (PHBIN)((ULONG_PTR)ChunkBase + (BlockIndex + 1) * HV_BLOCK_SIZE); if (Bin->Signature != HV_BIN_SIGNATURE || - (Bin->BinSize % HV_BLOCK_SIZE) != 0) + (Bin->Size % HV_BLOCK_SIZE) != 0) { Hive->Free(Hive->HiveHeader); Hive->Free(Hive->Storage[HvStable].BlockList); return STATUS_REGISTRY_CORRUPT; } - NewBin = Hive->Allocate(Bin->BinSize, TRUE); + NewBin = Hive->Allocate(Bin->Size, TRUE); if (NewBin == NULL) { Hive->Free(Hive->HiveHeader); @@ -199,11 +199,11 @@ HvpInitializeMemoryHive( Hive->Storage[HvStable].BlockList[BlockIndex].Bin = (ULONG_PTR)NewBin; Hive->Storage[HvStable].BlockList[BlockIndex].Block = (ULONG_PTR)NewBin; - RtlCopyMemory(NewBin, Bin, Bin->BinSize); + RtlCopyMemory(NewBin, Bin, Bin->Size); - if (Bin->BinSize > HV_BLOCK_SIZE) + if (Bin->Size > HV_BLOCK_SIZE) { - for (i = 1; i < Bin->BinSize / HV_BLOCK_SIZE; i++) + for (i = 1; i < Bin->Size / HV_BLOCK_SIZE; i++) { Hive->Storage[HvStable].BlockList[BlockIndex + i].Bin = (ULONG_PTR)NewBin; Hive->Storage[HvStable].BlockList[BlockIndex + i].Block = @@ -211,7 +211,7 @@ HvpInitializeMemoryHive( } } - BlockIndex += Bin->BinSize / HV_BLOCK_SIZE; + BlockIndex += Bin->Size / HV_BLOCK_SIZE; } if (HvpCreateHiveFreeCellList(Hive)) diff --git a/reactos/ntoskrnl/cm/cm.h b/reactos/ntoskrnl/cm/cm.h index e52b652faf8..b28d326639e 100644 --- a/reactos/ntoskrnl/cm/cm.h +++ b/reactos/ntoskrnl/cm/cm.h @@ -43,7 +43,7 @@ typedef struct _EREGISTRY_HIVE PHHIVE Hive; UNICODE_STRING HiveFileName; UNICODE_STRING LogFileName; - PSECURITY_CELL RootSecurityCell; + PCM_KEY_SECURITY RootSecurityCell; ULONG Flags; HANDLE HiveHandle; HANDLE LogHandle; diff --git a/reactos/ntoskrnl/cm/registry.c b/reactos/ntoskrnl/cm/registry.c index f211df0b294..5d1d868b83d 100644 --- a/reactos/ntoskrnl/cm/registry.c +++ b/reactos/ntoskrnl/cm/registry.c @@ -164,7 +164,7 @@ CmInitializeRegistry(VOID) UNICODE_STRING KeyName; PKEY_OBJECT RootKey; #if 0 - PSECURITY_CELL RootSecurityCell; + PCM_KEY_SECURITY RootSecurityCell; #endif HANDLE RootKeyHandle; HANDLE KeyHandle;