X-Git-Url: https://code.delx.au/refind/blobdiff_plain/cf4d4184e6a83cf0784b5f95c1b5e4868384ae0b..b04a842814ccc991ed93a52acbd7ac27768be686:/refind/global.h?ds=sidebyside diff --git a/refind/global.h b/refind/global.h index d7a8821..d35f9b0 100644 --- a/refind/global.h +++ b/refind/global.h @@ -75,7 +75,8 @@ #define TAG_MEMTEST (15) #define TAG_GDISK (16) #define TAG_NETBOOT (17) -#define NUM_TOOLS (18) +#define TAG_CSR_ROTATE (18) +#define NUM_TOOLS (19) #define NUM_SCAN_OPTIONS 10 @@ -147,25 +148,6 @@ #define ICON_SIZE_SMALL 1 #define ICON_SIZE_BIG 2 -// The constants related to Apple's System Integrity Protection (SIP).... -#define CSR_GUID { 0x7c436110, 0xab2a, 0x4bbb, { 0xa8, 0x80, 0xfe, 0x41, 0x99, 0x5c, 0x9f, 0x82 } }; -// These codes are returned in the first byte of the csr-active-config variable -#define CSR_ALLOW_UNTRUSTED_KEXTS 0x01 -#define CSR_ALLOW_UNRESTRICTED_FS 0x02 -#define CSR_ALLOW_TASK_FOR_PID 0x04 -#define CSR_ALLOW_KERNEL_DEBUGGER 0x08 -#define CSR_ALLOW_APPLE_INTERNAL 0x10 -#define CSR_ALLOW_UNRESTRICTED_DTRACE 0x20 -#define CSR_ALLOW_UNRESTRICTED_NVRAM 0x40 -// Some summaries.... -#define SIP_ENABLED CSR_ALLOW_APPLE_INTERNAL -#define SIP_DISABLED (CSR_ALLOW_UNRESTRICTED_NVRAM | \ - CSR_ALLOW_UNRESTRICTED_DTRACE | \ - CSR_ALLOW_APPLE_INTERNAL | \ - CSR_ALLOW_TASK_FOR_PID | \ - CSR_ALLOW_UNRESTRICTED_FS | \ - CSR_ALLOW_UNTRUSTED_KEXTS) - // Names of binaries that can manage MOKs.... #define MOK_NAMES L"MokManager.efi,HashTool.efi,HashTool-signed.efi,KeyTool.efi,KeyTool-signed.efi" // Directories to search for these MOK-managing programs. Note that SelfDir is @@ -176,6 +158,13 @@ // Files that may be Windows recovery files #define WINDOWS_RECOVERY_FILES L"EFI\\Microsoft\\Boot\\LrsBootmgr.efi,Recovery:\\EFI\\BOOT\\bootx64.efi,Recovery:\\EFI\\BOOT\\bootia32.efi" +// Filename patterns that identify EFI boot loaders. Note that a single case (either L"*.efi" or +// L"*.EFI") is fine for most systems; but Gigabyte's buggy Hybrid EFI does a case-sensitive +// comparison when it should do a case-insensitive comparison, so I'm doubling this up. It does +// no harm on other computers, AFAIK. In theory, every case variation should be done for +// completeness, but that's ridiculous.... +#define LOADER_MATCH_PATTERNS L"*.efi,*.EFI" + // Definitions for the "hideui" option in refind.conf #define HIDEUI_FLAG_NONE (0x0000) #define HIDEUI_FLAG_BANNER (0x0001) @@ -203,6 +192,11 @@ // global types +typedef struct _uint32_list { + UINT32 Value; + struct _uint32_list *Next; +} UINT32_LIST; + typedef struct { UINT8 Flags; UINT8 StartCHS1; @@ -325,6 +319,7 @@ typedef struct { CHAR16 *DriverDirs; CHAR16 *IconsDir; CHAR16 *SpoofOSXVersion; + UINT32_LIST *CsrValues; UINTN ShowTools[NUM_TOOLS]; CHAR8 ScanFor[NUM_SCAN_OPTIONS]; // codes of types of loaders for which to scan } REFIT_CONFIG; @@ -352,6 +347,12 @@ EFI_STATUS StartEFIImageList(IN EFI_DEVICE_PATH **DevicePaths, OUT UINTN *ErrorInStep, IN BOOLEAN Verbose, IN BOOLEAN IsDriver); +EFI_STATUS StartEFIImage(IN EFI_DEVICE_PATH *DevicePath, + IN CHAR16 *LoadOptions, IN UINTN LoaderType, + IN CHAR16 *ImageTitle, IN CHAR8 OSType, + OUT UINTN *ErrorInStep, + IN BOOLEAN Verbose, + IN BOOLEAN IsDriver); LOADER_ENTRY *InitializeLoaderEntry(IN LOADER_ENTRY *Entry); REFIT_MENU_SCREEN *InitializeSubScreen(IN LOADER_ENTRY *Entry); VOID GenerateSubScreen(LOADER_ENTRY *Entry, IN REFIT_VOLUME *Volume, IN BOOLEAN GenerateReturn);