OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
Helper.h
Go to the documentation of this file.
1
9#ifndef HELPER_H
10#define HELPER_H
11
12#include "Driver.h"
13
14#define FSHELP_TYPE_MASK 0xff
15#define FSHELP_CASE_INSENSITIVE 0x100
16//
17// Leap year: is every 4 years, except every 100th isn't, and every 400th is.
18//
19#define LEAP_YEAR ((Year % 400U == 0) || ((Year % 4U == 0) && (Year % 100U != 0)))
20#define YEAR_IN_100NS (365ULL * DAY_IN_100NS)
21#define DAY_IN_100NS (24ULL * HOUR_IN_100NS)
22#define HOUR_IN_100NS (60ULL * MINUTE_IN_100NS)
23#define MINUTE_IN_100NS (60U * SECOND_IN_100NS)
24#define SECOND_IN_100NS 10000000U
25#define UNIT_IN_NS 100U
26#define GREGORIAN_START 1601U
27
34
40
41typedef struct {
42 CONST CHAR16 *Path;
47
53
59
60VOID
62 IN NTFS_ATTR *Attr
63 );
64
65VOID
67 IN NTFS_FILE *File
68 );
69
70EFI_STATUS
71EFIAPI
73 IN EFI_FS *FileSystem,
74 IN UINT64 Offset,
75 IN UINTN Size,
76 IN OUT VOID *Buffer
77 );
78
79EFI_STATUS
80EFIAPI
82 IN EFI_NTFS_FILE *File,
83 OUT UINT8 *Buffer,
84 IN UINT64 RecordNumber
85 );
86
87EFI_STATUS
88EFIAPI
90 IN NTFS_ATTR *NtfsAttr,
91 OUT UINT8 *Dest,
92 IN UINT64 Offset,
93 IN UINTN Length
94 );
95
96EFI_STATUS
97EFIAPI
99 IN NTFS_ATTR *NtfsAttr,
100 IN UINT8 *pa,
101 OUT UINT8 *Dest,
102 IN UINT64 Offset,
103 IN UINTN Length
104 );
105
106EFI_STATUS
107EFIAPI
109 IN OUT RUNLIST *Runlist
110 );
111
112EFI_STATUS
113NtfsDir (
114 IN EFI_FS *FileSystem,
115 IN CONST CHAR16 *Path,
116 OUT EFI_NTFS_FILE *File,
117 IN FUNCTION_TYPE FunctionType
118 );
119
120EFI_STATUS
121NtfsOpen (
122 IN EFI_NTFS_FILE *File
123 );
124
125EFI_STATUS
126NtfsMount (
127 IN EFI_FS *FileSystem
128 );
129
130EFI_STATUS
131EFIAPI
132Fixup (
133 IN UINT8 *Buffer,
134 IN UINT64 Length,
135 IN UINT32 Magic,
136 IN UINTN SectorSize
137 );
138
139EFI_STATUS
140InitAttr (
141 OUT NTFS_ATTR *Attr,
142 IN NTFS_FILE *File
143 );
144
145UINT8 *
147 IN NTFS_ATTR *Attr,
148 IN NTFS_FILE *Mft,
149 IN UINT32 Type
150 );
151
152UINT8 *
153FindAttr (
154 IN NTFS_ATTR *Attr,
155 IN UINT32 Type
156 );
157
158EFI_STATUS
159EFIAPI
160InitFile (
161 IN OUT NTFS_FILE *File,
162 IN UINT64 RecordNumber
163 );
164
165EFI_STATUS
167 IN CONST CHAR16 *Path,
168 IN NTFS_FILE *RootNode,
169 OUT NTFS_FILE **FoundNode,
170 IN FSHELP_FILETYPE Type
171 );
172
173EFI_STATUS
175 IN NTFS_FILE *dir,
176 IN VOID *FileOrCtx,
177 IN FUNCTION_TYPE FunctionType
178 );
179
180EFI_STATUS
182 OUT CHAR16 *Dest,
183 IN CHAR16 *Source
184 );
185
186CHAR16 *
188 IN NTFS_FILE *Node
189 );
190
191EFI_STATUS
193 IN RUNLIST *Runlist,
194 IN UINT64 Offset,
195 IN UINTN Length,
196 OUT UINT8 *Dest
197 );
198
199VOID
201 EFI_TIME *EfiTime,
202 UINT64 NtfsTime
203 );
204
205#endif // HELPER_H
UINT64 Length
VOID NtfsToEfiTime(EFI_TIME *EfiTime, UINT64 NtfsTime)
Definition Index.c:928
UINT8 * LocateAttr(IN NTFS_ATTR *Attr, IN NTFS_FILE *Mft, IN UINT32 Type)
Definition Disc.c:347
EFI_STATUS RelativeToAbsolute(OUT CHAR16 *Dest, IN CHAR16 *Source)
Definition Index.c:826
FUNCTION_TYPE
Definition Helper.h:54
@ INFO_HOOK
Definition Helper.h:55
@ FILE_ITER
Definition Helper.h:57
@ DIR_HOOK
Definition Helper.h:56
VOID FreeFile(IN NTFS_FILE *File)
Definition Disc.c:810
EFI_STATUS EFIAPI DiskRead(IN EFI_FS *FileSystem, IN UINT64 Offset, IN UINTN Size, IN OUT VOID *Buffer)
Definition Data.c:116
FSHELP_FILETYPE
Definition Helper.h:28
@ FSHELP_SYMLINK
Definition Helper.h:32
@ FSHELP_DIR
Definition Helper.h:31
@ FSHELP_REG
Definition Helper.h:30
@ FSHELP_UNKNOWN
Definition Helper.h:29
struct _STACK_ELEMENT STACK_ELEMENT
EFI_STATUS EFIAPI ReadData(IN NTFS_ATTR *NtfsAttr, IN UINT8 *pa, OUT UINT8 *Dest, IN UINT64 Offset, IN UINTN Length)
Definition Data.c:258
EFI_STATUS NtfsDir(IN EFI_FS *FileSystem, IN CONST CHAR16 *Path, OUT EFI_NTFS_FILE *File, IN FUNCTION_TYPE FunctionType)
Definition Disc.c:13
EFI_STATUS EFIAPI ReadMftRecord(IN EFI_NTFS_FILE *File, OUT UINT8 *Buffer, IN UINT64 RecordNumber)
Definition Data.c:148
VOID FreeAttr(IN NTFS_ATTR *Attr)
Definition Disc.c:792
EFI_STATUS InitAttr(OUT NTFS_ATTR *Attr, IN NTFS_FILE *File)
Definition Disc.c:313
EFI_STATUS IterateDir(IN NTFS_FILE *dir, IN VOID *FileOrCtx, IN FUNCTION_TYPE FunctionType)
Definition Index.c:534
UINT8 * FindAttr(IN NTFS_ATTR *Attr, IN UINT32 Type)
Definition Disc.c:400
EFI_STATUS EFIAPI Fixup(IN UINT8 *Buffer, IN UINT64 Length, IN UINT32 Magic, IN UINTN SectorSize)
Definition Disc.c:242
EFI_STATUS EFIAPI ReadAttr(IN NTFS_ATTR *NtfsAttr, OUT UINT8 *Dest, IN UINT64 Offset, IN UINTN Length)
Definition Data.c:184
EFI_STATUS NtfsOpen(IN EFI_NTFS_FILE *File)
Definition Disc.c:53
EFI_STATUS FsHelpFindFile(IN CONST CHAR16 *Path, IN NTFS_FILE *RootNode, OUT NTFS_FILE **FoundNode, IN FSHELP_FILETYPE Type)
Definition Index.c:471
CHAR16 * ReadSymlink(IN NTFS_FILE *Node)
Definition Data.c:565
EFI_STATUS NtfsMount(IN EFI_FS *FileSystem)
Definition Disc.c:94
EFI_STATUS EFIAPI InitFile(IN OUT NTFS_FILE *File, IN UINT64 RecordNumber)
Definition Disc.c:727
EFI_STATUS EFIAPI ReadRunListElement(IN OUT RUNLIST *Runlist)
Definition Data.c:468
EFI_STATUS Decompress(IN RUNLIST *Runlist, IN UINT64 Offset, IN UINTN Length, OUT UINT8 *Dest)
DMG_SIZE_DEVICE_PATH Size
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
Definition OcTypingLib.h:42
NTFS_FILE * Node
Definition Helper.h:37
FSHELP_FILETYPE Type
Definition Helper.h:38
struct _STACK_ELEMENT * Parent
Definition Helper.h:36
CONST CHAR16 * Path
Definition Helper.h:42
NTFS_FILE * RootNode
Definition Helper.h:43
UINT32 SymlinkDepth
Definition Helper.h:44
STACK_ELEMENT * CurrentNode
Definition Helper.h:45
CONST CHAR16 * Name
Definition Helper.h:49
NTFS_FILE ** FoundNode
Definition Helper.h:50
FSHELP_FILETYPE * FoundType
Definition Helper.h:51