X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fboot%2Ffreeldr%2Ffreeldr%2Freactos%2Fbinhive.c;h=f9ea51ffa4d9c500a18291f9526f46f2ba5b77a7;hp=b3558696097a050b15e82123ca0b9d50fdcc89da;hb=ee6bd345aa8cb7b06f7a160721ffae7b22a23ccc;hpb=f0bab69a40b0e12bcb526a9a244f12af3a7a6add diff --git a/reactos/boot/freeldr/freeldr/reactos/binhive.c b/reactos/boot/freeldr/freeldr/reactos/binhive.c index b3558696097..f9ea51ffa4d 100644 --- a/reactos/boot/freeldr/freeldr/reactos/binhive.c +++ b/reactos/boot/freeldr/freeldr/reactos/binhive.c @@ -57,19 +57,20 @@ typedef struct _HIVE_HEADER ULONG UpdateCounter2; /* When this hive file was last modified */ - ULONGLONG DateModified; /* FILETIME */ + ULONGLONG DateModified; - /* Registry format version ? (1?) */ - ULONG Unused3; + /* Registry format major version (1) */ + ULONG MajorVersion; - /* Registry format version ? (3?) */ - ULONG Unused4; + /* Registry format minor version (3) + Version 3 added fast indexes, version 5 has large value optimizations */ + ULONG MinorVersion; - /* Registry format version ? (0?) */ - ULONG Unused5; + /* Registry file type (0 - Primary, 1 - Log) */ + ULONG Type; - /* Registry format version ? (1?) */ - ULONG Unused6; + /* Registry format (1 is the only defined value so far) */ + ULONG Format; /* Offset into file from the byte after the end of the base block. If the hive is volatile, this is the actual pointer to the KEY_CELL */ @@ -82,10 +83,9 @@ typedef struct _HIVE_HEADER ULONG Unused7; /* Name of hive file */ - WCHAR FileName[64]; + WCHAR FileName[48]; - /* ? */ - ULONG Unused8[83]; + ULONG Reserved[99]; /* Checksum of first 0x200 bytes */ ULONG Checksum; @@ -97,20 +97,19 @@ typedef struct _BIN_HEADER /* Bin identifier "hbin" (0x6E696268) */ ULONG HeaderId; - /* Bin offset */ + /* Block offset of this bin */ BLOCK_OFFSET BinOffset; /* Size in bytes, multiple of the block size (4KB) */ ULONG BinSize; - /* ? */ - ULONG Unused1; + ULONG Reserved[2]; /* When this bin was last modified */ - ULONGLONG DateModified; /* FILETIME */ + ULONGLONG DateModified; - /* ? */ - ULONG Unused2; + /* ? (In-memory only) */ + ULONG MemAlloc; } __attribute__((packed)) HBIN, *PHBIN; @@ -298,15 +297,14 @@ CmiCreateDefaultHiveHeader (PHIVE_HEADER Header) Header->BlockId = REG_HIVE_ID; Header->UpdateCounter1 = 0; Header->UpdateCounter2 = 0; - Header->DateModified = 0ULL; - Header->Unused3 = 1; - Header->Unused4 = 3; - Header->Unused5 = 0; - Header->Unused6 = 1; + Header->DateModified = 0; + Header->MajorVersion = 1; + Header->MinorVersion = 3; + Header->Type = 0; + Header->Format = 1; Header->Unused7 = 1; Header->RootKeyOffset = -1; Header->BlockSize = REG_BLOCK_SIZE; - Header->Unused6 = 1; Header->Checksum = 0; } @@ -717,9 +715,8 @@ CmiAddBin(PREGISTRY_HIVE RegistryHive, tmpBin->BinOffset = RegistryHive->FileSize - REG_BLOCK_SIZE; RegistryHive->FileSize += BinSize; tmpBin->BinSize = BinSize; - tmpBin->Unused1 = 0; tmpBin->DateModified = 0ULL; - tmpBin->Unused2 = 0; + tmpBin->MemAlloc = 0; /* Increase size of list of blocks */ BlockList = MmAllocateMemory (sizeof(PHBIN) * (RegistryHive->BlockListSize + BlockCount));