20#include <Guid/FileInfo.h>
22#include <IndustryStandard/Mbr.h>
24#include <Protocol/SimpleFileSystem.h>
25#include <Protocol/DevicePath.h>
26#include <Protocol/BlockIo.h>
27#include <Protocol/BlockIo2.h>
32#define OC_MAX_VOLUME_LABEL_SIZE 64
37#define OC_MAX_CONTENT_FLAVOUR_SIZE 64
52EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *
54 IN EFI_HANDLE DeviceHandle OPTIONAL,
55 IN EFI_DEVICE_PATH_PROTOCOL *
FilePath OPTIONAL
68 IN EFI_HANDLE DeviceHandle OPTIONAL,
69 IN EFI_DEVICE_PATH_PROTOCOL *
FilePath OPTIONAL
79EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *
93 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem
121 IN CONST EFI_FILE_PROTOCOL *Directory,
122 OUT EFI_FILE_PROTOCOL **NewHandle,
123 IN CONST CHAR16 *FileName,
124 IN CONST UINT64 OpenMode,
125 IN CONST UINT64 Attributes
138 IN CONST EFI_FILE_PROTOCOL *Directory,
139 IN CONST CHAR16 *FileName
154 IN EFI_FILE_PROTOCOL *Directory,
155 IN CONST CHAR16 *FileName
172 IN CONST EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem,
174 OUT UINT32 *FileSize OPTIONAL,
175 IN CONST UINT32 MaxFileSize OPTIONAL
192 IN CONST EFI_FILE_PROTOCOL *RootDirectory,
194 OUT UINT32 *FileSize OPTIONAL,
195 IN UINT32 MaxFileSize OPTIONAL
209 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem,
226 IN EFI_FILE_PROTOCOL *File,
245 IN EFI_FILE_PROTOCOL *WritableFs OPTIONAL,
246 IN CONST CHAR16 *FileName,
262 IN EFI_FILE_PROTOCOL *File,
264 OUT UINT32 *BufferSize
290 IN EFI_FILE_PROTOCOL *Directory,
291 IN CHAR16 *FileNameStartsWith OPTIONAL,
292 OUT EFI_FILE_INFO **FileInfo
306 IN EFI_FILE_PROTOCOL *File,
307 IN BOOLEAN IsDirectory
332 EFI_FILE_HANDLE Directory,
333 EFI_FILE_INFO *FileInfo,
335 VOID *Context OPTIONAL
352 IN EFI_FILE_HANDLE Directory,
354 IN OUT VOID *Context OPTIONAL
369 IN EFI_FILE_PROTOCOL *File,
370 IN EFI_GUID *InformationType,
371 IN UINTN MinFileInfoSize,
372 OUT UINTN *RealFileInfoSize OPTIONAL
385 IN EFI_FILE_PROTOCOL *File,
399 IN EFI_FILE_PROTOCOL *File,
412 IN EFI_FILE_PROTOCOL *Fs
424 IN OUT EFI_FILE_PROTOCOL **WritableFs
436 OUT EFI_FILE_PROTOCOL **FileSystem
455 IN EFI_HANDLE FileSystemHandle,
456 IN CONST EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath,
457 OUT EFI_FILE_PROTOCOL **File,
481 IN OUT EFI_DEVICE_PATH_PROTOCOL **
FilePath,
482 OUT EFI_FILE_PROTOCOL **File,
494EFI_DEVICE_PATH_PROTOCOL *
496 IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath
508 IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath
519 IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath
531 IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath
545 IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath,
547 OUT UINTN *BufferSize
559EFI_DEVICE_PATH_PROTOCOL *
561 IN CONST EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath,
562 OUT UINTN *EspDevicePathSize,
563 OUT EFI_HANDLE *EspDeviceHandle
588 IN EFI_HANDLE DiskHandle,
589 IN BOOLEAN UseBlockIo2
634 EFI_PARTITION_ENTRY FirstEntry[];
647 IN EFI_HANDLE DiskHandle,
648 IN BOOLEAN UseBlockIo2
659CONST EFI_PARTITION_ENTRY *
661 IN EFI_HANDLE FsHandle
674 IN EFI_HANDLE DiskHandle,
675 IN BOOLEAN CheckPartitions
688 IN EFI_HANDLE PartitionHandle,
689 OUT UINT8 *PartitionIndex
702 IN EFI_HANDLE DiskHandle,
703 IN UINT8 PartitionIndex
715EFI_DEVICE_PATH_PROTOCOL *
717 IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath,
718 OUT UINTN *PartitionDevicePathSize,
719 OUT EFI_HANDLE *PartitionDeviceHandle
730EFI_DEVICE_PATH_PROTOCOL *
732 IN EFI_GUID *FileGuid
747 IN EFI_GUID *FileGuid,
748 IN UINT8 SectionType,
DMG_FILEPATH_DEVICE_PATH FilePath
DMG_SIZE_DEVICE_PATH Size
EFI_STATUS OcEnsureDirectoryFile(IN EFI_FILE_PROTOCOL *File, IN BOOLEAN IsDirectory)
EFI_HANDLE OcPartitionGetPartitionHandle(IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath)
EFI_STATUS OcDiskGetMbrPartitionIndex(IN EFI_HANDLE PartitionHandle, OUT UINT8 *PartitionIndex)
EFI_HANDLE OcPartitionGetDiskHandle(IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath)
EFI_STATUS EFIAPI OcOpenFileByDevicePath(IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath, OUT EFI_FILE_PROTOCOL **File, IN UINT64 OpenMode, IN UINT64 Attributes)
VOID * OcReadFileFromDirectory(IN CONST EFI_FILE_PROTOCOL *RootDirectory, IN CONST CHAR16 *FilePath, OUT UINT32 *FileSize OPTIONAL, IN UINT32 MaxFileSize OPTIONAL)
EFI_DEVICE_PATH_PROTOCOL * OcDiskGetDevicePath(IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath)
EFI_DEVICE_PATH_PROTOCOL * OcDiskFindSystemPartitionPath(IN CONST EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath, OUT UINTN *EspDevicePathSize, OUT EFI_HANDLE *EspDeviceHandle)
EFI_STATUS OcDiskWrite(IN OC_DISK_CONTEXT *Context, IN UINT64 Lba, IN UINTN BufferSize, IN VOID *Buffer)
EFI_STATUS OcDiskReadElTorito(IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath, OUT UINT8 **Buffer, OUT UINTN *BufferSize)
BOOLEAN OcIsDiskCdRom(IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath)
CHAR16 * OcGetVolumeLabel(IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem)
EFI_STATUS OcGetFileSize(IN EFI_FILE_PROTOCOL *File, OUT UINT32 *Size)
EFI_STATUS OcDiskRead(IN OC_DISK_CONTEXT *Context, IN UINT64 Lba, IN UINTN BufferSize, OUT VOID *Buffer)
EFI_STATUS OcReadFileSize(IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *FilePath, OUT UINT32 *Size)
VOID * OcGetFileInfo(IN EFI_FILE_PROTOCOL *File, IN EFI_GUID *InformationType, IN UINTN MinFileInfoSize, OUT UINTN *RealFileInfoSize OPTIONAL)
EFI_STATUS OcGetFileModificationTime(IN EFI_FILE_PROTOCOL *File, OUT EFI_TIME *Time)
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL * OcLocateFileSystemByGuid(IN CONST GUID *Guid)
BOOLEAN OcIsWritableFileSystem(IN EFI_FILE_PROTOCOL *Fs)
EFI_DEVICE_PATH_PROTOCOL * OcCreateFvFileDevicePath(IN EFI_GUID *FileGuid)
CONST OC_PARTITION_ENTRIES * OcGetDiskPartitions(IN EFI_HANDLE DiskHandle, IN BOOLEAN UseBlockIo2)
EFI_FILE_PROTOCOL * OcLocateRootVolume(IN EFI_HANDLE DeviceHandle OPTIONAL, IN EFI_DEVICE_PATH_PROTOCOL *FilePath OPTIONAL)
EFI_STATUS OcDiskInitializeContext(OUT OC_DISK_CONTEXT *Context, IN EFI_HANDLE DiskHandle, IN BOOLEAN UseBlockIo2)
EFI_DEVICE_PATH_PROTOCOL * OcDiskFindActiveMbrPartitionPath(IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath, OUT UINTN *PartitionDevicePathSize, OUT EFI_HANDLE *PartitionDeviceHandle)
VOID OcDirectorySeachContextInit(IN OUT DIRECTORY_SEARCH_CONTEXT *Context)
EFI_STATUS OcDeleteFile(IN EFI_FILE_PROTOCOL *Directory, IN CONST CHAR16 *FileName)
EFI_STATUS OcGetFileData(IN EFI_FILE_PROTOCOL *File, IN UINT32 Position, IN UINT32 Size, OUT UINT8 *Buffer)
MASTER_BOOT_RECORD * OcGetDiskMbrTable(IN EFI_HANDLE DiskHandle, IN BOOLEAN CheckPartitions)
VOID * OcReadFile(IN CONST EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *FilePath, OUT UINT32 *FileSize OPTIONAL, IN CONST UINT32 MaxFileSize OPTIONAL)
BOOLEAN OcFileExists(IN CONST EFI_FILE_PROTOCOL *Directory, IN CONST CHAR16 *FileName)
EFI_STATUS OcGetNewestFileFromDirectory(IN OUT DIRECTORY_SEARCH_CONTEXT *Context, IN EFI_FILE_PROTOCOL *Directory, IN CHAR16 *FileNameStartsWith OPTIONAL, OUT EFI_FILE_INFO **FileInfo)
EFI_STATUS OcScanDirectory(IN EFI_FILE_HANDLE Directory, IN OC_PROCESS_DIRECTORY_ENTRY ProcessEntry, IN OUT VOID *Context OPTIONAL)
EFI_STATUS OcSetFileData(IN EFI_FILE_PROTOCOL *WritableFs OPTIONAL, IN CONST CHAR16 *FileName, IN CONST VOID *Buffer, IN UINT32 Size)
EFI_STATUS OcFindWritableOcFileSystem(OUT EFI_FILE_PROTOCOL **FileSystem)
CONST EFI_PARTITION_ENTRY * OcGetGptPartitionEntry(IN EFI_HANDLE FsHandle)
VOID * OcReadFvFileSection(IN EFI_GUID *FileGuid, IN UINT8 SectionType, OUT UINT32 *FileSize)
EFI_STATUS OcDiskMarkMbrPartitionActive(IN EFI_HANDLE DiskHandle, IN UINT8 PartitionIndex)
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL * OcLocateFileSystem(IN EFI_HANDLE DeviceHandle OPTIONAL, IN EFI_DEVICE_PATH_PROTOCOL *FilePath OPTIONAL)
EFI_STATUS OcAllocateCopyFileData(IN EFI_FILE_PROTOCOL *File, OUT UINT8 **Buffer, OUT UINT32 *BufferSize)
EFI_STATUS OcSafeFileOpen(IN CONST EFI_FILE_PROTOCOL *Directory, OUT EFI_FILE_PROTOCOL **NewHandle, IN CONST CHAR16 *FileName, IN CONST UINT64 OpenMode, IN CONST UINT64 Attributes)
EFI_STATUS(* OC_PROCESS_DIRECTORY_ENTRY)(EFI_FILE_HANDLE Directory, EFI_FILE_INFO *FileInfo, UINTN FileInfoSize, VOID *Context OPTIONAL)
EFI_STATUS EFIAPI OcOpenFileByRemainingDevicePath(IN EFI_HANDLE FileSystemHandle, IN CONST EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath, OUT EFI_FILE_PROTOCOL **File, IN UINT64 OpenMode, IN UINT64 Attributes)
EFI_STATUS OcFindWritableFileSystem(IN OUT EFI_FILE_PROTOCOL **WritableFs)
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
EFI_BLOCK_IO_PROTOCOL * BlockIo
EFI_BLOCK_IO2_PROTOCOL * BlockIo2
UINT32 PartitionEntrySize