/** @file OpenVolume() function of Simple File System Protocol. Copyright (c) 2005 - 2013, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "Fat.h" /** Implements Simple File System Protocol interface function OpenVolume(). @param This - Calling context. @param File - the Root Directory of the volume. @retval EFI_OUT_OF_RESOURCES - Can not allocate the memory. @retval EFI_VOLUME_CORRUPTED - The FAT type is error. @retval EFI_SUCCESS - Open the volume successfully. **/ EFI_STATUS EFIAPI FatOpenVolume ( IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, OUT EFI_FILE_PROTOCOL **File ) { EFI_STATUS Status; FAT_VOLUME *Volume; FAT_IFILE *IFile; Volume = VOLUME_FROM_VOL_INTERFACE (This); FatAcquireLock (); // // Open Root file // Status = FatOpenDirEnt (NULL, &Volume->RootDirEnt); if (EFI_ERROR (Status)) { goto Done; } // // Open a new instance to the root // Status = FatAllocateIFile (Volume->Root, &IFile); if (!EFI_ERROR (Status)) { *File = &IFile->Handle; } Done: Status = FatCleanupVolume (Volume, Volume->Root, Status, NULL); FatReleaseLock (); return Status; }