OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
OcFileLib.h
Go to the documentation of this file.
1
15#ifndef OC_FILE_LIB_H
16#define OC_FILE_LIB_H
17
18// Include the abstracted protocol for its definitions
19
20#include <Guid/FileInfo.h>
21
22#include <IndustryStandard/Mbr.h>
23
24#include <Protocol/SimpleFileSystem.h>
25#include <Protocol/DevicePath.h>
26#include <Protocol/BlockIo.h>
27#include <Protocol/BlockIo2.h>
28
32#define OC_MAX_VOLUME_LABEL_SIZE 64
33
37#define OC_MAX_CONTENT_FLAVOUR_SIZE 64
38
39typedef struct {
43
52EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *
54 IN EFI_HANDLE DeviceHandle OPTIONAL,
55 IN EFI_DEVICE_PATH_PROTOCOL *FilePath OPTIONAL
56 );
57
66EFI_FILE_PROTOCOL *
68 IN EFI_HANDLE DeviceHandle OPTIONAL,
69 IN EFI_DEVICE_PATH_PROTOCOL *FilePath OPTIONAL
70 );
71
79EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *
81 IN CONST GUID *Guid
82 );
83
91CHAR16 *
93 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem
94 );
95
119EFI_STATUS
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
126 );
127
136BOOLEAN
138 IN CONST EFI_FILE_PROTOCOL *Directory,
139 IN CONST CHAR16 *FileName
140 );
141
152EFI_STATUS
154 IN EFI_FILE_PROTOCOL *Directory,
155 IN CONST CHAR16 *FileName
156 );
157
170VOID *
172 IN CONST EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem,
173 IN CONST CHAR16 *FilePath,
174 OUT UINT32 *FileSize OPTIONAL,
175 IN CONST UINT32 MaxFileSize OPTIONAL
176 );
177
190VOID *
192 IN CONST EFI_FILE_PROTOCOL *RootDirectory,
193 IN CONST CHAR16 *FilePath,
194 OUT UINT32 *FileSize OPTIONAL,
195 IN UINT32 MaxFileSize OPTIONAL
196 );
197
207EFI_STATUS
209 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem,
210 IN CONST CHAR16 *FilePath,
211 OUT UINT32 *Size
212 );
213
224EFI_STATUS
226 IN EFI_FILE_PROTOCOL *File,
227 IN UINT32 Position,
228 IN UINT32 Size,
229 OUT UINT8 *Buffer
230 );
231
243EFI_STATUS
245 IN EFI_FILE_PROTOCOL *WritableFs OPTIONAL,
246 IN CONST CHAR16 *FileName,
247 IN CONST VOID *Buffer,
248 IN UINT32 Size
249 );
250
260EFI_STATUS
262 IN EFI_FILE_PROTOCOL *File,
263 OUT UINT8 **Buffer,
264 OUT UINT32 *BufferSize
265 );
266
272VOID
274 IN OUT DIRECTORY_SEARCH_CONTEXT *Context
275 );
276
287EFI_STATUS
289 IN OUT DIRECTORY_SEARCH_CONTEXT *Context,
290 IN EFI_FILE_PROTOCOL *Directory,
291 IN CHAR16 *FileNameStartsWith OPTIONAL,
292 OUT EFI_FILE_INFO **FileInfo
293 );
294
304EFI_STATUS
306 IN EFI_FILE_PROTOCOL *File,
307 IN BOOLEAN IsDirectory
308 );
309
329typedef
330EFI_STATUS
332 EFI_FILE_HANDLE Directory,
333 EFI_FILE_INFO *FileInfo,
334 UINTN FileInfoSize,
335 VOID *Context OPTIONAL
336 );
337
350EFI_STATUS
352 IN EFI_FILE_HANDLE Directory,
353 IN OC_PROCESS_DIRECTORY_ENTRY ProcessEntry,
354 IN OUT VOID *Context OPTIONAL
355 );
356
367VOID *
369 IN EFI_FILE_PROTOCOL *File,
370 IN EFI_GUID *InformationType,
371 IN UINTN MinFileInfoSize,
372 OUT UINTN *RealFileInfoSize OPTIONAL
373 );
374
383EFI_STATUS
385 IN EFI_FILE_PROTOCOL *File,
386 OUT UINT32 *Size
387 );
388
397EFI_STATUS
399 IN EFI_FILE_PROTOCOL *File,
400 OUT EFI_TIME *Time
401 );
402
410BOOLEAN
412 IN EFI_FILE_PROTOCOL *Fs
413 );
414
422EFI_STATUS
424 IN OUT EFI_FILE_PROTOCOL **WritableFs
425 );
426
434EFI_STATUS
436 OUT EFI_FILE_PROTOCOL **FileSystem
437 );
438
452EFI_STATUS
453EFIAPI
455 IN EFI_HANDLE FileSystemHandle,
456 IN CONST EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath,
457 OUT EFI_FILE_PROTOCOL **File,
458 IN UINT64 OpenMode,
459 IN UINT64 Attributes
460 );
461
478EFI_STATUS
479EFIAPI
481 IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath,
482 OUT EFI_FILE_PROTOCOL **File,
483 IN UINT64 OpenMode,
484 IN UINT64 Attributes
485 );
486
494EFI_DEVICE_PATH_PROTOCOL *
496 IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath
497 );
498
506EFI_HANDLE
508 IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath
509 );
510
517EFI_HANDLE
519 IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath
520 );
521
529BOOLEAN
531 IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath
532 );
533
543EFI_STATUS
545 IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath,
546 OUT UINT8 **Buffer,
547 OUT UINTN *BufferSize
548 );
549
559EFI_DEVICE_PATH_PROTOCOL *
561 IN CONST EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath,
562 OUT UINTN *EspDevicePathSize,
563 OUT EFI_HANDLE *EspDeviceHandle
564 );
565
569typedef struct {
570 EFI_BLOCK_IO_PROTOCOL *BlockIo;
571 EFI_BLOCK_IO2_PROTOCOL *BlockIo2;
572 UINT32 MediaId;
573 UINT32 BlockSize;
575
585EFI_STATUS
587 OUT OC_DISK_CONTEXT *Context,
588 IN EFI_HANDLE DiskHandle,
589 IN BOOLEAN UseBlockIo2
590 );
591
602EFI_STATUS
604 IN OC_DISK_CONTEXT *Context,
605 IN UINT64 Lba,
606 IN UINTN BufferSize,
607 OUT VOID *Buffer
608 );
609
620EFI_STATUS
622 IN OC_DISK_CONTEXT *Context,
623 IN UINT64 Lba,
624 IN UINTN BufferSize,
625 IN VOID *Buffer
626 );
627
631typedef struct {
634 EFI_PARTITION_ENTRY FirstEntry[];
636
647 IN EFI_HANDLE DiskHandle,
648 IN BOOLEAN UseBlockIo2
649 );
650
659CONST EFI_PARTITION_ENTRY *
661 IN EFI_HANDLE FsHandle
662 );
663
672MASTER_BOOT_RECORD *
674 IN EFI_HANDLE DiskHandle,
675 IN BOOLEAN CheckPartitions
676 );
677
686EFI_STATUS
688 IN EFI_HANDLE PartitionHandle,
689 OUT UINT8 *PartitionIndex
690 );
691
700EFI_STATUS
702 IN EFI_HANDLE DiskHandle,
703 IN UINT8 PartitionIndex
704 );
705
715EFI_DEVICE_PATH_PROTOCOL *
717 IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath,
718 OUT UINTN *PartitionDevicePathSize,
719 OUT EFI_HANDLE *PartitionDeviceHandle
720 );
721
730EFI_DEVICE_PATH_PROTOCOL *
732 IN EFI_GUID *FileGuid
733 );
734
745VOID *
747 IN EFI_GUID *FileGuid,
748 IN UINT8 SectionType,
749 OUT UINT32 *FileSize
750 );
751
752#endif // OC_FILE_LIB_H
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)
Definition DiskMisc.c:353
EFI_STATUS OcDiskGetMbrPartitionIndex(IN EFI_HANDLE PartitionHandle, OUT UINT8 *PartitionIndex)
Definition DiskMisc.c:908
EFI_HANDLE OcPartitionGetDiskHandle(IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath)
Definition DiskMisc.c:331
EFI_STATUS EFIAPI OcOpenFileByDevicePath(IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath, OUT EFI_FILE_PROTOCOL **File, IN UINT64 OpenMode, IN UINT64 Attributes)
Definition OpenFile.c:206
VOID * OcReadFileFromDirectory(IN CONST EFI_FILE_PROTOCOL *RootDirectory, IN CONST CHAR16 *FilePath, OUT UINT32 *FileSize OPTIONAL, IN UINT32 MaxFileSize OPTIONAL)
Definition ReadFile.c:155
EFI_DEVICE_PATH_PROTOCOL * OcDiskGetDevicePath(IN EFI_DEVICE_PATH_PROTOCOL *HdDevicePath)
Definition DiskMisc.c:280
EFI_DEVICE_PATH_PROTOCOL * OcDiskFindSystemPartitionPath(IN CONST EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath, OUT UINTN *EspDevicePathSize, OUT EFI_HANDLE *EspDeviceHandle)
Definition DiskMisc.c:458
EFI_STATUS OcDiskWrite(IN OC_DISK_CONTEXT *Context, IN UINT64 Lba, IN UINTN BufferSize, IN VOID *Buffer)
Definition DiskMisc.c:151
EFI_STATUS OcDiskReadElTorito(IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath, OUT UINT8 **Buffer, OUT UINTN *BufferSize)
Definition DiskMisc.c:392
BOOLEAN OcIsDiskCdRom(IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath)
Definition DiskMisc.c:369
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)
Definition DiskMisc.c:116
EFI_STATUS OcReadFileSize(IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *FilePath, OUT UINT32 *Size)
Definition ReadFile.c:110
VOID * OcGetFileInfo(IN EFI_FILE_PROTOCOL *File, IN EFI_GUID *InformationType, IN UINTN MinFileInfoSize, OUT UINTN *RealFileInfoSize OPTIONAL)
Definition GetFileInfo.c:33
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)
Definition DiskMisc.c:573
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)
Definition DiskMisc.c:46
EFI_DEVICE_PATH_PROTOCOL * OcDiskFindActiveMbrPartitionPath(IN EFI_DEVICE_PATH_PROTOCOL *DiskDevicePath, OUT UINTN *PartitionDevicePathSize, OUT EFI_HANDLE *PartitionDeviceHandle)
Definition DiskMisc.c:1057
VOID OcDirectorySeachContextInit(IN OUT DIRECTORY_SEARCH_CONTEXT *Context)
EFI_STATUS OcDeleteFile(IN EFI_FILE_PROTOCOL *Directory, IN CONST CHAR16 *FileName)
Definition FileMisc.c:49
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)
Definition DiskMisc.c:828
VOID * OcReadFile(IN CONST EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *FilePath, OUT UINT32 *FileSize OPTIONAL, IN CONST UINT32 MaxFileSize OPTIONAL)
Definition ReadFile.c:33
BOOLEAN OcFileExists(IN CONST EFI_FILE_PROTOCOL *Directory, IN CONST CHAR16 *FileName)
Definition FileMisc.c:21
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)
Definition DiskMisc.c:732
VOID * OcReadFvFileSection(IN EFI_GUID *FileGuid, IN UINT8 SectionType, OUT UINT32 *FileSize)
EFI_STATUS OcDiskMarkMbrPartitionActive(IN EFI_HANDLE DiskHandle, IN UINT8 PartitionIndex)
Definition DiskMisc.c:978
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)
Definition OpenFile.c:29
EFI_STATUS(* OC_PROCESS_DIRECTORY_ENTRY)(EFI_FILE_HANDLE Directory, EFI_FILE_INFO *FileInfo, UINTN FileInfoSize, VOID *Context OPTIONAL)
Definition OcFileLib.h:331
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)
Definition OpenFile.c:83
EFI_STATUS OcFindWritableFileSystem(IN OUT EFI_FILE_PROTOCOL **WritableFs)
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
Definition OcTypingLib.h:42
EFI_BLOCK_IO_PROTOCOL * BlockIo
Definition OcFileLib.h:570
EFI_BLOCK_IO2_PROTOCOL * BlockIo2
Definition OcFileLib.h:571