mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-10 14:23:31 +01:00
75 lines
2.6 KiB
C
75 lines
2.6 KiB
C
|
/** @file
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
FSInjectProtocol.h
|
||
|
|
||
|
FSInject driver - Replaces EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on target volume
|
||
|
and injects content of specified source folder on source (injection) volume
|
||
|
into target folder in target volume.
|
||
|
|
||
|
initial version - dmazar
|
||
|
|
||
|
**/
|
||
|
|
||
|
#ifndef __FSInjectProtocol_H__
|
||
|
#define __FSInjectProtocol_H__
|
||
|
|
||
|
|
||
|
/** String list entry. */
|
||
|
typedef struct {
|
||
|
LIST_ENTRY List; // must be first in struct
|
||
|
CHAR16 String[1];
|
||
|
} FSI_STRING_LIST_ENTRY;
|
||
|
|
||
|
typedef FSI_STRING_LIST_ENTRY FSI_STRING_LIST;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* FSINJECTION_PROTOCOL.Install() type definition
|
||
|
* @param TgtHandle target volume handler
|
||
|
* @param TgtDir dir on target volume where content of SrcDir will be injected
|
||
|
* @param SrcHandle volume where SrcDir exists
|
||
|
* @param SrcDir dir whose content will be injected
|
||
|
* @param Blacklist list of file names that will be blocked on target volume; caller should not release allocated list memory after this call.
|
||
|
* @param ForceLoadKexts list of kexts (paths to their Info.plists, like L"\\ATI5000Controller.kext\\Contents\\Info.plist")
|
||
|
* that we'll force to be loaded by boot.efi by changing OSBundleRequired to Root
|
||
|
*/
|
||
|
typedef EFI_STATUS (EFIAPI * FSINJECTION_INSTALL)(IN EFI_HANDLE TgtHandle, IN CHAR16 *TgtDir, IN EFI_HANDLE SrcHandle, IN CHAR16 *SrcDir, IN FSI_STRING_LIST *Blacklist, IN FSI_STRING_LIST *ForceLoadKexts);
|
||
|
|
||
|
/**
|
||
|
* FSINJECTION_PROTOCOL.CreateStringList() type definition
|
||
|
* Creates new string list. List can be populated with FSINJECTION_PROTOCOL.AddStringToList()
|
||
|
* @return Created list or NULL if there is no memory.
|
||
|
*/
|
||
|
typedef FSI_STRING_LIST* (EFIAPI *FSINJECTION_CREATE_STRING_LIST) (VOID);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* FSINJECTION_PROTOCOL.AddStringToList() type definition
|
||
|
* @param List List created with CreateStringList()
|
||
|
* @param String String to add
|
||
|
* @return List if ok, or NULL if no memory
|
||
|
*/
|
||
|
typedef FSI_STRING_LIST* (EFIAPI *FSINJECTION_ADD_STRING_TO_LIST) (FSI_STRING_LIST *List, CHAR16 *String);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* FSINJECTION_PROTOCOL that can be used to install FSInjection to some existing volume handle
|
||
|
*/
|
||
|
typedef struct _FSINJECTION_PROTOCOL {
|
||
|
FSINJECTION_INSTALL Install; // installs FSInjection EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
|
||
|
FSINJECTION_CREATE_STRING_LIST CreateStringList; // creates new string list
|
||
|
FSINJECTION_ADD_STRING_TO_LIST AddStringToList; // adds list to string
|
||
|
} FSINJECTION_PROTOCOL;
|
||
|
|
||
|
#define FSINJECTION_PROTOCOL_GUID \
|
||
|
{ \
|
||
|
0x3F048284, 0x6D4C, 0x11E1, {0xA4, 0xD7, 0x37, 0xE3, 0x48, 0x24, 0x01, 0x9B } \
|
||
|
}
|
||
|
|
||
|
/** FSINJECTION_PROTOCOL GUID */
|
||
|
extern EFI_GUID gFSInjectProtocolGuid;
|
||
|
|
||
|
|
||
|
#endif
|