OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
BootManagementInternal.h
Go to the documentation of this file.
1
15#ifndef BOOT_MANAGEMENET_INTERNAL_H
16#define BOOT_MANAGEMENET_INTERNAL_H
17
18#include <Uefi.h>
19
22
24#include <Protocol/DevicePath.h>
25#include <Protocol/SimpleFileSystem.h>
26
27#define OC_CUSTOM_FS_HANDLE ((EFI_HANDLE)(UINTN) 0x2007C5F5U)
28
32#define OC_CUSTOM_BOOT_DEVICE_PATH_GUID \
33 { 0xd6f263f9, 0x0b19, 0x4670, \
34 { 0xb0, 0xa4, 0x9d, 0x95, 0x9f, 0x58, 0xdf, 0x65 } }
35
39#define OC_ENTRY_PROTOCOL_DEVICE_PATH_GUID \
40 { 0x669bf063, 0x78c1, 0x4c29, \
41 { 0x93, 0x34, 0x2f, 0xf0, 0x15, 0xfe, 0xa2, 0xfe } }
42
43#pragma pack(1)
44
48typedef PACKED struct {
49 VENDOR_DEVICE_PATH Hdr;
50 FILEPATH_DEVICE_PATH EntryName;
52
57typedef PACKED struct {
58 VENDOR_DEVICE_PATH Hdr;
59 EFI_GUID Partuuid;
60 FILEPATH_DEVICE_PATH EntryName;
62
63//
64// Ideally, a variant of FILEPATH_DEVICE_PATH will be used with PathName as a
65// flexible array. Such cannot be used for declarations, so provide an
66// alternative.
67//
68typedef PACKED struct {
69 VENDOR_DEVICE_PATH Header;
70 EFI_DEVICE_PATH_PROTOCOL EntryName;
72
73//
74// Version not including first char of path name.
75//
76typedef PACKED struct {
77 VENDOR_DEVICE_PATH Header;
78 EFI_GUID Partuuid;
79 EFI_DEVICE_PATH_PROTOCOL EntryName;
81
82#pragma pack()
83
87#define SIZE_OF_OC_CUSTOM_BOOT_DEVICE_PATH \
88 (sizeof (VENDOR_DEVICE_PATH) + SIZE_OF_FILEPATH_DEVICE_PATH)
89
93#define SIZE_OF_OC_ENTRY_PROTOCOL_DEVICE_PATH \
94 (sizeof (VENDOR_DEVICE_PATH) + sizeof (EFI_GUID) + SIZE_OF_FILEPATH_DEVICE_PATH)
95
96//
97// Max. supported Apple version string size
98//
99#define OC_APPLE_VERSION_MAX_SIZE (16)
100
101typedef struct {
102 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
104 EFI_HANDLE BlockIoHandle;
106
107typedef struct {
108 EFI_HANDLE Device;
111 EFI_DEVICE_PATH_PROTOCOL *HdDevicePath;
112 EFI_DEVICE_PATH_PROTOCOL *BootDevicePath;
113 BOOLEAN IsExternal;
116
126
127EFI_STATUS
129 IN EFI_HANDLE Handle,
130 IN UINT32 Policy,
131 OUT BOOLEAN *External OPTIONAL
132 );
133
134EFI_DEVICE_PATH_PROTOCOL *
136 IN OUT INTERNAL_DMG_LOAD_CONTEXT *Context,
137 IN OC_DMG_LOADING_SUPPORT DmgLoading,
138 IN OC_APPLE_DISK_IMAGE_PRELOAD_CONTEXT *DmgPreloadContext
139 );
140
141VOID
143 IN INTERNAL_DMG_LOAD_CONTEXT *DmgLoadContext
144 );
145
146CHAR16 *
148 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem,
149 IN CONST CHAR16 *BootDirectoryName,
150 IN CONST CHAR16 *LabelFilename
151 );
152
153CHAR8 *
155 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem,
156 IN CONST CHAR16 *BootDirectoryName
157 );
158
159EFI_STATUS
161 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem,
162 IN CONST CHAR16 *DirectoryName,
163 IN CONST CHAR16 *LabelFilename,
164 OUT VOID **ImageData,
165 OUT UINT32 *DataSize
166 );
167
168EFI_STATUS
170 IN EFI_HANDLE Device,
171 OUT EFI_DEVICE_PATH_PROTOCOL **FilePath,
172 IN BOOLEAN Basic
173 );
174
175EFI_STATUS
177 IN OC_PICKER_CONTEXT *Context,
178 IN OC_BOOT_ENTRY *BootEntry,
179 IN EFI_HANDLE ParentHandle,
180 OUT EFI_HANDLE *EntryHandle,
181 OUT INTERNAL_DMG_LOAD_CONTEXT *DmgLoadContext,
182 OUT VOID **CustomFreeContext
183 );
184
185UINT16 *
187 IN EFI_GUID *BootVariableGuid,
188 IN BOOLEAN BlacklistAppleUpdate,
189 OUT UINTN *BootOrderCount,
190 IN BOOLEAN UseBootNextOnly
191 );
192
193VOID
195 IN CONST UINT16 *BootOrder,
196 IN EFI_GUID *BootGuid,
197 IN UINTN BootOrderCount
198 );
199
200EFI_DEVICE_PATH_PROTOCOL *
202 IN EFI_LOAD_OPTION *LoadOption,
203 IN UINTN LoadOptionSize
204 );
205
216EFI_STATUS
218 IN OUT OC_BOOT_CONTEXT *BootContext,
219 IN OUT OC_BOOT_FILESYSTEM *FileSystem,
220 IN OC_PICKER_ENTRY *CustomEntry,
221 IN BOOLEAN IsBootEntryProtocol
222 );
223
232EFI_STATUS
234 IN OC_BOOT_CONTEXT *BootContext,
235 IN OUT OC_BOOT_ENTRY *BootEntry
236 );
237
238BOOLEAN
240 IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
241 );
242
259 IN OC_BOOT_CONTEXT *BootContext,
260 IN EFI_HANDLE FileSystemHandle,
261 IN BOOLEAN LazyScan,
262 OUT BOOLEAN *AlreadySeen OPTIONAL
263 );
264
272 IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
273 );
274
282 IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
283 );
284
285EFI_STATUS
287 IN OC_PICKER_CONTEXT *PickerContext,
288 IN OC_PRIVILEGE_LEVEL Level
289 );
290
291#endif // BOOT_MANAGEMENET_INTERNAL_H
EFI_DEVICE_PATH_PROTOCOL * InternalLoadDmg(IN OUT INTERNAL_DMG_LOAD_CONTEXT *Context, IN OC_DMG_LOADING_SUPPORT DmgLoading, IN OC_APPLE_DISK_IMAGE_PRELOAD_CONTEXT *DmgPreloadContext)
EFI_STATUS InternalRunRequestPrivilege(IN OC_PICKER_CONTEXT *PickerContext, IN OC_PRIVILEGE_LEVEL Level)
EFI_STATUS InternalGetRecoveryOsBooter(IN EFI_HANDLE Device, OUT EFI_DEVICE_PATH_PROTOCOL **FilePath, IN BOOLEAN Basic)
OC_BOOT_FILESYSTEM * InternalFileSystemForHandle(IN OC_BOOT_CONTEXT *BootContext, IN EFI_HANDLE FileSystemHandle, IN BOOLEAN LazyScan, OUT BOOLEAN *AlreadySeen OPTIONAL)
CONST OC_ENTRY_PROTOCOL_DEVICE_PATH * InternalGetOcEntryProtocolDevPath(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath)
FILEPATH_DEVICE_PATH EntryName
PACKED struct @90 OC_ENTRY_PROTOCOL_DEVICE_PATH
EFI_STATUS InternalGetAppleImage(IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *DirectoryName, IN CONST CHAR16 *LabelFilename, OUT VOID **ImageData, OUT UINT32 *DataSize)
EFI_STATUS InternalLoadBootEntry(IN OC_PICKER_CONTEXT *Context, IN OC_BOOT_ENTRY *BootEntry, IN EFI_HANDLE ParentHandle, OUT EFI_HANDLE *EntryHandle, OUT INTERNAL_DMG_LOAD_CONTEXT *DmgLoadContext, OUT VOID **CustomFreeContext)
INTERNAL_ENTRY_VISIBILITY
@ BootEntryAuxiliary
@ BootEntryDisabled
CHAR16 * InternalGetAppleDiskLabel(IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *BootDirectoryName, IN CONST CHAR16 *LabelFilename)
VENDOR_DEVICE_PATH Hdr
EFI_STATUS InternalDescribeBootEntry(IN OC_BOOT_CONTEXT *BootContext, IN OUT OC_BOOT_ENTRY *BootEntry)
PACKED struct @89 OC_CUSTOM_BOOT_DEVICE_PATH
UINT16 * InternalGetBootOrderForBooting(IN EFI_GUID *BootVariableGuid, IN BOOLEAN BlacklistAppleUpdate, OUT UINTN *BootOrderCount, IN BOOLEAN UseBootNextOnly)
EFI_DEVICE_PATH_PROTOCOL * InternalGetBootOptionPath(IN EFI_LOAD_OPTION *LoadOption, IN UINTN LoadOptionSize)
EFI_STATUS InternalAddBootEntryFromCustomEntry(IN OUT OC_BOOT_CONTEXT *BootContext, IN OUT OC_BOOT_FILESYSTEM *FileSystem, IN OC_PICKER_ENTRY *CustomEntry, IN BOOLEAN IsBootEntryProtocol)
PACKED struct @92 OC_ENTRY_PROTOCOL_DEVICE_PATH_DECL
VOID InternalDebugBootEnvironment(IN CONST UINT16 *BootOrder, IN EFI_GUID *BootGuid, IN UINTN BootOrderCount)
BOOLEAN InternalIsAppleLegacyLoadApp(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath)
CHAR8 * InternalGetContentFlavour(IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *BootDirectoryName)
CONST OC_CUSTOM_BOOT_DEVICE_PATH * InternalGetOcCustomDevPath(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath)
PACKED struct @91 OC_CUSTOM_BOOT_DEVICE_PATH_DECL
EFI_STATUS InternalCheckScanPolicy(IN EFI_HANDLE Handle, IN UINT32 Policy, OUT BOOLEAN *External OPTIONAL)
VOID InternalUnloadDmg(IN INTERNAL_DMG_LOAD_CONTEXT *DmgLoadContext)
EFI_GUID Partuuid
VENDOR_DEVICE_PATH Header
DMG_FILEPATH_DEVICE_PATH FilePath
OC_DMG_LOADING_SUPPORT
OC_PRIVILEGE_LEVEL
APPLE_EVENT_HANDLE Handle
Definition OcTypingLib.h:45
EFI_DEVICE_PATH_PROTOCOL * BootDevicePath
EFI_DEVICE_PATH_PROTOCOL * HdDevicePath
OC_APPLE_DISK_IMAGE_CONTEXT * DmgContext
EFI_DEVICE_PATH_PROTOCOL * DevicePath