Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 286 of file hiveinit.c.
Referenced by HvLoadHive().
{ PHBASE_BLOCK BaseBlock; ULONG Alignment; ULONG Result; ULONG Offset = 0; ASSERT(sizeof(HBASE_BLOCK) >= (HV_BLOCK_SIZE * Hive->Cluster)); /* Assume failure and allocate the buffer */ *HiveBaseBlock = 0; BaseBlock = Hive->Allocate(sizeof(HBASE_BLOCK), TRUE, TAG_CM); if (!BaseBlock) return NoMemory; /* Check for, and enforce, alignment */ Alignment = Hive->Cluster * HV_BLOCK_SIZE -1; if ((ULONG_PTR)BaseBlock & Alignment) { /* Free the old header */ Hive->Free(BaseBlock, 0); BaseBlock = Hive->Allocate(PAGE_SIZE, TRUE, TAG_CM); if (!BaseBlock) return NoMemory; //BaseBlock->Length = PAGE_SIZE; ?? } /* Clear it */ RtlZeroMemory(BaseBlock, sizeof(HBASE_BLOCK)); /* Now read it from disk */ Result = Hive->FileRead(Hive, HFILE_TYPE_PRIMARY, &Offset, BaseBlock, Hive->Cluster * HV_BLOCK_SIZE); /* Couldn't read: assume it's not a hive */ if (!Result) return NotHive; /* Do validation */ if (!HvpVerifyHiveHeader(BaseBlock)) return NotHive; /* Return information */ *HiveBaseBlock = BaseBlock; *TimeStamp = BaseBlock->TimeStamp; return HiveSuccess; }