+ //\r
+ // Try LoadFile2 style\r
+ //\r
+ if (!BootPolicy) {\r
+ TempFilePath = *FilePath;\r
+ Status = CoreDevicePathToInterface (\r
+ &gEfiLoadFile2ProtocolGuid,\r
+ &TempFilePath,\r
+ (VOID*)&LoadFile2,\r
+ DeviceHandle\r
+ );\r
+ if (!EFI_ERROR (Status)) {\r
+ //\r
+ // Call LoadFile2 with the correct buffer size\r
+ // \r
+ ASSERT (ImageFileHandle->SourceSize == 0);\r
+ ASSERT (ImageFileHandle->Source == NULL);\r
+ \r
+ Status = LoadFile2->LoadFile (\r
+ LoadFile2,\r
+ TempFilePath,\r
+ BootPolicy,\r
+ &ImageFileHandle->SourceSize,\r
+ ImageFileHandle->Source\r
+ );\r
+ if (Status == EFI_BUFFER_TOO_SMALL) {\r
+ ImageFileHandle->Source = AllocatePool (ImageFileHandle->SourceSize);\r
+ if (ImageFileHandle->Source == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ } else {\r
+ Status = LoadFile2->LoadFile (\r
+ LoadFile2,\r
+ TempFilePath,\r
+ BootPolicy,\r
+ &ImageFileHandle->SourceSize,\r
+ ImageFileHandle->Source\r
+ );\r
+ }\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ ImageFileHandle->FreeBuffer = TRUE;\r
+ goto Done;\r
+ }\r
+ }\r
+ }\r