--*/\r
\r
#include "Partition.h"\r
-#include "Gpt.h"\r
-#include "Mbr.h"\r
\r
+STATIC\r
BOOLEAN\r
PartitionValidGptTable (\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
OUT EFI_PARTITION_TABLE_HEADER *PartHeader\r
);\r
\r
+STATIC\r
BOOLEAN\r
PartitionCheckGptEntryArrayCRC (\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
IN EFI_PARTITION_TABLE_HEADER *PartHeader\r
);\r
\r
+STATIC\r
BOOLEAN\r
PartitionRestoreGptTable (\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
IN EFI_PARTITION_TABLE_HEADER *PartHeader\r
);\r
\r
+STATIC\r
VOID\r
PartitionCheckGptEntry (\r
IN EFI_PARTITION_TABLE_HEADER *PartHeader,\r
OUT EFI_PARTITION_ENTRY_STATUS *PEntryStatus\r
);\r
\r
+STATIC\r
BOOLEAN\r
PartitionCheckCrcAltSize (\r
IN UINTN MaxSize,\r
IN OUT EFI_TABLE_HEADER *Hdr\r
);\r
\r
+STATIC\r
BOOLEAN\r
PartitionCheckCrc (\r
IN UINTN MaxSize,\r
IN OUT EFI_TABLE_HEADER *Hdr\r
);\r
\r
+STATIC\r
VOID\r
PartitionSetCrcAltSize (\r
IN UINTN Size,\r
IN OUT EFI_TABLE_HEADER *Hdr\r
);\r
\r
+STATIC\r
VOID\r
PartitionSetCrc (\r
IN OUT EFI_TABLE_HEADER *Hdr\r
);\r
\r
-BOOLEAN\r
+EFI_STATUS\r
PartitionInstallGptChildHandles (\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE Handle,\r
DevicePath - Parent Device Path\r
\r
Returns:\r
- TRUE - Valid GPT disk\r
- FALSE - Not a valid GPT disk\r
+ EFI_SUCCESS - Valid GPT disk\r
+ EFI_MEDIA_CHANGED - Media changed Detected\r
+ !EFI_SUCCESS - Not a valid GPT disk\r
\r
--*/\r
{\r
EFI_PARTITION_ENTRY *PartEntry;\r
EFI_PARTITION_ENTRY_STATUS *PEntryStatus;\r
UINTN Index;\r
- BOOLEAN GptValid;\r
+ EFI_STATUS GptValid;\r
HARDDRIVE_DEVICE_PATH HdDev;\r
\r
ProtectiveMbr = NULL;\r
DEBUG ((EFI_D_INFO, " BlockSize : %d \n", BlockSize));\r
DEBUG ((EFI_D_INFO, " LastBlock : %x \n", LastBlock));\r
\r
- GptValid = FALSE;\r
+ GptValid = EFI_NOT_FOUND;\r
\r
//\r
// Allocate a buffer for the Protective MBR\r
//\r
ProtectiveMbr = AllocatePool (BlockSize);\r
if (ProtectiveMbr == NULL) {\r
- return FALSE;\r
+ return EFI_NOT_FOUND;\r
}\r
\r
//\r
ProtectiveMbr\r
);\r
if (EFI_ERROR (Status)) {\r
+ GptValid = Status;\r
goto Done;\r
}\r
//\r
PartEntry\r
);\r
if (EFI_ERROR (Status)) {\r
+ GptValid = Status;\r
DEBUG ((EFI_D_INFO, " Partition Entry ReadBlocks error\n"));\r
goto Done;\r
}\r
//\r
// If we got this far the GPT layout of the disk is valid and we should return true\r
//\r
- GptValid = TRUE;\r
+ GptValid = EFI_SUCCESS;\r
\r
//\r
// Create child device handles\r
return GptValid;\r
}\r
\r
+STATIC\r
BOOLEAN\r
PartitionValidGptTable (\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
return TRUE;\r
}\r
\r
+STATIC\r
BOOLEAN\r
PartitionCheckGptEntryArrayCRC (\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
return (BOOLEAN) (PartHeader->PartitionEntryArrayCRC32 == Crc);\r
}\r
\r
+STATIC\r
BOOLEAN\r
PartitionRestoreGptTable (\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
return TRUE;\r
}\r
\r
+STATIC\r
VOID\r
PartitionCheckGptEntry (\r
IN EFI_PARTITION_TABLE_HEADER *PartHeader,\r
DEBUG ((EFI_D_INFO, " End check partition entries\n"));\r
}\r
\r
+STATIC\r
VOID\r
PartitionSetCrc (\r
IN OUT EFI_TABLE_HEADER *Hdr\r
PartitionSetCrcAltSize (Hdr->HeaderSize, Hdr);\r
}\r
\r
+STATIC\r
VOID\r
PartitionSetCrcAltSize (\r
IN UINTN Size,\r
Hdr->CRC32 = Crc;\r
}\r
\r
+STATIC\r
BOOLEAN\r
PartitionCheckCrc (\r
IN UINTN MaxSize,\r
return PartitionCheckCrcAltSize (MaxSize, Hdr->HeaderSize, Hdr);\r
}\r
\r
+STATIC\r
BOOLEAN\r
PartitionCheckCrcAltSize (\r
IN UINTN MaxSize,\r