diff --git a/FileSystems/ApfsDriverLoader/ApfsDriverLoader.c b/FileSystems/ApfsDriverLoader/ApfsDriverLoader.c index 9b82abf50..2b17757f0 100644 --- a/FileSystems/ApfsDriverLoader/ApfsDriverLoader.c +++ b/FileSystems/ApfsDriverLoader/ApfsDriverLoader.c @@ -17,26 +17,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ //#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #define APPLE_SUPPORT_VERSION L"2.0.9" #include "ApfsDriverLoader.h" @@ -56,11 +36,13 @@ ApfsBlockChecksumCalculate ( UINT64 Check1 = 0; UINT64 Sum2 = 0; UINT64 Check2 = 0; - CONST UINT64 ModValue = 0xFFFFFFFF; + CONST UINT64 ModValue = 0xFFFFFFFFull; for (Index = 0; Index < DataSize / sizeof (UINT32); Index++) { - Sum1 = ((Sum1 + (UINT64)Data[Index]) % ModValue); - Sum2 = (Sum2 + Sum1) % ModValue; +// Sum1 = ((Sum1 + (UINT64)Data[Index]) % ModValue); +// Sum2 = (Sum2 + Sum1) % ModValue; + Sum1 += (UINT64)*Data++; + Sum2 += Sum1; } Check1 = ModValue - ((Sum1 + Sum2) % ModValue); @@ -811,7 +793,7 @@ ApfsDriverLoaderStart ( // // Free ApfsBlock and allocate one of a correct size. - // ContainerSuperBlock & EfiBootRecordBlockPtr will not valid now + // ContainerSuperBlock (& EfiBootRecordBlockPtr ?) will not valid now // FreePool (ApfsBlock); ApfsBlock = AllocateZeroPool (ApfsBlockSize); @@ -849,6 +831,7 @@ ApfsDriverLoaderStart ( // ContainerSuperBlock = (APFS_CSB *)ApfsBlock; CopyMem (&ContainerUuid, &ContainerSuperBlock->Uuid, sizeof (EFI_GUID)); + EfiBootRecordBlockPtr = ContainerSuperBlock->EfiBootRecordBlock; // // Calculate Offset of EfiBootRecordBlock diff --git a/FileSystems/ApfsDriverLoader/ApfsDriverLoader.h b/FileSystems/ApfsDriverLoader/ApfsDriverLoader.h index ff7d55851..743e623d5 100644 --- a/FileSystems/ApfsDriverLoader/ApfsDriverLoader.h +++ b/FileSystems/ApfsDriverLoader/ApfsDriverLoader.h @@ -19,6 +19,28 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #ifndef APFS_DRIVER_LOADER_H_ #define APFS_DRIVER_LOADER_H_ +#include +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + #define APFS_DRIVER_INFO_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('A', 'F', 'J', 'S') //