TianoCore EDK2 master
Loading...
Searching...
No Matches
Udf.h
Go to the documentation of this file.
1
10#ifndef _UDF_H_
11#define _UDF_H_
12
13#include <Uefi.h>
14#include <Base.h>
15
16#include <Protocol/BlockIo.h>
18#include <Protocol/DevicePath.h>
20#include <Protocol/DiskIo.h>
22
23#include <Guid/FileInfo.h>
24#include <Guid/FileSystemInfo.h>
26
27#include <Library/DebugLib.h>
29#include <Library/BaseLib.h>
30#include <Library/UefiLib.h>
35
38
39//
40// C5BD4D42-1A76-4996-8956-73CDA326CD0A
41//
42#define EFI_UDF_DEVICE_PATH_GUID \
43 { 0xC5BD4D42, 0x1A76, 0x4996, \
44 { 0x89, 0x56, 0x73, 0xCD, 0xA3, 0x26, 0xCD, 0x0A } \
45 }
46
47#define FE_ICB_FILE_TYPE(_Ptr) \
48 (UDF_FILE_ENTRY_TYPE)( \
49 ((UDF_DESCRIPTOR_TAG *)(_Ptr))->TagIdentifier == UdfFileEntry ? \
50 ((UDF_FILE_ENTRY *)(_Ptr))->IcbTag.FileType : \
51 ((UDF_EXTENDED_FILE_ENTRY *)(_Ptr))->IcbTag.FileType)
52
53typedef enum {
54 UdfFileEntryDirectory = 4,
55 UdfFileEntryStandardFile = 5,
56 UdfFileEntrySymlink = 12,
57} UDF_FILE_ENTRY_TYPE;
58
59#define HIDDEN_FILE (1 << 0)
60#define DIRECTORY_FILE (1 << 1)
61#define DELETED_FILE (1 << 2)
62#define PARENT_FILE (1 << 3)
63
64#define IS_FID_HIDDEN_FILE(_Fid) \
65 (BOOLEAN)((_Fid)->FileCharacteristics & HIDDEN_FILE)
66#define IS_FID_DIRECTORY_FILE(_Fid) \
67 (BOOLEAN)((_Fid)->FileCharacteristics & DIRECTORY_FILE)
68#define IS_FID_DELETED_FILE(_Fid) \
69 (BOOLEAN)((_Fid)->FileCharacteristics & DELETED_FILE)
70#define IS_FID_PARENT_FILE(_Fid) \
71 (BOOLEAN)((_Fid)->FileCharacteristics & PARENT_FILE)
72#define IS_FID_NORMAL_FILE(_Fid) \
73 (BOOLEAN)(!IS_FID_DIRECTORY_FILE (_Fid) && \
74 !IS_FID_PARENT_FILE (_Fid))
75
76typedef enum {
77 ShortAdsSequence,
78 LongAdsSequence,
79 ExtendedAdsSequence,
80 InlineData
81} UDF_FE_RECORDING_FLAGS;
82
83#define GET_FE_RECORDING_FLAGS(_Fe) \
84 ((UDF_FE_RECORDING_FLAGS)((UDF_ICB_TAG *)( \
85 (UINT8 *)(_Fe) + \
86 sizeof (UDF_DESCRIPTOR_TAG)))->Flags & 0x07)
87
88typedef enum {
89 ExtentRecordedAndAllocated,
90 ExtentNotRecordedButAllocated,
91 ExtentNotRecordedNotAllocated,
92 ExtentIsNextExtent,
93} UDF_EXTENT_FLAGS;
94
95#define AD_LENGTH(_RecFlags) \
96 ((_RecFlags) == ShortAdsSequence ? \
97 ((UINT64)(sizeof (UDF_SHORT_ALLOCATION_DESCRIPTOR))) : \
98 ((UINT64)(sizeof (UDF_LONG_ALLOCATION_DESCRIPTOR))))
99
100#define GET_EXTENT_FLAGS(_RecFlags, _Ad) \
101 ((_RecFlags) == ShortAdsSequence ? \
102 ((UDF_EXTENT_FLAGS)((((UDF_SHORT_ALLOCATION_DESCRIPTOR *)(_Ad))->ExtentLength >> \
103 30) & 0x3)) : \
104 ((UDF_EXTENT_FLAGS)((((UDF_LONG_ALLOCATION_DESCRIPTOR *)(_Ad))->ExtentLength >> \
105 30) & 0x3)))
106
107#define GET_EXTENT_LENGTH(_RecFlags, _Ad) \
108 ((_RecFlags) == ShortAdsSequence ? \
109 ((UINT32)((((UDF_SHORT_ALLOCATION_DESCRIPTOR *)(_Ad))->ExtentLength & \
110 ~0xC0000000UL))) : \
111 ((UINT32)((((UDF_LONG_ALLOCATION_DESCRIPTOR *)(_Ad))->ExtentLength & \
112 ~0xC0000000UL))))
113
114#define UDF_FILENAME_LENGTH 128
115#define UDF_PATH_LENGTH 512
116
117#define GET_FID_FROM_ADS(_Data, _Offs) \
118 ((UDF_FILE_IDENTIFIER_DESCRIPTOR *)((UINT8 *)(_Data) + (_Offs)))
119
120#define IS_VALID_COMPRESSION_ID(_CompId) \
121 ((BOOLEAN)((_CompId) == 8 || (_CompId) == 16))
122
123#define UDF_STANDARD_IDENTIFIER_LENGTH 5
124
125#pragma pack(1)
126
127typedef struct {
128 UINT8 StandardIdentifier[UDF_STANDARD_IDENTIFIER_LENGTH];
130
131#pragma pack()
132
133typedef enum {
134 ReadFileGetFileSize,
135 ReadFileAllocateAndRead,
136 ReadFileSeekAndRead,
137} UDF_READ_FILE_FLAGS;
138
139typedef struct {
140 VOID *FileData;
141 UDF_READ_FILE_FLAGS Flags;
142 UINT64 FileDataSize;
143 UINT64 FilePosition;
144 UINT64 FileSize;
145 UINT64 ReadLength;
147
148#pragma pack(1)
149
150typedef struct {
151 UINT16 TypeAndTimezone;
152 INT16 Year;
153 UINT8 Month;
154 UINT8 Day;
155 UINT8 Hour;
156 UINT8 Minute;
157 UINT8 Second;
158 UINT8 Centiseconds;
159 UINT8 HundredsOfMicroseconds;
160 UINT8 Microseconds;
162
163typedef struct {
164 UDF_DESCRIPTOR_TAG DescriptorTag;
165 UINT32 PrevAllocationExtentDescriptor;
166 UINT32 LengthOfAllocationDescriptors;
168
169typedef struct {
170 UINT8 StructureType;
171 UINT8 StandardIdentifier[UDF_STANDARD_IDENTIFIER_LENGTH];
172 UINT8 StructureVersion;
173 UINT8 Reserved;
174 UINT8 StructureData[2040];
176
177typedef struct {
178 UDF_DESCRIPTOR_TAG DescriptorTag;
179 UDF_TIMESTAMP RecordingDateTime;
180 UINT32 IntegrityType;
181 UDF_EXTENT_AD NextIntegrityExtent;
182 UINT8 LogicalVolumeContentsUse[32];
183 UINT32 NumberOfPartitions;
184 UINT32 LengthOfImplementationUse;
185 UINT8 Data[0];
187
188typedef struct {
189 UDF_DESCRIPTOR_TAG DescriptorTag;
190 UINT32 VolumeDescriptorSequenceNumber;
191 UINT16 PartitionFlags;
192 UINT16 PartitionNumber;
193 UDF_ENTITY_ID PartitionContents;
194 UINT8 PartitionContentsUse[128];
195 UINT32 AccessType;
196 UINT32 PartitionStartingLocation;
197 UINT32 PartitionLength;
198 UDF_ENTITY_ID ImplementationIdentifier;
199 UINT8 ImplementationUse[128];
200 UINT8 Reserved[156];
202
203typedef struct {
204 UDF_DESCRIPTOR_TAG DescriptorTag;
205 UDF_TIMESTAMP RecordingDateAndTime;
206 UINT16 InterchangeLevel;
207 UINT16 MaximumInterchangeLevel;
208 UINT32 CharacterSetList;
209 UINT32 MaximumCharacterSetList;
210 UINT32 FileSetNumber;
211 UINT32 FileSetDescriptorNumber;
212 UDF_CHAR_SPEC LogicalVolumeIdentifierCharacterSet;
213 UINT8 LogicalVolumeIdentifier[128];
214 UDF_CHAR_SPEC FileSetCharacterSet;
215 UINT8 FileSetIdentifier[32];
216 UINT8 CopyrightFileIdentifier[32];
217 UINT8 AbstractFileIdentifier[32];
218 UDF_LONG_ALLOCATION_DESCRIPTOR RootDirectoryIcb;
219 UDF_ENTITY_ID DomainIdentifier;
221 UDF_LONG_ALLOCATION_DESCRIPTOR SystemStreamDirectoryIcb;
222 UINT8 Reserved[32];
224
225typedef struct {
226 UINT32 ExtentLength;
227 UINT32 ExtentPosition;
229
230typedef struct {
231 UDF_DESCRIPTOR_TAG DescriptorTag;
232 UINT16 FileVersionNumber;
233 UINT8 FileCharacteristics;
234 UINT8 LengthOfFileIdentifier;
236 UINT16 LengthOfImplementationUse;
237 UINT8 Data[0];
239
240typedef struct {
241 UINT32 PriorRecordNumberOfDirectEntries;
242 UINT16 StrategyType;
243 UINT16 StrategyParameter;
244 UINT16 MaximumNumberOfEntries;
245 UINT8 Reserved;
246 UINT8 FileType;
247 UDF_LB_ADDR ParentIcbLocation;
248 UINT16 Flags;
250
251typedef struct {
252 UDF_DESCRIPTOR_TAG DescriptorTag;
253 UDF_ICB_TAG IcbTag;
254 UINT32 Uid;
255 UINT32 Gid;
256 UINT32 Permissions;
257 UINT16 FileLinkCount;
258 UINT8 RecordFormat;
259 UINT8 RecordDisplayAttributes;
260 UINT32 RecordLength;
261 UINT64 InformationLength;
262 UINT64 LogicalBlocksRecorded;
263 UDF_TIMESTAMP AccessTime;
264 UDF_TIMESTAMP ModificationTime;
265 UDF_TIMESTAMP AttributeTime;
266 UINT32 CheckPoint;
267 UDF_LONG_ALLOCATION_DESCRIPTOR ExtendedAttributeIcb;
268 UDF_ENTITY_ID ImplementationIdentifier;
269 UINT64 UniqueId;
270 UINT32 LengthOfExtendedAttributes;
271 UINT32 LengthOfAllocationDescriptors;
272 UINT8 Data[0]; // L_EA + L_AD
274
275typedef struct {
276 UDF_DESCRIPTOR_TAG DescriptorTag;
277 UDF_ICB_TAG IcbTag;
278 UINT32 Uid;
279 UINT32 Gid;
280 UINT32 Permissions;
281 UINT16 FileLinkCount;
282 UINT8 RecordFormat;
283 UINT8 RecordDisplayAttributes;
284 UINT32 RecordLength;
285 UINT64 InformationLength;
286 UINT64 ObjectSize;
287 UINT64 LogicalBlocksRecorded;
288 UDF_TIMESTAMP AccessTime;
289 UDF_TIMESTAMP ModificationTime;
290 UDF_TIMESTAMP CreationTime;
291 UDF_TIMESTAMP AttributeTime;
292 UINT32 CheckPoint;
293 UINT32 Reserved;
294 UDF_LONG_ALLOCATION_DESCRIPTOR ExtendedAttributeIcb;
295 UDF_LONG_ALLOCATION_DESCRIPTOR StreamDirectoryIcb;
296 UDF_ENTITY_ID ImplementationIdentifier;
297 UINT64 UniqueId;
298 UINT32 LengthOfExtendedAttributes;
299 UINT32 LengthOfAllocationDescriptors;
300 UINT8 Data[0]; // L_EA + L_AD
302
303typedef struct {
304 UINT8 ComponentType;
305 UINT8 LengthOfComponentIdentifier;
306 UINT16 ComponentFileVersionNumber;
307 UINT8 ComponentIdentifier[0];
309
310#pragma pack()
311
312//
313// UDF filesystem driver's private data
314//
315typedef struct {
316 UINT64 MainVdsStartLocation;
317 UDF_LOGICAL_VOLUME_DESCRIPTOR LogicalVolDesc;
318 UDF_PARTITION_DESCRIPTOR PartitionDesc;
319 UDF_FILE_SET_DESCRIPTOR FileSetDesc;
320 UINTN FileEntrySize;
322
323typedef struct {
324 VOID *FileEntry;
325 UDF_FILE_IDENTIFIER_DESCRIPTOR *FileIdentifierDesc;
327
328typedef struct {
329 VOID *DirectoryData;
330 UINT64 DirectoryLength;
331 UINT64 FidOffset;
333
334#define PRIVATE_UDF_FILE_DATA_SIGNATURE SIGNATURE_32 ('U', 'd', 'f', 'f')
335
336#define PRIVATE_UDF_FILE_DATA_FROM_THIS(a) \
337 CR ( \
338 a, \
339 PRIVATE_UDF_FILE_DATA, \
340 FileIo, \
341 PRIVATE_UDF_FILE_DATA_SIGNATURE \
342 )
343
344typedef struct {
345 UINTN Signature;
346 BOOLEAN IsRootDirectory;
347 UDF_FILE_INFO *Root;
348 UDF_FILE_INFO File;
349 UDF_READ_DIRECTORY_INFO ReadDirInfo;
351 EFI_FILE_PROTOCOL FileIo;
352 CHAR16 AbsoluteFileName[UDF_PATH_LENGTH];
353 CHAR16 FileName[UDF_FILENAME_LENGTH];
354 UINT64 FileSize;
355 UINT64 FilePosition;
357
358#define PRIVATE_UDF_SIMPLE_FS_DATA_SIGNATURE SIGNATURE_32 ('U', 'd', 'f', 's')
359
360#define PRIVATE_UDF_SIMPLE_FS_DATA_FROM_THIS(a) \
361 CR ( \
362 a, \
363 PRIVATE_UDF_SIMPLE_FS_DATA, \
364 SimpleFs, \
365 PRIVATE_UDF_SIMPLE_FS_DATA_SIGNATURE \
366 )
367
368typedef struct {
369 UINTN Signature;
370 EFI_BLOCK_IO_PROTOCOL *BlockIo;
371 EFI_DISK_IO_PROTOCOL *DiskIo;
373 UDF_VOLUME_INFO Volume;
374 UDF_FILE_INFO Root;
375 UINTN OpenFiles;
376 EFI_HANDLE Handle;
378
379//
380// Global Variables
381//
382extern EFI_DRIVER_BINDING_PROTOCOL gUdfDriverBinding;
383extern EFI_COMPONENT_NAME_PROTOCOL gUdfComponentName;
384extern EFI_COMPONENT_NAME2_PROTOCOL gUdfComponentName2;
385
386//
387// Function Prototypes
388//
389
406EFIAPI
410 );
411
433EFIAPI
434UdfOpen (
435 IN EFI_FILE_PROTOCOL *This,
436 OUT EFI_FILE_PROTOCOL **NewHandle,
437 IN CHAR16 *FileName,
438 IN UINT64 OpenMode,
439 IN UINT64 Attributes
440 );
441
457EFIAPI
458UdfRead (
459 IN EFI_FILE_PROTOCOL *This,
460 IN OUT UINTN *BufferSize,
461 OUT VOID *Buffer
462 );
463
473EFIAPI
474UdfClose (
476 );
477
489EFIAPI
490UdfDelete (
492 );
493
513EFIAPI
514UdfWrite (
515 IN EFI_FILE_PROTOCOL *This,
516 IN OUT UINTN *BufferSize,
517 IN VOID *Buffer
518 );
519
531EFIAPI
533 IN EFI_FILE_PROTOCOL *This,
534 OUT UINT64 *Position
535 );
536
548EFIAPI
550 IN EFI_FILE_PROTOCOL *This,
551 IN UINT64 Position
552 );
553
581EFIAPI
583 IN EFI_FILE_PROTOCOL *This,
584 IN EFI_GUID *InformationType,
585 IN OUT UINTN *BufferSize,
586 OUT VOID *Buffer
587 );
588
607EFIAPI
609 IN EFI_FILE_PROTOCOL *This,
610 IN EFI_GUID *InformationType,
611 IN UINTN BufferSize,
612 IN VOID *Buffer
613 );
614
631EFIAPI
632UdfFlush (
634 );
635
652 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
653 IN EFI_DISK_IO_PROTOCOL *DiskIo,
654 OUT UDF_VOLUME_INFO *Volume
655 );
656
675 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
676 IN EFI_DISK_IO_PROTOCOL *DiskIo,
677 IN UDF_VOLUME_INFO *Volume,
678 OUT UDF_FILE_INFO *File
679 );
680
700 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
701 IN EFI_DISK_IO_PROTOCOL *DiskIo,
702 IN UDF_VOLUME_INFO *Volume,
704 OUT VOID **FileEntry
705 );
706
728FindFile (
729 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
730 IN EFI_DISK_IO_PROTOCOL *DiskIo,
731 IN UDF_VOLUME_INFO *Volume,
732 IN CHAR16 *FilePath,
733 IN UDF_FILE_INFO *Root,
734 IN UDF_FILE_INFO *Parent,
736 OUT UDF_FILE_INFO *File
737 );
738
762 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
763 IN EFI_DISK_IO_PROTOCOL *DiskIo,
764 IN UDF_VOLUME_INFO *Volume,
766 IN VOID *FileEntryData,
767 IN OUT UDF_READ_DIRECTORY_INFO *ReadDirInfo,
769 );
770
793 IN UDF_FILE_IDENTIFIER_DESCRIPTOR *FileIdentifierDesc,
794 IN UINTN CharMax,
795 OUT CHAR16 *FileName
796 );
797
825 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
826 IN EFI_DISK_IO_PROTOCOL *DiskIo,
827 IN UDF_VOLUME_INFO *Volume,
828 IN UDF_FILE_INFO *Parent,
829 IN VOID *FileEntryData,
830 OUT UDF_FILE_INFO *File
831 );
832
839VOID
841 IN UDF_FILE_INFO *File
842 );
843
864 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
865 IN EFI_DISK_IO_PROTOCOL *DiskIo,
866 IN UDF_VOLUME_INFO *Volume,
867 IN UDF_FILE_INFO *File,
868 OUT UINT64 *Size
869 );
870
890 IN UDF_FILE_INFO *File,
891 IN UINT64 FileSize,
892 IN CHAR16 *FileName,
893 IN OUT UINTN *BufferSize,
894 OUT VOID *Buffer
895 );
896
919 IN UDF_VOLUME_INFO *Volume,
920 IN UINTN CharMax,
921 OUT CHAR16 *String
922 );
923
950 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
951 IN EFI_DISK_IO_PROTOCOL *DiskIo,
952 IN UDF_VOLUME_INFO *Volume,
953 OUT UINT64 *VolumeSize,
954 OUT UINT64 *FreeSpaceSize
955 );
956
980 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
981 IN EFI_DISK_IO_PROTOCOL *DiskIo,
982 IN UDF_VOLUME_INFO *Volume,
983 IN UDF_FILE_INFO *File,
984 IN UINT64 FileSize,
985 IN OUT UINT64 *FilePosition,
986 IN OUT VOID *Buffer,
987 IN OUT UINT64 *BufferSize
988 );
989
1003 IN EFI_HANDLE ControllerHandle
1004 );
1005
1014CHAR16 *
1016 IN CHAR16 *FileName
1017 );
1018
1034EFIAPI
1037 IN EFI_HANDLE ControllerHandle,
1038 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
1039 );
1040
1057EFIAPI
1060 IN EFI_HANDLE ControllerHandle,
1061 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
1062 );
1063
1079EFIAPI
1082 IN EFI_HANDLE ControllerHandle,
1083 IN UINTN NumberOfChildren,
1084 IN EFI_HANDLE *ChildHandleBuffer
1085 );
1086
1087//
1088// EFI Component Name Functions
1089//
1090
1131EFIAPI
1134 IN CHAR8 *Language,
1135 OUT CHAR16 **DriverName
1136 );
1137
1207EFIAPI
1210 IN EFI_HANDLE ControllerHandle,
1211 IN EFI_HANDLE ChildHandle OPTIONAL,
1212 IN CHAR8 *Language,
1213 OUT CHAR16 **ControllerName
1214 );
1215
1216#endif // _UDF_H_
UINT64 UINTN
EFI_STATUS EFIAPI UdfFlush(IN EFI_FILE_PROTOCOL *This)
Definition: File.c:912
EFI_STATUS GetFileNameFromFid(IN UDF_FILE_IDENTIFIER_DESCRIPTOR *FileIdentifierDesc, IN UINTN CharMax, OUT CHAR16 *FileName)
EFI_STATUS ReadUdfVolumeInformation(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_DISK_IO_PROTOCOL *DiskIo, OUT UDF_VOLUME_INFO *Volume)
EFI_STATUS EFIAPI UdfDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
Definition: Udf.c:112
CHAR16 * MangleFileName(IN CHAR16 *FileName)
Definition: FileName.c:110
EFI_STATUS EFIAPI UdfRead(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
Definition: File.c:317
EFI_STATUS EFIAPI UdfSetInfo(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN UINTN BufferSize, IN VOID *Buffer)
Definition: File.c:885
EFI_STATUS GetFileSize(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN UDF_VOLUME_INFO *Volume, IN UDF_FILE_INFO *File, OUT UINT64 *Size)
EFI_STATUS GetVolumeSize(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN UDF_VOLUME_INFO *Volume, OUT UINT64 *VolumeSize, OUT UINT64 *FreeSpaceSize)
EFI_STATUS EFIAPI UdfOpenVolume(IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, OUT EFI_FILE_PROTOCOL **Root)
Definition: File.c:53
EFI_STATUS EFIAPI UdfGetPosition(IN EFI_FILE_PROTOCOL *This, OUT UINT64 *Position)
Definition: File.c:654
EFI_STATUS EFIAPI UdfGetInfo(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
Definition: File.c:764
EFI_STATUS EFIAPI UdfClose(IN EFI_FILE_PROTOCOL *This)
Definition: File.c:548
EFI_STATUS EFIAPI UdfDelete(IN EFI_FILE_PROTOCOL *This)
Definition: File.c:595
EFI_STATUS SetFileInfo(IN UDF_FILE_INFO *File, IN UINT64 FileSize, IN CHAR16 *FileName, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI UdfComponentNameGetControllerName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName)
EFI_STATUS EFIAPI UdfSetPosition(IN EFI_FILE_PROTOCOL *This, IN UINT64 Position)
Definition: File.c:695
EFI_STATUS EFIAPI UdfWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
Definition: File.c:633
EFI_STATUS ReadDirectoryEntry(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN UDF_VOLUME_INFO *Volume, IN UDF_LONG_ALLOCATION_DESCRIPTOR *ParentIcb, IN VOID *FileEntryData, IN OUT UDF_READ_DIRECTORY_INFO *ReadDirInfo, OUT UDF_FILE_IDENTIFIER_DESCRIPTOR **FoundFid)
EFI_STATUS SupportUdfFileSystem(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle)
EFI_STATUS ReadFileData(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN UDF_VOLUME_INFO *Volume, IN UDF_FILE_INFO *File, IN UINT64 FileSize, IN OUT UINT64 *FilePosition, IN OUT VOID *Buffer, IN OUT UINT64 *BufferSize)
EFI_STATUS EFIAPI UdfDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
Definition: Udf.c:241
EFI_STATUS EFIAPI UdfComponentNameGetDriverName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN CHAR8 *Language, OUT CHAR16 **DriverName)
Definition: ComponentName.c:85
EFI_STATUS EFIAPI UdfOpen(IN EFI_FILE_PROTOCOL *This, OUT EFI_FILE_PROTOCOL **NewHandle, IN CHAR16 *FileName, IN UINT64 OpenMode, IN UINT64 Attributes)
Definition: File.c:164
EFI_STATUS FindFile(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN UDF_VOLUME_INFO *Volume, IN CHAR16 *FilePath, IN UDF_FILE_INFO *Root, IN UDF_FILE_INFO *Parent, IN UDF_LONG_ALLOCATION_DESCRIPTOR *Icb, OUT UDF_FILE_INFO *File)
EFI_STATUS GetVolumeLabel(IN UDF_VOLUME_INFO *Volume, IN UINTN CharMax, OUT CHAR16 *String)
VOID CleanupFileInformation(IN UDF_FILE_INFO *File)
EFI_STATUS ResolveSymlink(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN UDF_VOLUME_INFO *Volume, IN UDF_FILE_INFO *Parent, IN VOID *FileEntryData, OUT UDF_FILE_INFO *File)
EFI_STATUS EFIAPI UdfDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
Definition: Udf.c:45
EFI_STATUS FindFileEntry(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN UDF_VOLUME_INFO *Volume, IN UDF_LONG_ALLOCATION_DESCRIPTOR *Icb, OUT VOID **FileEntry)
EFI_STATUS FindRootDirectory(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN UDF_VOLUME_INFO *Volume, OUT UDF_FILE_INFO *File)
#define VOID
Definition: Base.h:269
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
VOID * EFI_HANDLE
Definition: UefiBaseType.h:33
Definition: Base.h:213