34 IN CONST EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem,
36 OUT UINT32 *FileSize OPTIONAL,
37 IN CONST UINT32 MaxFileSize OPTIONAL
41 EFI_FILE_HANDLE Volume;
42 EFI_FILE_HANDLE FileHandle;
44 UINT32 FileBufferSize;
47 ASSERT (FileSystem != NULL);
50 Status = FileSystem->OpenVolume (
51 (EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *)FileSystem,
54 if (EFI_ERROR (Status)) {
66 Volume->Close (Volume);
68 if (EFI_ERROR (Status)) {
76 if ( EFI_ERROR (Status)
77 || BaseOverflowAddU32 (FileReadSize,
sizeof (CHAR16), &FileBufferSize)
78 || ((MaxFileSize > 0) && (FileReadSize > MaxFileSize)))
80 FileHandle->Close (FileHandle);
84 FileBuffer = AllocatePool (FileBufferSize);
85 if (FileBuffer != NULL) {
93 if (!EFI_ERROR (Status)) {
94 FileBuffer[FileReadSize] = 0;
95 FileBuffer[FileReadSize + 1] = 0;
96 if (FileSize != NULL) {
97 *FileSize = FileReadSize;
100 FreePool (FileBuffer);
105 FileHandle->Close (FileHandle);
156 IN CONST EFI_FILE_PROTOCOL *RootDirectory,
158 OUT UINT32 *FileSize OPTIONAL,
159 IN UINT32 MaxFileSize OPTIONAL
163 EFI_FILE_PROTOCOL *File;
167 ASSERT (RootDirectory != NULL);
178 if (EFI_ERROR (Status)) {
183 if ( EFI_ERROR (Status)
184 || (
Size >= MAX_UINT32 - 1)
185 || ((MaxFileSize > 0) && (
Size > MaxFileSize)))
191 FileBuffer = AllocatePool (
Size + 2);
192 if (FileBuffer == NULL) {
199 if (EFI_ERROR (Status)) {
200 FreePool (FileBuffer);
204 FileBuffer[
Size] = 0;
205 FileBuffer[
Size + 1] = 0;
207 if (FileSize != NULL) {
EFI_STATUS OcSafeFileOpen(IN CONST EFI_FILE_PROTOCOL *Directory, OUT EFI_FILE_PROTOCOL **NewHandle, IN CONST CHAR16 *FileName, IN CONST UINT64 OpenMode, IN CONST UINT64 Attributes)
VOID * OcReadFile(IN CONST EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem, IN CONST CHAR16 *FilePath, OUT UINT32 *FileSize OPTIONAL, IN CONST UINT32 MaxFileSize OPTIONAL)