// Open Windows Boot Manager file Status = Root->Open(Root, &File, L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi", EFI_FILE_MODE_READ, 0); if (EFI_ERROR(Status)) Print(L"Error: bootmgfw.efi not found\n"); return Status;
EFI_STATUS Status; EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Volume; EFI_FILE_PROTOCOL *Root, *File; EFI_DEVICE_PATH_PROTOCOL *FilePath; EFI_HANDLE BootMgrHandle;
// Open our own loaded image protocol to get device handle Status = gBS->HandleProtocol(ImageHandle, &gEfiLoadedImageProtocolGuid, (VOID**)&LoadedImage); if (EFI_ERROR(Status)) return Status; bootloader for windows 10
// Build full device path (file path appended) EFI_DEVICE_PATH_PROTOCOL *FullPath = FileDevicePath(LoadedImage->DeviceHandle, L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi");
// Open simple file system on the same device (ESP) Status = gBS->HandleProtocol(LoadedImage->DeviceHandle, &gEfiSimpleFileSystemProtocolGuid, (VOID**)&Volume); if (EFI_ERROR(Status)) return Status; // Open Windows Boot Manager file Status =
// Open root directory Status = Volume->OpenVolume(Volume, &Root); if (EFI_ERROR(Status)) return Status;
msg db 'Not a Windows 10 bootloader', 0 times 510 - ($-$$) db 0 dw 0xaa55 if (EFI_ERROR(Status)) return Status
// Load and start bootmgfw.efi Status = gBS->LoadImage(FALSE, ImageHandle, FullPath, NULL, 0, &BootMgrHandle); if (EFI_ERROR(Status)) return Status;