CloverBootloader/FSInject/FSInject.h
2019-09-03 12:58:42 +03:00

67 lines
2.3 KiB
C

/** @file
Module Name:
FSInject.h
Definitions for private EFI_SIMPLE_FILE_SYSTEM_PROTOCOL and EFI_FILE_PROTOCOL implementations.
initial version - dmazar
**/
#ifndef __FSInject_H__
#define __FSInject_H__
/**
* FSInjection EFI_SIMPLE_FILE_SYSTEM_PROTOCOL private structure
*/
typedef struct {
UINT64 Signature; // identification signature
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL FS; // public EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
EFI_HANDLE *TgtHandle; // target handle we are attached to
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *TgtFS; // target FS we are replacing
CHAR16 *TgtDir; // target dir where injection will be done
EFI_HANDLE *SrcHandle; // handle where injection dir is
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SrcFS; // FS with injection dir we are replacing
CHAR16 *SrcDir; // injection dir that contains files that will be injected into TgtDir
FSI_STRING_LIST *Blacklist; // linked list of file names to be blocked on target volume
FSI_STRING_LIST *ForceLoadKexts;// linked list of kext plists
} FSI_SIMPLE_FILE_SYSTEM_PROTOCOL;
/** Signature for FSI_SIMPLE_FILE_SYSTEM_PROTOCOL */
#define FSI_SIMPLE_FILE_SYSTEM_PROTOCOL_SIGNATURE SIGNATURE_32('f', 'i', 'f', 's')
/** Macro to access FSI_SIMPLE_FILE_SYSTEM_PROTOCOL from public FS */
#define FSI_FROM_SIMPLE_FILE_SYSTEM(a) CR (a, FSI_SIMPLE_FILE_SYSTEM_PROTOCOL, FS, FSI_SIMPLE_FILE_SYSTEM_PROTOCOL_SIGNATURE)
/**
* FSInjection EFI_FILE_PROTOCOL private structure.
*/
typedef struct {
UINT64 Signature; // identification signature
EFI_FILE_PROTOCOL FP; // public EFI_FILE_PROTOCOL
FSI_SIMPLE_FILE_SYSTEM_PROTOCOL *FSI_FS; // FS protocol that created this structure
CHAR16 *FName; // file name this structure represents
BOOLEAN IsDir; // true after GetInfo if this file is directory
EFI_FILE_PROTOCOL *TgtFP; // target EFI_FILE_PROTOCOL
EFI_FILE_PROTOCOL *SrcFP; // EFI_FILE_PROTOCOL from injection volume
BOOLEAN FromTgt; // TRUE if file is opened from original target volume, FALSE if from injection volume
} FSI_FILE_PROTOCOL;
/** Signature for FSI_FILE_PROTOCOL */
#define FSI_FILE_PROTOCOL_SIGNATURE SIGNATURE_32('f', 'i', 'f', 'p')
/** Macro to access FSI_FILE_PROTOCOL from public FP */
#define FSI_FROM_FILE_PROTOCOL(a) CR (a, FSI_FILE_PROTOCOL, FP, FSI_FILE_PROTOCOL_SIGNATURE)
#endif