2021-02-04 15:04:31 +01:00
|
|
|
/*
|
|
|
|
* Volumes.cpp
|
|
|
|
*
|
|
|
|
* Created on: Feb 4, 2021
|
|
|
|
* Author: jief
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "Volumes.h"
|
|
|
|
|
|
|
|
|
|
|
|
REFIT_VOLUME *SelfVolume = NULL;
|
|
|
|
VolumesArrayClass Volumes;
|
|
|
|
|
|
|
|
//REFIT_VOLUME* VolumesArrayClass::getApfsPartitionWithUUID(const XString8& ApfsContainerUUID, const XString8& APFSTargetUUID)
|
|
|
|
//{
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
2022-04-26 00:55:56 +02:00
|
|
|
REFIT_VOLUME* VolumesArrayClass::getVolumeWithApfsContainerUUIDAndFileSystemUUID(const EFI_GUID& ApfsContainerUUID, const EFI_GUID& ApfsFileSystemUUID)
|
2021-02-04 15:04:31 +01:00
|
|
|
{
|
|
|
|
for (size_t VolumeIndex = 0; VolumeIndex < Volumes.size(); VolumeIndex++) {
|
|
|
|
REFIT_VOLUME* Volume = &Volumes[VolumeIndex];
|
|
|
|
//DBG("idx=%zu name %ls uuid=%s \n", VolumeIndex2, Volume2->VolName.wc_str(), Volume2->ApfsFileSystemUUID.c_str());
|
|
|
|
if ( Volume->ApfsContainerUUID == ApfsContainerUUID ) {
|
|
|
|
if ( Volume->ApfsFileSystemUUID == ApfsFileSystemUUID ) {
|
|
|
|
return Volume;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2022-04-26 00:55:56 +02:00
|
|
|
REFIT_VOLUME* VolumesArrayClass::getVolumeWithApfsContainerUUIDAndRole(const EFI_GUID& ApfsContainerUUID, APPLE_APFS_VOLUME_ROLE roleMask)
|
2021-02-04 15:04:31 +01:00
|
|
|
{
|
|
|
|
REFIT_VOLUME* targetVolume = NULL;
|
|
|
|
for (size_t VolumeIndex = 0; VolumeIndex < Volumes.size(); VolumeIndex++) {
|
|
|
|
REFIT_VOLUME* Volume = &Volumes[VolumeIndex];
|
|
|
|
//DBG("idx=%zu name %ls uuid=%s \n", VolumeIndex2, Volume2->VolName.wc_str(), Volume2->ApfsFileSystemUUID.c_str());
|
|
|
|
if ( Volume->ApfsContainerUUID == ApfsContainerUUID ) {
|
|
|
|
if ( (Volume->ApfsRole & roleMask) != 0 ) {
|
|
|
|
if ( !targetVolume ) {
|
|
|
|
targetVolume = Volume;
|
|
|
|
}else{
|
|
|
|
// More than one partition with this role in container.
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return targetVolume;
|
|
|
|
}
|
|
|
|
|