+\r
+/**\r
+ Return whether to ignore the boot option.\r
+\r
+ @param BootOption Pointer to EFI_BOOT_MANAGER_LOAD_OPTION to check.\r
+\r
+ @retval TRUE Ignore the boot optin.\r
+ @retval FALSE Do not ignore the boot option.\r
+**/\r
+BOOLEAN\r
+IgnoreBootOption (\r
+ IN EFI_BOOT_MANAGER_LOAD_OPTION *BootOption\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath;\r
+\r
+ //\r
+ // Ignore myself.\r
+ //\r
+ Status = gBS->HandleProtocol (gImageHandle, &gEfiLoadedImageDevicePathProtocolGuid, (VOID **) &ImageDevicePath);\r
+ ASSERT_EFI_ERROR (Status);\r
+ if (CompareMem (BootOption->FilePath, ImageDevicePath, GetDevicePathSize (ImageDevicePath)) == 0) {\r
+ return TRUE;\r
+ }\r
+\r
+ //\r
+ // Do not ignore Boot Manager Menu.\r
+ //\r
+ if (IsBootManagerMenu (BootOption)) {\r
+ return FALSE;\r
+ }\r
+\r
+ //\r
+ // Ignore the hidden/inactive boot option.\r
+ //\r
+ if (((BootOption->Attributes & LOAD_OPTION_HIDDEN) != 0) || ((BootOption->Attributes & LOAD_OPTION_ACTIVE) == 0)) {\r
+ return TRUE;\r
+ }\r
+\r
+ return FALSE;\r
+}\r