@@ -192,8 +192,11 @@ static VOID DisplayBanner(VOID)
192
192
* Application entry-point
193
193
* NB: This must be set to 'efi_main' for gnu-efi crt0 compatibility
194
194
*/
195
- EFI_STATUS EFIAPI efi_main (EFI_HANDLE ImageHandle , EFI_SYSTEM_TABLE * SystemTable )
195
+ EFI_STATUS EFIAPI efi_main (EFI_HANDLE BaseImageHandle , EFI_SYSTEM_TABLE * SystemTable )
196
196
{
197
+ CONST CHAR8 FsMagic [2 ][8 ] = {
198
+ { 'N' , 'T' , 'F' , 'S' , ' ' , ' ' , ' ' , ' ' } ,
199
+ { 'E' , 'X' , 'F' , 'A' , 'T' , ' ' , ' ' , ' ' } };
197
200
CONST CHAR16 * FsName [] = { L"NTFS" , L"exFAT" };
198
201
CONST CHAR16 * DriverName [] = { L"ntfs" , L"exfat" };
199
202
CHAR16 DriverPath [64 ], LoaderPath [64 ];
@@ -202,22 +205,20 @@ EFI_STATUS EFIAPI efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable
202
205
EFI_STATUS Status ;
203
206
EFI_DEVICE_PATH * DevicePath , * ParentDevicePath = NULL , * BootDiskPath = NULL ;
204
207
EFI_DEVICE_PATH * BootPartitionPath = NULL ;
205
- EFI_HANDLE * Handles = NULL , DriverHandle , DriverHandleList [2 ];
208
+ EFI_HANDLE * Handles = NULL , ImageHandle , DriverHandleList [2 ];
206
209
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL * Volume ;
207
210
EFI_FILE_SYSTEM_VOLUME_LABEL * VolumeInfo ;
208
211
EFI_FILE_HANDLE Root ;
209
212
EFI_BLOCK_IO_PROTOCOL * BlockIo ;
210
- CHAR8 * Buffer , FsMagic [2 ][8 ] = {
211
- { 'N' , 'T' , 'F' , 'S' , ' ' , ' ' , ' ' , ' ' } ,
212
- { 'E' , 'X' , 'F' , 'A' , 'T' , ' ' , ' ' , ' ' } };
213
+ CHAR8 * Buffer ;
213
214
INTN SecureBootStatus ;
214
215
UINTN Index , FsType = 0 , Try , Event , HandleCount = 0 , Size ;
215
216
BOOLEAN SameDevice ;
216
217
217
218
#if defined(_GNU_EFI )
218
- InitializeLib (ImageHandle , SystemTable );
219
+ InitializeLib (BaseImageHandle , SystemTable );
219
220
#endif
220
- MainImageHandle = ImageHandle ;
221
+ MainImageHandle = BaseImageHandle ;
221
222
222
223
DisplayBanner ();
223
224
PrintSystemInfo ();
@@ -332,7 +333,7 @@ EFI_STATUS EFIAPI efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable
332
333
// Attempt to load the driver.
333
334
// NB: If running in a Secure Boot enabled environment, LoadImage() will fail if
334
335
// the image being loaded does not pass the Secure Boot signature validation.
335
- Status = gBS -> LoadImage (FALSE, MainImageHandle , DevicePath , NULL , 0 , & DriverHandle );
336
+ Status = gBS -> LoadImage (FALSE, MainImageHandle , DevicePath , NULL , 0 , & ImageHandle );
336
337
SafeFree (DevicePath );
337
338
if (EFI_ERROR (Status )) {
338
339
// Some platforms (e.g. Intel NUCs) return EFI_ACCESS_DENIED for Secure Boot
@@ -346,7 +347,7 @@ EFI_STATUS EFIAPI efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable
346
347
// NB: Some HP firmwares refuse to start drivers that are not of type 'EFI Boot
347
348
// System Driver'. For instance, a driver of type 'EFI Runtime Driver' produces
348
349
// a 'Load Error' on StartImage() with these firmwares => check the type.
349
- Status = gBS -> OpenProtocol (DriverHandle , & gEfiLoadedImageProtocolGuid ,
350
+ Status = gBS -> OpenProtocol (ImageHandle , & gEfiLoadedImageProtocolGuid ,
350
351
(VOID * * )& LoadedImage , MainImageHandle , NULL , EFI_OPEN_PROTOCOL_GET_PROTOCOL );
351
352
if (EFI_ERROR (Status )) {
352
353
PrintError (L" Unable to access driver interface" );
@@ -359,16 +360,16 @@ EFI_STATUS EFIAPI efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable
359
360
}
360
361
361
362
// Load was a success - attempt to start the driver
362
- Status = gBS -> StartImage (DriverHandle , NULL , NULL );
363
+ Status = gBS -> StartImage (ImageHandle , NULL , NULL );
363
364
if (EFI_ERROR (Status )) {
364
365
PrintError (L" Unable to start driver" );
365
366
goto out ;
366
367
}
367
- PrintInfo (L" %s" , GetDriverName (DriverHandle ));
368
+ PrintInfo (L" %s" , GetDriverName (ImageHandle ));
368
369
369
370
// Calling ConnectController() on a handle, with a NULL-terminated list of
370
371
// drivers will start all the drivers from the list that can service it
371
- DriverHandleList [0 ] = DriverHandle ;
372
+ DriverHandleList [0 ] = ImageHandle ;
372
373
DriverHandleList [1 ] = NULL ;
373
374
Status = gBS -> ConnectController (Handles [Index ], DriverHandleList , NULL , TRUE);
374
375
if (EFI_ERROR (Status )) {
@@ -441,7 +442,7 @@ EFI_STATUS EFIAPI efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable
441
442
PrintError (L" Could not create path" );
442
443
goto out ;
443
444
}
444
- Status = gBS -> LoadImage (FALSE, ImageHandle , DevicePath , NULL , 0 , & DriverHandle );
445
+ Status = gBS -> LoadImage (FALSE, MainImageHandle , DevicePath , NULL , 0 , & ImageHandle );
445
446
SafeFree (DevicePath );
446
447
if (EFI_ERROR (Status )) {
447
448
if ((Status == EFI_ACCESS_DENIED ) && (SecureBootStatus >= 1 ))
@@ -450,7 +451,7 @@ EFI_STATUS EFIAPI efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable
450
451
goto out ;
451
452
}
452
453
453
- Status = gBS -> StartImage (DriverHandle , NULL , NULL );
454
+ Status = gBS -> StartImage (ImageHandle , NULL , NULL );
454
455
if (EFI_ERROR (Status ))
455
456
PrintError (L" Start failure" );
456
457
0 commit comments