1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
module uefi::protocol::file;
import uefi;
alias FileOpenFn = fn EfiStatus (FileProtocol*, FileProtocol** newHandle, WChar* fileName, ulong openMode, ulong attributes);
alias FileCloseFn = fn EfiStatus (FileProtocol*);
alias FileDeleteFn = fn EfiStatus (FileProtocol*);
alias FileReadFn = fn EfiStatus (FileProtocol*, usz*, void*);
alias FileWriteFn = fn EfiStatus (FileProtocol*, usz*, void*);
alias FileGetPositionFn = fn EfiStatus (FileProtocol*, ulong*);
alias FileSetPositionFn = fn EfiStatus (FileProtocol*, ulong);
alias FileGetInfoFn = fn EfiStatus (FileProtocol*, EfiGuid*, usz*, void*);
alias FileSetInfoFn = fn EfiStatus (FileProtocol*, EfiGuid*, usz, void*);
alias FileFlushFn = fn EfiStatus (FileProtocol*);
alias FileSystemOpenVolumeFn = fn EfiStatus (FileSystemProtocol*, FileProtocol**);
struct FileProtocol {
ulong revision;
FileOpenFn _open;
FileCloseFn _close;
FileDeleteFn _delete;
FileReadFn _read;
FileWriteFn _write;
FileGetPositionFn _get_position;
FileSetPositionFn _set_position;
FileGetInfoFn _get_info;
FileSetInfoFn _set_info;
FileFlushFn _flush;
void* _open_ex;
void* _read_ex;
void* _write_ex;
void* _flush_ex;
}
struct FileSystemProtocol {
ulong revision;
FileSystemOpenVolumeFn _open_volume;
}
struct FileInfo {
ulong size;
ulong fileSize;
ulong physicalSize;
EfiTime createTime;
EfiTime lastAccessTime;
EfiTime editTime;
ulong attribute;
WChar[*] filename;
}
struct FileSystemInfo {
ulong size;
bool readOnly;
ulong volumeSize;
ulong freeSpace;
uint blockSize;
WChar[*] volumeLabel;
}
|