6#ifndef OC_BOOT_MANAGEMENT_LIB_H
7#define OC_BOOT_MANAGEMENT_LIB_H
21#include <Protocol/LoadedImage.h>
24#include <Protocol/GraphicsOutput.h>
27#if defined (OC_TARGET_DEBUG) || defined (OC_TARGET_NOOPT)
31#if !defined (OC_TRACE_PARSE_VARS)
32#define OC_TRACE_PARSE_VARS DEBUG_VERBOSE
38#define OC_MAX_INSTANCE_IDENTIFIER_SIZE 64
43#define OC_MAX_CONTENT_VISIBILITY_SIZE 512
58#define OC_MENU_BOOT_MENU L"OpenCore Boot Menu"
59#define OC_MENU_UEFI_SHELL_ENTRY L"UEFI Shell"
60#define OC_MENU_PASSWORD_REQUEST L"Password: "
61#define OC_MENU_PASSWORD_PROCESSING L"Verifying password..."
62#define OC_MENU_PASSWORD_RETRY_LIMIT L"Password retry limit exceeded."
63#define OC_MENU_CHOOSE_OS L"Choose the Operating System: "
64#define OC_MENU_SHOW_AUXILIARY L"Show Auxiliary"
65#define OC_MENU_RELOADING L"Reloading"
66#define OC_MENU_TIMEOUT L"Timeout"
67#define OC_MENU_OK L"OK"
68#define OC_MENU_EXTERNAL L" (external)"
69#define OC_MENU_DISK_IMAGE L" (dmg)"
70#define OC_MENU_SHUTDOWN L"Shutting Down"
71#define OC_MENU_RESTART L"Restarting"
76#define OC_FLAVOUR_AUTO "Auto"
77#define OC_FLAVOUR_RESET_NVRAM "ResetNVRAM:NVRAMTool"
78#define OC_FLAVOUR_TOGGLE_SIP "ToggleSIP:NVRAMTool"
79#define OC_FLAVOUR_TOGGLE_SIP_ENABLED "ToggleSIP_Enabled:ToggleSIP:NVRAMTool"
80#define OC_FLAVOUR_TOGGLE_SIP_DISABLED "ToggleSIP_Disabled:ToggleSIP:NVRAMTool"
81#define OC_FLAVOUR_FIRMWARE_SETTINGS "FirmwareSettings"
82#define OC_FLAVOUR_HTTP_BOOT4 "HttpBoot4:HttpBoot:NetworkBoot"
83#define OC_FLAVOUR_HTTP_BOOT6 "HttpBoot6:HttpBoot:NetworkBoot"
84#define OC_FLAVOUR_PXE_BOOT4 "PxeBoot4:PxeBoot:NetworkBoot"
85#define OC_FLAVOUR_PXE_BOOT6 "PxeBoot6:PxeBoot:NetworkBoot"
86#define OC_FLAVOUR_APPLE_OS "Apple"
87#define OC_FLAVOUR_APPLE_RECOVERY "AppleRecv:Apple"
88#define OC_FLAVOUR_APPLE_FW "AppleRecv:Apple"
89#define OC_FLAVOUR_APPLE_TIME_MACHINE "AppleTM:Apple"
90#define OC_FLAVOUR_WINDOWS "Windows"
95#define OC_FLAVOUR_ID_RESET_NVRAM "ResetNVRAM"
96#define OC_FLAVOUR_ID_UEFI_SHELL "UEFIShell"
97#define OC_FLAVOUR_ID_TOGGLE_SIP_ENABLED "ToggleSIP_Enabled"
98#define OC_FLAVOUR_ID_TOGGLE_SIP_DISABLED "ToggleSIP_Disabled"
99#define OC_FLAVOUR_ID_FIRMWARE_SETTINGS "FirmwareSettings"
100#define OC_FLAVOUR_ID_NETWORK_BOOT "NetworkBoot"
105#define OPEN_CORE_IMAGE_PATH L"Resources\\Image\\"
106#define OPEN_CORE_LABEL_PATH L"Resources\\Label\\"
107#define OPEN_CORE_AUDIO_PATH L"Resources\\Audio\\"
108#define OPEN_CORE_FONT_PATH L"Resources\\Font\\"
113#define OC_ATTR_USE_VOLUME_ICON BIT0
114#define OC_ATTR_USE_DISK_LABEL_FILE BIT1
115#define OC_ATTR_USE_GENERIC_LABEL_IMAGE BIT2
116#define OC_ATTR_HIDE_THEMED_ICONS BIT3
117#define OC_ATTR_USE_POINTER_CONTROL BIT4
118#define OC_ATTR_SHOW_DEBUG_DISPLAY BIT5
119#define OC_ATTR_USE_MINIMAL_UI BIT6
120#define OC_ATTR_USE_FLAVOUR_ICON BIT7
121#define OC_ATTR_USE_REVERSED_UI BIT8
122#define OC_ATTR_REDUCE_MOTION BIT9
123#define OC_ATTR_ALL_BITS (\
124 OC_ATTR_USE_VOLUME_ICON | OC_ATTR_USE_DISK_LABEL_FILE | \
125 OC_ATTR_USE_GENERIC_LABEL_IMAGE | OC_ATTR_HIDE_THEMED_ICONS | \
126 OC_ATTR_USE_POINTER_CONTROL | OC_ATTR_SHOW_DEBUG_DISPLAY | \
127 OC_ATTR_USE_MINIMAL_UI | OC_ATTR_USE_FLAVOUR_ICON | \
128 OC_ATTR_USE_REVERSED_UI | OC_ATTR_REDUCE_MOTION )
134#define OC_VOICE_OVER_IDLE_TIMEOUT_MS 700
139#define OC_VOICE_OVER_SIGNAL_NORMAL_MS 200
140#define OC_VOICE_OVER_SILENCE_NORMAL_MS 150
141#define OC_VOICE_OVER_SIGNALS_NORMAL 1
142#define OC_VOICE_OVER_SIGNALS_PASSWORD 2
143#define OC_VOICE_OVER_SIGNALS_PASSWORD_OK 3
145#define OC_VOICE_OVER_SIGNAL_ERROR_MS 1000
146#define OC_VOICE_OVER_SILENCE_ERROR_MS 150
147#define OC_VOICE_OVER_SIGNALS_ERROR 1
148#define OC_VOICE_OVER_SIGNALS_HWERROR 3
156#define OC_BOOT_UNKNOWN BIT0
157#define OC_BOOT_APPLE_OS BIT1
158#define OC_BOOT_APPLE_RECOVERY BIT2
159#define OC_BOOT_APPLE_TIME_MACHINE BIT3
160#define OC_BOOT_APPLE_FW_UPDATE BIT4
161#define OC_BOOT_APPLE_ANY (OC_BOOT_APPLE_OS | OC_BOOT_APPLE_RECOVERY | OC_BOOT_APPLE_TIME_MACHINE | OC_BOOT_APPLE_FW_UPDATE)
162#define OC_BOOT_WINDOWS BIT5
163#define OC_BOOT_EXTERNAL_OS BIT6
164#define OC_BOOT_EXTERNAL_TOOL BIT7
165#define OC_BOOT_SYSTEM BIT8
166#define OC_BOOT_UNMANAGED BIT9
191#define OC_KERN_CAPABILITY_K32_U32 BIT0
192#define OC_KERN_CAPABILITY_K32_U64 BIT1
193#define OC_KERN_CAPABILITY_K64_U64 BIT2
195#define OC_KERN_CAPABILITY_K32_K64_U64 (OC_KERN_CAPABILITY_K32_U64 | OC_KERN_CAPABILITY_K64_U64)
196#define OC_KERN_CAPABILITY_K32_U32_U64 (OC_KERN_CAPABILITY_K32_U32 | OC_KERN_CAPABILITY_K32_U64)
197#define OC_KERN_CAPABILITY_ALL (OC_KERN_CAPABILITY_K32_U32 | OC_KERN_CAPABILITY_K32_K64_U64)
204#define OC_SCAN_FILE_SYSTEM_LOCK BIT0
211#define OC_SCAN_DEVICE_LOCK BIT1
216#define OC_SCAN_ALLOW_FS_APFS BIT8
221#define OC_SCAN_ALLOW_FS_HFS BIT9
226#define OC_SCAN_ALLOW_FS_ESP BIT10
231#define OC_SCAN_ALLOW_FS_NTFS BIT11
237#define OC_SCAN_ALLOW_FS_LINUX_ROOT BIT12
243#define OC_SCAN_ALLOW_FS_LINUX_DATA BIT13
248#define OC_SCAN_ALLOW_FS_XBOOTLDR BIT14
253#define OC_SCAN_ALLOW_DEVICE_SATA BIT16
258#define OC_SCAN_ALLOW_DEVICE_SASEX BIT17
263#define OC_SCAN_ALLOW_DEVICE_SCSI BIT18
268#define OC_SCAN_ALLOW_DEVICE_NVME BIT19
273#define OC_SCAN_ALLOW_DEVICE_ATAPI BIT20
278#define OC_SCAN_ALLOW_DEVICE_USB BIT21
283#define OC_SCAN_ALLOW_DEVICE_FIREWIRE BIT22
288#define OC_SCAN_ALLOW_DEVICE_SDCARD BIT23
293#define OC_SCAN_ALLOW_DEVICE_PCI BIT24
298#define OC_SCAN_DEVICE_BITS (\
299 OC_SCAN_ALLOW_DEVICE_SATA | OC_SCAN_ALLOW_DEVICE_SASEX | \
300 OC_SCAN_ALLOW_DEVICE_SCSI | OC_SCAN_ALLOW_DEVICE_NVME | \
301 OC_SCAN_ALLOW_DEVICE_ATAPI | OC_SCAN_ALLOW_DEVICE_USB | \
302 OC_SCAN_ALLOW_DEVICE_FIREWIRE | OC_SCAN_ALLOW_DEVICE_SDCARD | \
303 OC_SCAN_ALLOW_DEVICE_PCI)
308#define OC_SCAN_FILE_SYSTEM_BITS (\
309 OC_SCAN_ALLOW_FS_APFS | OC_SCAN_ALLOW_FS_HFS | OC_SCAN_ALLOW_FS_ESP | \
310 OC_SCAN_ALLOW_FS_NTFS | OC_SCAN_ALLOW_FS_LINUX_ROOT | \
311 OC_SCAN_ALLOW_FS_LINUX_DATA | OC_SCAN_ALLOW_FS_XBOOTLDR )
316#define OC_SCAN_DEFAULT_POLICY (\
317 OC_SCAN_FILE_SYSTEM_LOCK | OC_SCAN_DEVICE_LOCK | \
318 OC_SCAN_ALLOW_FS_APFS | \
319 OC_SCAN_ALLOW_DEVICE_SATA | OC_SCAN_ALLOW_DEVICE_SASEX | \
320 OC_SCAN_ALLOW_DEVICE_SCSI | OC_SCAN_ALLOW_DEVICE_NVME | \
321 OC_SCAN_ALLOW_DEVICE_PCI)
348 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
358 IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath
376 OUT UINT32 *DataSize,
378 OUT EFI_HANDLE *StorageHandle,
379 OUT EFI_DEVICE_PATH_PROTOCOL **StoragePath,
382 OUT VOID **CustomFreeContext
391 IN VOID *CustomFreeContext
608 IN EFI_HANDLE ImageHandle,
609 OUT UINTN *ExitDataSize,
610 OUT CHAR16 **ExitData OPTIONAL,
611 IN BOOLEAN LaunchInText
765 OUT VOID **ImageData,
766 OUT UINT32 *DataLength
777 OUT VOID **ImageData,
778 OUT UINT32 *DataLength
829 IN CONST CHAR8 *BasePath,
830 IN CONST CHAR8 *BaseType,
842 IN UINT32 ToneLength,
843 IN UINT32 SilenceLength
863 IN CONST CHAR8 *BasePath OPTIONAL,
864 IN CONST CHAR8 *BaseType OPTIONAL
887 UINT64 LoopDelayStart,
924 IN CONST UINT8 *Password,
925 IN UINT32 PasswordSize,
1164#define HIBERNATE_MODE_NONE 0U
1165#define HIBERNATE_MODE_RTC 1U
1166#define HIBERNATE_MODE_NVRAM 2U
1184 OUT VOID **ImageData,
1185 OUT UINT32 *DataLength
1202 OUT VOID **ImageData,
1203 OUT UINT32 *DataLength
1231 IN BOOLEAN UseBootNextOnly
1269 IN UINTN NumBootEntries
1321 IN CONST UINT8 *Password,
1322 IN UINT32 PasswordSize,
1357 IN EFI_HANDLE ParentHandle
1369 IN UINT32 HibernateMask
1383 OUT EFI_DEVICE_PATH_PROTOCOL **Initiator OPTIONAL
1396 OUT UINT32 *PanicSize
1423#define OC_INPUT_STR "123456789ABCDEFGHIJKLMNOPQRSTUVXWZ"
1424#define OC_INPUT_MAX L_STR_LEN (OC_INPUT_STR)
1425#define OC_INPUT_ABORTED -1
1426#define OC_INPUT_NO_ACTION -2
1427#define OC_INPUT_TIMEOUT -3
1428#define OC_INPUT_CONTINUE -4
1429#define OC_INPUT_UP -5
1430#define OC_INPUT_DOWN -6
1431#define OC_INPUT_LEFT -7
1432#define OC_INPUT_RIGHT -8
1433#define OC_INPUT_TOP -9
1434#define OC_INPUT_BOTTOM -10
1435#define OC_INPUT_MORE -11
1436#define OC_INPUT_VOICE_OVER -12
1437#define OC_INPUT_INTERNAL -13
1438#define OC_INPUT_TYPING_CLEAR_ALL -14
1439#define OC_INPUT_TYPING_BACKSPACE -15
1440#define OC_INPUT_TYPING_LEFT -16
1441#define OC_INPUT_TYPING_RIGHT -17
1442#define OC_INPUT_TYPING_CONFIRM -18
1443#define OC_INPUT_SWITCH_FOCUS -19
1444#define OC_INPUT_FUNCTIONAL(x) (-50 - (x))
1449#define OC_MODIFIERS_NONE 0
1450#define OC_MODIFIERS_SET_DEFAULT BIT0
1451#define OC_MODIFIERS_REVERSE_SWITCH_FOCUS BIT1
1453#define OC_PICKER_KEYS_TYPING BIT0
1454#define OC_PICKER_KEYS_HOTKEYS BIT1
1455#define OC_PICKER_KEYS_VOICE_OVER BIT2
1456#define OC_PICKER_KEYS_TAB_CONTROL BIT3
1458#define OC_PICKER_KEYS_FOR_TYPING \
1459 (OC_PICKER_KEYS_TYPING | OC_PICKER_KEYS_VOICE_OVER | OC_PICKER_KEYS_TAB_CONTROL)
1461#define OC_PICKER_KEYS_FOR_PICKER \
1462 (OC_PICKER_KEYS_HOTKEYS | OC_PICKER_KEYS_VOICE_OVER | OC_PICKER_KEYS_TAB_CONTROL)
1513 OUT BOOLEAN *External OPTIONAL
1540 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
1541 OUT BOOLEAN *IsFolder OPTIONAL,
1542 OUT BOOLEAN *IsGeneric OPTIONAL
1552EFI_LOADED_IMAGE_PROTOCOL *
1554 IN EFI_HANDLE ImageHandle
1582#define MAX_LOAD_OPTIONS_SIZE SIZE_16KB
1595 IN UINT32 LoadOptionsSize,
1596 IN CONST VOID *LoadOptions
1610 IN UINT32 LoadOptionsSize,
1611 IN CONST VOID *LoadOptions
1639 IN EFI_LOADED_IMAGE *LoadedImage OPTIONAL,
1640 IN EFI_GET_VARIABLE GetVariable OPTIONAL,
1641 IN CONST CHAR8 *Argument,
1642 IN CONST UINTN ArgumentLength,
1643 IN OUT CHAR8 **Value OPTIONAL
1658 IN CONST CHAR8 *CommandLine,
1659 IN CONST CHAR8 *Argument,
1660 IN CONST UINTN ArgumentLength,
1661 OUT UINTN *ValueLength OPTIONAL
1672 IN OUT CHAR8 *CommandLine,
1673 IN CONST CHAR8 *Argument
1689 IN OUT CHAR8 *CommandLine,
1690 IN CONST CHAR8 *Argument,
1691 IN CONST UINTN ArgumentLength
1706 IN OUT EFI_LOADED_IMAGE_PROTOCOL *LoadedImage,
1707 IN CONST CHAR8 **Arguments,
1708 IN UINT32 ArgumentCount,
1722 IN EFI_GUID *ApplicationGuid,
1723 IN BOOLEAN SetReason
1755 IN CONST CHAR8 *BasePath,
1756 IN CONST CHAR8 *BaseType,
1774 IN UINT32 ToneCount,
1775 IN UINT32 ToneLength,
1776 IN UINT32 SilenceLength
1805 IN CONST CHAR8 *BasePath OPTIONAL,
1806 IN CONST CHAR8 *BaseType OPTIONAL
1823 IN EFI_GUID *BootVariableGuid,
1824 IN BOOLEAN WithBootNext,
1825 OUT UINTN *BootOrderCount,
1826 OUT BOOLEAN *Deduplicated OPTIONAL,
1827 OUT BOOLEAN *HasBootNext OPTIONAL,
1828 IN BOOLEAN UseBootNextOnly
1849 IN CONST CHAR16 *OptionName,
1850 IN EFI_HANDLE DeviceHandle,
1852 IN BOOLEAN ShortForm,
1853 IN CONST CHAR16 *MatchSuffix,
1854 IN UINTN MatchSuffixLen
1862 IN CONST BOOLEAN ProtectUefiServices,
1863 IN CONST BOOLEAN FixupAppleEfiImages
1880 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL,
1881 IN VOID *SourceBuffer,
1891 IN OUT EFI_LOADED_IMAGE_PROTOCOL *LoadedImage,
1892 IN UINT32 Capabilities
1930 IN BOOLEAN BootPolicy,
1931 IN EFI_HANDLE ParentImageHandle,
1932 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
1933 IN VOID *SourceBuffer OPTIONAL,
1934 IN UINTN SourceSize,
1935 OUT EFI_HANDLE *ImageHandle
1963 IN CONST EFI_LOADED_IMAGE_PROTOCOL *LoadedImage,
1998 IN CONST BOOLEAN TokensOnly
2012 IN CONST UINTN Index
2035 IN CONST VOID *Name,
2036 OUT VOID **StrValue,
2058 IN CONST CHAR16 *Name,
2059 OUT CHAR16 **StrValue
2080 IN CONST CHAR8 *Name,
2081 OUT CHAR8 **StrValue
2097 IN CONST VOID *Name,
2116 IN CONST VOID *Name,
2136 IN CONST VOID *Name,
2137 OUT EFI_GUID *Value,
2149 IN OUT EFI_HANDLE **EntryProtocolHandles,
2150 IN OUT UINTN *EntryProtocolHandleCount
2160 EFI_HANDLE **EntryProtocolHandles
2181 IN EFI_HANDLE *EntryProtocolHandles,
2182 IN UINTN EntryProtocolHandleCount,
2183 IN CONST VOID *DefaultEntryId, OPTIONAL
2184 IN BOOLEAN CreateDefault,
2185 IN BOOLEAN CreateForHotKey
2231 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
2232 IN CONST CHAR16 *FileName,
2233 IN CONST CHAR8 *DebugFileType,
2234 IN UINT32 MaxFileSize,
2235 IN UINT32 MinFileSize,
2236 OUT VOID **FileData,
2237 OUT UINT32 *DataLength OPTIONAL,
2238 IN BOOLEAN SearchAtLeaf,
2239 IN BOOLEAN SearchAtRoot
2264 IN CONST CHAR16 *FileName,
2265 IN CONST CHAR8 *DebugFileType,
2266 IN UINT32 MaxFileSize,
2267 IN UINT32 MinFileSize,
2268 OUT VOID **FileData,
2269 OUT UINT32 *DataLength OPTIONAL,
2270 IN BOOLEAN SearchAtLeaf,
2271 IN BOOLEAN SearchAtRoot
UINT16 APPLE_MODIFIER_MAP
DMG_FILEPATH_DEVICE_PATH FilePath
UINT32 OcGetDefaultBootEntry(IN OC_PICKER_CONTEXT *Context, IN OUT OC_BOOT_ENTRY *BootEntries, IN UINTN NumBootEntries)
EFI_STATUS OcRegisterBootstrapBootOption(IN CONST CHAR16 *OptionName, IN EFI_HANDLE DeviceHandle, IN CONST CHAR16 *FilePath, IN BOOLEAN ShortForm, IN CONST CHAR16 *MatchSuffix, IN UINTN MatchSuffixLen)
VOID(EFIAPI * OC_KB_DEBUG_INSTRUMENT_LOOP_DELAY)(UINT64 LoopDelayStart, UINT64 LoopDelayEnd)
struct OC_PARSED_VAR_ASCII_ OC_PARSED_VAR_ASCII
VOID OcRemoveArgumentFromCmd(IN OUT CHAR8 *CommandLine, IN CONST CHAR8 *Argument)
union OC_PARSED_VAR_ OC_PARSED_VAR
BOOLEAN(EFIAPI * OC_WAIT_FOR_KEY_INFO)(IN OUT OC_PICKER_CONTEXT *Context, IN UINT64 EndTime, IN OC_PICKER_KEY_MAP KeyFilter, IN OUT OC_PICKER_KEY_INFO *PickerKeyInfo)
EFI_STATUS EFIAPI OcGetBootEntryIcon(IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *BootEntry, OUT VOID **ImageData, OUT UINT32 *DataLength)
@ OcPickerBootAppleRecovery
UINT32 OcGetFileSystemPolicyType(IN EFI_HANDLE Handle)
EFI_STATUS OcActivateHibernateWake(IN UINT32 HibernateMask)
EFI_STATUS(EFIAPI * OC_GET_ENTRY_LABEL_IMAGE)(IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *BootEntry, IN UINT8 Scale, OUT VOID **ImageData, OUT UINT32 *DataLength)
EFI_STATUS(* OC_BOOT_UNMANAGED_ACTION)(IN OUT OC_PICKER_CONTEXT *PickerContext, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath)
VOID OcImageLoaderInit(IN CONST BOOLEAN ProtectUefiServices, IN CONST BOOLEAN FixupAppleEfiImages)
BOOLEAN OcParsedVarsGetAsciiStr(IN CONST OC_FLEX_ARRAY *ParsedVars, IN CONST CHAR8 *Name, OUT CHAR8 **StrValue)
VOID * OcReadApplePanicLog(OUT UINT32 *PanicSize)
UINT64(EFIAPI * OC_GET_KEY_WAIT_END_TIME)(IN UINT64 Timeout)
OC_PARSED_VAR * OcParsedVarsItemAt(IN CONST OC_FLEX_ARRAY *ParsedVars, IN CONST UINTN Index)
VOID OcLocateBootEntryProtocolHandles(IN OUT EFI_HANDLE **EntryProtocolHandles, IN OUT UINTN *EntryProtocolHandleCount)
EFI_STATUS EFIAPI OcShowSimplePasswordRequest(IN OC_PICKER_CONTEXT *Context, IN OC_PRIVILEGE_LEVEL Level)
VOID(EFIAPI * OC_TOGGLE_VOICE_OVER)(IN OC_PICKER_CONTEXT *Context, IN CONST CHAR8 *BasePath OPTIONAL, IN CONST CHAR8 *BaseType OPTIONAL)
VOID(* OC_IMAGE_LOADER_CONFIGURE)(IN OUT EFI_LOADED_IMAGE_PROTOCOL *LoadedImage, IN UINT32 Capabilities)
EFI_LOADED_IMAGE_PROTOCOL * OcGetAppleBootLoadedImage(IN EFI_HANDLE ImageHandle)
VOID EFIAPI OcToggleVoiceOver(IN OC_PICKER_CONTEXT *Context, IN CONST CHAR8 *BasePath OPTIONAL, IN CONST CHAR8 *BaseType OPTIONAL)
VOID OcFreeHotKeys(IN OC_PICKER_CONTEXT *Context)
EFI_STATUS EFIAPI OcResetSystem(IN CHAR16 *Mode)
BOOLEAN EFIAPI OcHasLoadOptions(IN UINT32 LoadOptionsSize, IN CONST VOID *LoadOptions)
BOOLEAN OcParsedVarsGetStr(IN CONST OC_FLEX_ARRAY *ParsedVars, IN CONST VOID *Name, OUT VOID **StrValue, IN CONST OC_STRING_FORMAT StringFormat)
OC_BOOT_CONTEXT * OcScanForBootEntries(IN OC_PICKER_CONTEXT *Context)
OC_BOOT_CONTEXT * OcScanForDefaultBootEntry(IN OC_PICKER_CONTEXT *Context, IN BOOLEAN UseBootNextOnly)
EFI_STATUS(* OC_BOOT_SYSTEM_ACTION)(IN OUT OC_PICKER_CONTEXT *PickerContext)
EFI_STATUS OcParseLoadOptions(IN CONST EFI_LOADED_IMAGE_PROTOCOL *LoadedImage, OUT OC_FLEX_ARRAY **ParsedVars)
VOID OcFreeBootEntryProtocolHandles(EFI_HANDLE **EntryProtocolHandles)
EFI_STATUS(EFIAPI * OC_GET_ENTRY_ICON)(IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *BootEntry, OUT VOID **ImageData, OUT UINT32 *DataLength)
EFI_STATUS EFIAPI OcImageLoaderLoad(IN BOOLEAN BootPolicy, IN EFI_HANDLE ParentImageHandle, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, IN VOID *SourceBuffer OPTIONAL, IN UINTN SourceSize, OUT EFI_HANDLE *ImageHandle)
VOID OcImageLoaderRegisterConfigure(IN OC_IMAGE_LOADER_CONFIGURE Configure OPTIONAL)
EFI_STATUS OcRunBootPicker(IN OC_PICKER_CONTEXT *Context)
EFI_STATUS OcParsedVarsGetInt(IN CONST OC_FLEX_ARRAY *ParsedVars, IN CONST VOID *Name, OUT UINTN *Value, IN CONST OC_STRING_FORMAT StringFormat)
EFI_STATUS OcRunFirmwareApplication(IN EFI_GUID *ApplicationGuid, IN BOOLEAN SetReason)
BOOLEAN(EFIAPI * OC_VERIFY_PASSWORD)(IN CONST UINT8 *Password, IN UINT32 PasswordSize, IN CONST OC_PRIVILEGE_CONTEXT *PrivilegeContext)
VOID(* OC_IMAGE_LOADER_PATCH)(IN EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL, IN VOID *SourceBuffer, IN UINTN SourceSize)
EFI_STATUS EFIAPI OcGetBootEntryFileFromDevicePath(IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, IN CONST CHAR16 *FileName, IN CONST CHAR8 *DebugFileType, IN UINT32 MaxFileSize, IN UINT32 MinFileSize, OUT VOID **FileData, OUT UINT32 *DataLength OPTIONAL, IN BOOLEAN SearchAtLeaf, IN BOOLEAN SearchAtRoot)
EFI_STATUS EFIAPI OcGetBootEntryLabelImage(IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *BootEntry, IN UINT8 Scale, OUT VOID **ImageData, OUT UINT32 *DataLength)
UINT32 OC_BOOT_ENTRY_TYPE
EFI_STATUS EFIAPI OcPlayAudioFile(IN OC_PICKER_CONTEXT *Context, IN CONST CHAR8 *BasePath, IN CONST CHAR8 *BaseType, IN BOOLEAN Fallback)
enum OC_PICKER_MODE_ OC_PICKER_MODE
EFI_STATUS OcSetDefaultBootEntry(IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *Entry)
struct OC_BOOT_CONTEXT_ OC_BOOT_CONTEXT
VOID OcImageLoaderActivate(VOID)
struct OC_PARSED_VAR_UNICODE_ OC_PARSED_VAR_UNICODE
OC_BOOT_ENTRY_TYPE OcGetBootDevicePathType(IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, OUT BOOLEAN *IsFolder OPTIONAL, OUT BOOLEAN *IsGeneric OPTIONAL)
EFI_STATUS EFIAPI OcPreLocateAudioProtocol(IN OC_PICKER_CONTEXT *Context)
@ OcDmgLoadingAppleSigned
BOOLEAN OcHasParsedVar(IN CONST OC_FLEX_ARRAY *ParsedVars, IN CONST VOID *Name, IN CONST OC_STRING_FORMAT StringFormat)
EFI_STATUS(EFIAPI * OC_CUSTOM_READ)(IN OC_STORAGE_CONTEXT *Storage, IN OC_BOOT_ENTRY *ChosenEntry, OUT VOID **Data, OUT UINT32 *DataSize, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath, OUT EFI_HANDLE *StorageHandle, OUT EFI_DEVICE_PATH_PROTOCOL **StoragePath, IN OC_DMG_LOADING_SUPPORT DmgLoading, OUT OC_APPLE_DISK_IMAGE_PRELOAD_CONTEXT *DmgPreloadContext, OUT VOID **CustomFreeContext)
CONST CHAR8 * OcGetArgumentFromCmd(IN CONST CHAR8 *CommandLine, IN CONST CHAR8 *Argument, IN CONST UINTN ArgumentLength, OUT UINTN *ValueLength OPTIONAL)
EFI_STATUS EFIAPI OcGetBootEntryFile(IN OC_BOOT_ENTRY *BootEntry, IN CONST CHAR16 *FileName, IN CONST CHAR8 *DebugFileType, IN UINT32 MaxFileSize, IN UINT32 MinFileSize, OUT VOID **FileData, OUT UINT32 *DataLength OPTIONAL, IN BOOLEAN SearchAtLeaf, IN BOOLEAN SearchAtRoot)
EFI_STATUS OcInitHotKeys(IN OUT OC_PICKER_CONTEXT *Context)
EFI_STATUS(* OC_BOOT_UNMANAGED_GET_FINAL_DP)(IN OUT OC_PICKER_CONTEXT *PickerContext, IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath)
EFI_STATUS EFIAPI OcShowSimpleBootMenu(IN OC_BOOT_CONTEXT *BootContext, IN OC_BOOT_ENTRY **BootEntries, OUT OC_BOOT_ENTRY **ChosenBootEntry)
UINT32 OcGetDevicePolicyType(IN EFI_HANDLE Handle, OUT BOOLEAN *External OPTIONAL)
EFI_STATUS(EFIAPI * OC_SHOW_MENU)(IN OC_BOOT_CONTEXT *BootContext, IN OC_BOOT_ENTRY **BootEntries, OUT OC_BOOT_ENTRY **ChosenBootEntry)
EFI_STATUS(EFIAPI * OC_PLAY_AUDIO_FILE)(IN OC_PICKER_CONTEXT *Context, IN CONST CHAR8 *BasePath, IN CONST CHAR8 *BaseType, IN BOOLEAN Fallback)
BOOLEAN OcIsAppleHibernateWake(VOID)
UINT16 * OcGetBootOrder(IN EFI_GUID *BootVariableGuid, IN BOOLEAN WithBootNext, OUT UINTN *BootOrderCount, OUT BOOLEAN *Deduplicated OPTIONAL, OUT BOOLEAN *HasBootNext OPTIONAL, IN BOOLEAN UseBootNextOnly)
struct OC_BOOT_ARGUMENTS_ OC_BOOT_ARGUMENTS
EFI_STATUS EFIAPI OcPlayAudioBeep(IN OC_PICKER_CONTEXT *Context, IN UINT32 ToneCount, IN UINT32 ToneLength, IN UINT32 SilenceLength)
OC_BOOT_ENTRY ** OcEnumerateEntries(IN OC_BOOT_CONTEXT *BootContext)
BOOLEAN OcAppendArgumentToCmd(IN OUT OC_PICKER_CONTEXT *Context OPTIONAL, IN OUT CHAR8 *CommandLine, IN CONST CHAR8 *Argument, IN CONST UINTN ArgumentLength)
EFI_STATUS(EFIAPI * OC_CUSTOM_FREE)(IN VOID *CustomFreeContext)
BOOLEAN EFIAPI OcVerifyPassword(IN CONST UINT8 *Password, IN UINT32 PasswordSize, IN CONST OC_PRIVILEGE_CONTEXT *PrivilegeContext)
BOOLEAN OcParsedVarsGetUnicodeStr(IN CONST OC_FLEX_ARRAY *ParsedVars, IN CONST CHAR16 *Name, OUT CHAR16 **StrValue)
EFI_STATUS EFIAPI OcResetToFirmwareSettingsSupported(VOID)
BOOLEAN OcAppendArgumentsToLoadedImage(IN OUT EFI_LOADED_IMAGE_PROTOCOL *LoadedImage, IN CONST CHAR8 **Arguments, IN UINT32 ArgumentCount, IN BOOLEAN Replace)
EFI_STATUS OcParseVars(IN VOID *StrVars, OUT OC_FLEX_ARRAY **ParsedVars, IN CONST OC_STRING_FORMAT StringFormat, IN CONST BOOLEAN TokensOnly)
BOOLEAN OcCheckArgumentFromEnv(IN EFI_LOADED_IMAGE *LoadedImage OPTIONAL, IN EFI_GET_VARIABLE GetVariable OPTIONAL, IN CONST CHAR8 *Argument, IN CONST UINTN ArgumentLength, IN OUT CHAR8 **Value OPTIONAL)
VOID(EFIAPI * OC_GET_KEY_INFO)(IN OUT OC_PICKER_CONTEXT *Context, IN OC_PICKER_KEY_MAP KeyFilter, OUT OC_PICKER_KEY_INFO *PickerKeyInfo)
EFI_STATUS OcParsedVarsGetGuid(IN CONST OC_FLEX_ARRAY *ParsedVars, IN CONST VOID *Name, OUT EFI_GUID *Value, IN CONST OC_STRING_FORMAT StringFormat)
EFI_STATUS OcUnlockAppleFirmwareUI(VOID)
EFI_STATUS(EFIAPI * OC_PLAY_AUDIO_BEEP)(IN OC_PICKER_CONTEXT *Context, IN UINT32 ToneCount, IN UINT32 ToneLength, IN UINT32 SilenceLength)
VOID OcImageLoaderRegisterPatch(IN OC_IMAGE_LOADER_PATCH Patch OPTIONAL)
BOOLEAN EFIAPI OcValidLoadOptions(IN UINT32 LoadOptionsSize, IN CONST VOID *LoadOptions)
EFI_STATUS OcHandleRecoveryRequest(OUT EFI_DEVICE_PATH_PROTOCOL **Initiator OPTIONAL)
VOID(EFIAPI * OC_KB_DEBUG_SHOW)(UINTN NumKeysDown, UINTN NumKeysHeld, APPLE_MODIFIER_MAP Modifiers)
VOID OcParseBootArgs(OUT OC_BOOT_ARGUMENTS *Arguments, IN VOID *BootArgs)
EFI_STATUS(EFIAPI * OC_REQ_PRIVILEGE)(IN OC_PICKER_CONTEXT *Context, IN OC_PRIVILEGE_LEVEL Level)
@ OcPrivilegeUnauthorized
EFI_STATUS(EFIAPI * OC_PLAY_AUDIO_ENTRY)(IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *Entry)
EFI_STATUS OcAddEntriesFromBootEntryProtocol(IN OUT OC_BOOT_CONTEXT *BootContext, IN OUT OC_BOOT_FILESYSTEM *FileSystem, IN EFI_HANDLE *EntryProtocolHandles, IN UINTN EntryProtocolHandleCount, IN CONST VOID *DefaultEntryId, OPTIONAL IN BOOLEAN CreateDefault, IN BOOLEAN CreateForHotKey)
EFI_STATUS(EFIAPI * OC_IMAGE_START)(IN OC_BOOT_ENTRY *ChosenEntry, IN EFI_HANDLE ImageHandle, OUT UINTN *ExitDataSize, OUT CHAR16 **ExitData OPTIONAL, IN BOOLEAN LaunchInText)
EFI_STATUS EFIAPI OcPlayAudioEntry(IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *Entry)
EFI_STATUS OcLoadBootEntry(IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *BootEntry, IN EFI_HANDLE ParentHandle)
VOID OcLoadPickerHotKeys(IN OUT OC_PICKER_CONTEXT *Context)
EFI_STATUS OcLaunchAppleBootPicker(VOID)
VOID OcFreeBootContext(IN OUT OC_BOOT_CONTEXT *Context)
VOID(EFIAPI * OC_FLUSH_TYPING_BUFFER)(IN OUT OC_PICKER_CONTEXT *Context)
enum _OC_STRING_FORMAT OC_STRING_FORMAT
PACKED struct @7 OC_TYPING_CONTEXT
APPLE_EVENT_HANDLE Handle
UINT32 * MemoryMapDescriptorSize
EFI_SYSTEM_TABLE * SystemTable
UINT32 * RuntimeServicesPG
UINT32 * DeviceTreeLength
UINT64 * RuntimeServicesV
UINT32 * MemoryMapDescriptorVersion
OC_BOOT_ENTRY * DefaultEntry
OC_PICKER_CONTEXT * PickerContext
EFI_GUID * BootVariableGuid
OC_BOOT_SYSTEM_ACTION SystemAction
EFI_DEVICE_PATH_PROTOCOL * DevicePath
EFI_GUID UniquePartitionGUID
BOOLEAN IsBootEntryProtocol
OC_CUSTOM_READ CustomRead
OC_BOOT_UNMANAGED_ACTION UnmanagedBootAction
OC_CUSTOM_FREE CustomFree
OC_BOOT_UNMANAGED_GET_FINAL_DP UnmanagedBootGetFinalDevicePath
OC_BOOT_FILESYSTEM * RecoveryFs
OC_TYPING_CONTEXT * TypingContext
OC_GET_KEY_INFO GetKeyInfo
OC_KEY_REPEAT_CONTEXT * DoNotRepeatContext
OC_FLUSH_TYPING_BUFFER FlushTypingBuffer
APPLE_KEY_MAP_AGGREGATOR_PROTOCOL * KeyMap
OC_WAIT_FOR_KEY_INFO WaitForKeyInfo
OC_GET_KEY_WAIT_END_TIME GetKeyWaitEndTime
OC_KB_DEBUG_INSTRUMENT_LOOP_DELAY InstrumentLoopDelay
OC_IMAGE_START StartImage
BOOLEAN PickerAudioAssist
OC_PLAY_AUDIO_ENTRY PlayAudioEntry
OC_PICKER_ENTRY CustomEntries[]
OC_PLAY_AUDIO_BEEP PlayAudioBeep
OC_PICKER_MODE PickerMode
UINT32 AllCustomEntryCount
OC_GET_ENTRY_ICON GetEntryIcon
OC_STORAGE_CONTEXT * StorageContext
OC_PLAY_AUDIO_FILE PlayAudioFile
OC_REQ_PRIVILEGE RequestPrivilege
OC_KB_DEBUG_CALLBACKS * KbDebug
CHAR16 ** CustomBootPaths
OC_HOTKEY_CONTEXT * HotKeyContext
BOOLEAN ApplePickerUnsupported
BOOLEAN BlacklistAppleUpdate
OC_AUDIO_PROTOCOL * OcAudio
CHAR8 AppleBootArgs[BOOT_LINE_LENGTH]
OC_PRIVILEGE_CONTEXT * PrivilegeContext
EFI_DEVICE_PATH_PROTOCOL * RecoveryInitiator
CONST CHAR8 * PickerVariant
OC_DMG_LOADING_SUPPORT DmgLoading
OC_GET_ENTRY_LABEL_IMAGE GetEntryLabelImage
EFI_HANDLE HotKeyProtocolHandle
APPLE_BEEP_GEN_PROTOCOL * BeepGen
OC_VERIFY_PASSWORD VerifyPassword
OC_PICKER_CMD PickerCommand
UINT32 AbsoluteEntryCount
OC_TOGGLE_VOICE_OVER ToggleVoiceOver
OC_CUSTOM_READ CustomRead
CONST CHAR8 * InstanceIdentifier
CONST CHAR8 * TitleSuffix
OC_BOOT_UNMANAGED_ACTION UnmanagedBootAction
OC_BOOT_UNMANAGED_GET_FINAL_DP UnmanagedBootGetFinalDevicePath
OC_CUSTOM_READ CustomRead
EFI_DEVICE_PATH_PROTOCOL * UnmanagedDevicePath
OC_CUSTOM_FREE CustomFree
OC_BOOT_SYSTEM_ACTION SystemAction
OC_MODIFIER_MAP OcModifiers
OC_PRIVILEGE_LEVEL CurrentLevel
OC_PARSED_VAR_ASCII Ascii
OC_PARSED_VAR_UNICODE Unicode