OpenCore
1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
Position.c
Go to the documentation of this file.
1
9
#include "
NTFS.h
"
10
#include "
Driver.h
"
11
12
EFI_STATUS
13
EFIAPI
14
FileGetPosition
(
15
IN EFI_FILE_PROTOCOL *This,
16
OUT UINT64 *Position
17
)
18
{
19
EFI_NTFS_FILE
*File;
20
21
ASSERT
(This != NULL);
22
ASSERT
(Position != NULL);
23
24
File = (
EFI_NTFS_FILE
*)This;
25
26
*Position = File->
IsDir
? File->
DirIndex
: File->
Offset
;
27
28
return
EFI_SUCCESS;
29
}
30
31
EFI_STATUS
32
EFIAPI
33
FileSetPosition
(
34
IN EFI_FILE_PROTOCOL *This,
35
IN UINT64 Position
36
)
37
{
38
EFI_NTFS_FILE
*File;
39
UINT64 FileSize;
40
41
ASSERT
(This != NULL);
42
43
File = (
EFI_NTFS_FILE
*)This;
44
45
if
(File->
IsDir
) {
46
if
(Position != 0) {
47
return
EFI_INVALID_PARAMETER;
48
}
49
50
File->
DirIndex
= 0;
51
return
EFI_SUCCESS;
52
}
53
54
FileSize = File->
RootFile
.
DataAttributeSize
;
55
56
if
(Position == 0xFFFFFFFFFFFFFFFFULL) {
57
Position = FileSize;
58
}
else
if
(Position > FileSize) {
59
DEBUG ((DEBUG_INFO,
"NTFS: '%s': Cannot seek to #%Lx of %Lx\n"
, File->
Path
, Position, FileSize));
60
return
EFI_UNSUPPORTED;
61
}
62
63
File->
Offset
= Position;
64
65
return
EFI_SUCCESS;
66
}
Driver.h
NTFS.h
FileSetPosition
EFI_STATUS EFIAPI FileSetPosition(IN EFI_FILE_PROTOCOL *This, IN UINT64 Position)
Definition
Position.c:33
FileGetPosition
EFI_STATUS EFIAPI FileGetPosition(IN EFI_FILE_PROTOCOL *This, OUT UINT64 *Position)
Definition
Position.c:14
ASSERT
#define ASSERT(x)
Definition
coder.h:55
_EFI_NTFS_FILE
Definition
Driver.h:626
_EFI_NTFS_FILE::RootFile
NTFS_FILE RootFile
Definition
Driver.h:634
_EFI_NTFS_FILE::IsDir
BOOLEAN IsDir
Definition
Driver.h:628
_EFI_NTFS_FILE::Path
CHAR16 * Path
Definition
Driver.h:630
_EFI_NTFS_FILE::DirIndex
UINT64 DirIndex
Definition
Driver.h:629
_EFI_NTFS_FILE::Offset
UINT64 Offset
Definition
Driver.h:632
_NTFS_FILE::DataAttributeSize
UINT64 DataAttributeSize
Definition
Driver.h:616
Platform
OpenNtfsDxe
Position.c
Generated by
1.12.0