diff options
Diffstat (limited to 'lib/uefi.c3l/uefi/protocol/file.c3i')
| -rw-r--r-- | lib/uefi.c3l/uefi/protocol/file.c3i | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/uefi.c3l/uefi/protocol/file.c3i b/lib/uefi.c3l/uefi/protocol/file.c3i new file mode 100644 index 0000000..72c56d7 --- /dev/null +++ b/lib/uefi.c3l/uefi/protocol/file.c3i @@ -0,0 +1,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; +} |
