/** @file Copyright (C) 2019, vit9696. All rights reserved. All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef BOOT_MANAGEMENET_INTERNAL_H #define BOOT_MANAGEMENET_INTERNAL_H #include #include #include #include #include #include typedef struct { EFI_DEVICE_PATH_PROTOCOL *DevicePath; OC_APPLE_DISK_IMAGE_CONTEXT *DmgContext; EFI_HANDLE BlockIoHandle; } INTERNAL_DMG_LOAD_CONTEXT; typedef struct { EFI_HANDLE Device; UINTN NumBootInstances; UINTN HdPrefixSize; EFI_DEVICE_PATH_PROTOCOL *HdDevicePath; EFI_DEVICE_PATH_PROTOCOL *BootDevicePath; BOOLEAN IsExternal; BOOLEAN SkipRecovery; } INTERNAL_DEV_PATH_SCAN_INFO; RETURN_STATUS InternalCheckScanPolicy ( IN EFI_HANDLE Handle, IN UINT32 Policy, OUT BOOLEAN *External OPTIONAL ); EFI_DEVICE_PATH_PROTOCOL * InternalLoadDmg ( IN OUT INTERNAL_DMG_LOAD_CONTEXT *Context, IN APPLE_BOOT_POLICY_PROTOCOL *BootPolicy, IN UINT32 Policy, IN BOOLEAN AvoidHighMem ); VOID InternalUnloadDmg ( IN INTERNAL_DMG_LOAD_CONTEXT *DmgLoadContext ); CHAR16 * InternalGetAppleDiskLabel ( IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *BootDirectoryName, IN CONST CHAR16 *LabelFilename ); CHAR16 * InternalGetAppleRecoveryName ( IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *BootDirectoryName ); EFI_STATUS InternalGetRecoveryOsBooter ( IN EFI_HANDLE Device, OUT EFI_DEVICE_PATH_PROTOCOL **FilePath, IN BOOLEAN Basic ); VOID InternalSetBootEntryFlags ( IN OUT OC_BOOT_ENTRY *BootEntry ); EFI_STATUS InternalLoadBootEntry ( IN APPLE_BOOT_POLICY_PROTOCOL *BootPolicy, IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *BootEntry, IN EFI_HANDLE ParentHandle, OUT EFI_HANDLE *EntryHandle, OUT INTERNAL_DMG_LOAD_CONTEXT *DmgLoadContext ); EFI_STATUS InternalPrepareScanInfo ( IN APPLE_BOOT_POLICY_PROTOCOL *BootPolicy, IN OC_PICKER_CONTEXT *Context, IN EFI_HANDLE *Handles, IN UINTN Index, IN OUT INTERNAL_DEV_PATH_SCAN_INFO *DevPathScanInfo ); UINTN InternalFillValidBootEntries ( IN APPLE_BOOT_POLICY_PROTOCOL *BootPolicy, IN OC_PICKER_CONTEXT *Context, IN INTERNAL_DEV_PATH_SCAN_INFO *DevPathScanInfo, IN EFI_DEVICE_PATH_PROTOCOL *DevicePathWalker, IN OUT OC_BOOT_ENTRY *Entries, IN UINTN EntryIndex ); /** Resets selected NVRAM variables and reboots the system. **/ EFI_STATUS InternalSystemActionResetNvram ( VOID ); #endif // BOOT_MANAGEMENET_INTERNAL_H