OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
OcVirtualFsLib.h File Reference
#include <Uefi.h>
#include <Protocol/SimpleFileSystem.h>
#include <Guid/FileInfo.h>

Go to the source code of this file.

Functions

EFI_STATUS CreateVirtualFile (IN CHAR16 *FileName, IN VOID *FileBuffer, IN UINT64 FileSize, IN CONST EFI_TIME *ModificationTime OPTIONAL, OUT EFI_FILE_PROTOCOL **File)
 
EFI_STATUS CreateVirtualFileFileNameCopy (IN CONST CHAR16 *FileName, IN VOID *FileBuffer, IN UINT64 FileSize, IN CONST EFI_TIME *ModificationTime OPTIONAL, OUT EFI_FILE_PROTOCOL **File)
 
EFI_STATUS CreateRealFile (IN EFI_FILE_PROTOCOL *OriginalFile OPTIONAL, IN EFI_FILE_OPEN OpenCallback OPTIONAL, IN BOOLEAN CloseOnFailure, OUT EFI_FILE_PROTOCOL **File)
 
EFI_STATUS VirtualDirCreateOverlay (IN CHAR16 *FileName, IN CONST EFI_TIME *ModificationTime OPTIONAL, IN EFI_FILE_PROTOCOL *UnderlyingFile OPTIONAL, OUT EFI_FILE_PROTOCOL **File)
 
EFI_STATUS VirtualDirCreateOverlayFileNameCopy (IN CONST CHAR16 *FileName, IN CONST EFI_TIME *ModificationTime OPTIONAL, IN EFI_FILE_PROTOCOL *UnderlyingFile OPTIONAL, OUT EFI_FILE_PROTOCOL **File)
 
EFI_STATUS VirtualDirAddEntry (IN EFI_FILE_PROTOCOL *This, IN EFI_FILE_INFO *FileInfo)
 
VOID VirtualDirFree (IN EFI_FILE_PROTOCOL *This)
 
EFI_STATUS CreateVirtualFs (IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *OriginalFileSystem, IN EFI_FILE_OPEN OpenCallback, OUT EFI_SIMPLE_FILE_SYSTEM_PROTOCOL **NewFileSystem)
 
EFI_STATUS EnableVirtualFs (IN OUT EFI_BOOT_SERVICES *BootServices, IN EFI_FILE_OPEN OpenCallback)
 
EFI_STATUS DisableVirtualFs (IN OUT EFI_BOOT_SERVICES *BootServices)
 

Detailed Description

Copyright (C) 2019, vit9696. All rights reserved.

All rights reserved.

This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

Definition in file OcVirtualFsLib.h.

Function Documentation

◆ CreateRealFile()

EFI_STATUS CreateRealFile ( IN EFI_FILE_PROTOCOL *OriginalFile OPTIONAL,
IN EFI_FILE_OPEN OpenCallback OPTIONAL,
IN BOOLEAN CloseOnFailure,
OUT EFI_FILE_PROTOCOL ** File )

Creates virtual file system instance around any file. CreateRealFile or CreateVirtualFile must be called from any registered OpenCallback.

Parameters
[in]OriginalFilePointer to the original file.
[in]OpenCallbackFile open callback.
[in]CloseOnFailureClose the original file on failure.
[out]FileResulting file protocol.
Returns
EFI_SUCCESS if instance was successfully created.
EFI_SIMPLE_FILE_SYSTEM Open-compatible error return code.

Definition at line 694 of file VirtualFile.c.

◆ CreateVirtualFile()

EFI_STATUS CreateVirtualFile ( IN CHAR16 * FileName,
IN VOID * FileBuffer,
IN UINT64 FileSize,
IN CONST EFI_TIME *ModificationTime OPTIONAL,
OUT EFI_FILE_PROTOCOL ** File )

Creates read-only EFI_FILE_PROTOCOL instance over a buffer allocated from pool. On success FileName and FileData ownership is transferred to the resulting EFI_FILE_PROTOCOL, which frees them with FreePool upon closing EFI_FILE_PROTOCOL. All other fields are copied.

Resulting EFI_FILE_PROTOCOL has 2nd revision, but may be downgraded to 1st by updating the corresponding field.

Parameters
[in]FileNamePointer to the file's name.
[in]FileBufferPointer to the file's data.
[in]FileSizeFile size of FileData.
[in]ModificationTimeFile modification date, optional.
[out]FileResulting file protocol.
Returns
EFI_SUCCESS if instance was successfully created.

Definition at line 610 of file VirtualFile.c.

◆ CreateVirtualFileFileNameCopy()

EFI_STATUS CreateVirtualFileFileNameCopy ( IN CONST CHAR16 * FileName,
IN VOID * FileBuffer,
IN UINT64 FileSize,
IN CONST EFI_TIME *ModificationTime OPTIONAL,
OUT EFI_FILE_PROTOCOL ** File )

Creates read-only EFI_FILE_PROTOCOL instance over a buffer allocated from pool. On success FileData ownership is transferred to the resulting EFI_FILE_PROTOCOL, which frees them with FreePool upon closing EFI_FILE_PROTOCOL. All other fields are copied.

Resulting EFI_FILE_PROTOCOL has 2nd revision, but may be downgraded to 1st by updating the corresponding field.

Parameters
[in]FileNamePointer to the file's name.
[in]FileBufferPointer to the file's data.
[in]FileSizeFile size of FileData.
[in]ModificationTimeFile modification date, optional.
[out]FileResulting file protocol.
Returns
EFI_SUCCESS if instance was successfully created.

Definition at line 650 of file VirtualFile.c.

◆ CreateVirtualFs()

EFI_STATUS CreateVirtualFs ( IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL * OriginalFileSystem,
IN EFI_FILE_OPEN OpenCallback,
OUT EFI_SIMPLE_FILE_SYSTEM_PROTOCOL ** NewFileSystem )

Create virtual file system by wrapping OriginalFileSystem into NewFileSystem with specified callback. Cacheable.

Parameters
[in]OriginalFileSystemSource file system.
[in]OpenCallbackFile open callback.
[out]NewFileSystemWrapped file system.
Returns
EFI_SUCCESS on successful wrapping.

Definition at line 71 of file VirtualVolume.c.

◆ DisableVirtualFs()

EFI_STATUS DisableVirtualFs ( IN OUT EFI_BOOT_SERVICES * BootServices)

Enables virtual file system access for given BootServices.

Parameters
[in,out]BootServicesHooked EFI_BOOT_SERVICES.
Returns
EFI_SUCCESS on successful unhooking.

Definition at line 125 of file VirtualFs.c.

◆ EnableVirtualFs()

EFI_STATUS EnableVirtualFs ( IN OUT EFI_BOOT_SERVICES * BootServices,
IN EFI_FILE_OPEN OpenCallback )

Enables virtual file system access for given BootServices with callback on file open.

Parameters
[in,out]BootServicesHooked EFI_BOOT_SERVICES.
[in]OpenCallbackFile open callback.
Returns
EFI_SUCCESS on successful hooking.

Definition at line 99 of file VirtualFs.c.

◆ VirtualDirAddEntry()

EFI_STATUS VirtualDirAddEntry ( IN EFI_FILE_PROTOCOL * This,
IN EFI_FILE_INFO * FileInfo )

Adds an EFI_FILE_INFO instance to the virtual directory as a file entry. Ownership of the EFI_FILE_INFO is transferred to the EFI_FILE_PROTOCOL, which is freed with FreePool upon closing EFI_FILE_PROTOCOL.

Parameters
[in]ThisFile protocol pointer.
[in]FileInfoEFI_FILE_INFO instance pointer.
Returns
EFI_SUCCESS if the entry was successfully added.

Definition at line 561 of file VirtualDir.c.

◆ VirtualDirCreateOverlay()

EFI_STATUS VirtualDirCreateOverlay ( IN CHAR16 * FileName,
IN CONST EFI_TIME *ModificationTime OPTIONAL,
IN EFI_FILE_PROTOCOL *UnderlyingFile OPTIONAL,
OUT EFI_FILE_PROTOCOL ** File )

Creates read-only EFI_FILE_PROTOCOL virtual directory instance, optionally as an overlay over an existing EFI_FILE_PROTOCOL instance. On success ownership of FileName and UnderlyingFile is transferred to the resulting EFI_FILE_PROTOCOL, which frees them with FreePool upon closing EFI_FILE_PROTOCOL. All other fields are copied.

Resulting EFI_FILE_PROTOCOL has 2nd revision, but may be downgraded to 1st by updating the corresponding field.

Parameters
[in]FileNamePointer to the file's name.
[in]ModificationTimeFile modification date, optional.
[in]UnderlyingFileThe underlying file protocol, optional.
[out]FileResulting file protocol.
Returns
EFI_SUCCESS if instance was successfully created.

Definition at line 496 of file VirtualDir.c.

◆ VirtualDirCreateOverlayFileNameCopy()

EFI_STATUS VirtualDirCreateOverlayFileNameCopy ( IN CONST CHAR16 * FileName,
IN CONST EFI_TIME *ModificationTime OPTIONAL,
IN EFI_FILE_PROTOCOL *UnderlyingFile OPTIONAL,
OUT EFI_FILE_PROTOCOL ** File )

Creates read-only EFI_FILE_PROTOCOL virtual directory instance, optionally as an overlay over an existing EFI_FILE_PROTOCOL instance. On success, ownership of UnderlyingFile is transferred to the resulting EFI_FILE_PROTOCOL, which frees them with FreePool upon closing EFI_FILE_PROTOCOL. All other fields are copied.

Resulting EFI_FILE_PROTOCOL has 2nd revision, but may be downgraded to 1st by updating the corresponding field.

Parameters
[in]FileNamePointer to the file's name.
[in]ModificationTimeFile modification date, optional.
[in]UnderlyingFileThe underlying file protocol, optional.
[out]FileResulting file protocol.
Returns
EFI_SUCCESS if instance was successfully created.

Definition at line 531 of file VirtualDir.c.

◆ VirtualDirFree()

VOID VirtualDirFree ( IN EFI_FILE_PROTOCOL * This)

Frees the EFI_FILE_PROTOCOL virtual directory instance without closing the underlying EFI_FILE_PROTOCOL, if any.

Parameters
[in]ThisFile protocol pointer.

Definition at line 587 of file VirtualDir.c.