/*++ @file | |
Produce Simple File System abstractions for a directory on your PC using Unix APIs. | |
The configuration of what devices to mount or emulate comes from | |
environment variables. | |
Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> | |
Portions copyright (c) 2011, Apple Inc. 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. | |
**/ | |
#ifndef _EMU_SIMPLE_FILE_SYSTEM_H_ | |
#define _EMU_SIMPLE_FILE_SYSTEM_H_ | |
#include "PiDxe.h" | |
#include <Guid/FileSystemInfo.h> | |
#include <Guid/FileInfo.h> | |
#include <Guid/FileSystemVolumeLabelInfo.h> | |
#include <Protocol/EmuIoThunk.h> | |
#include <Protocol/SimpleFileSystem.h> | |
#include <Library/DebugLib.h> | |
#include <Library/BaseLib.h> | |
#include <Library/UefiDriverEntryPoint.h> | |
#include <Library/UefiLib.h> | |
#include <Library/BaseMemoryLib.h> | |
#include <Library/MemoryAllocationLib.h> | |
#include <Library/UefiBootServicesTableLib.h> | |
extern EFI_DRIVER_BINDING_PROTOCOL gEmuSimpleFileSystemDriverBinding; | |
extern EFI_COMPONENT_NAME_PROTOCOL gEmuSimpleFileSystemComponentName; | |
extern EFI_COMPONENT_NAME2_PROTOCOL gEmuSimpleFileSystemComponentName2; | |
#define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'f', 's') | |
typedef struct { | |
UINTN Signature; | |
EMU_IO_THUNK_PROTOCOL *IoThunk; | |
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL SimpleFileSystem; | |
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Io; | |
EFI_UNICODE_STRING_TABLE *ControllerNameTable; | |
} EMU_SIMPLE_FILE_SYSTEM_PRIVATE; | |
#define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS(a) \ | |
CR (a, \ | |
EMU_SIMPLE_FILE_SYSTEM_PRIVATE, \ | |
SimpleFileSystem, \ | |
EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE \ | |
) | |
#define EMU_EFI_FILE_PRIVATE_SIGNATURE SIGNATURE_32 ('e', 'm', 'f', 's') | |
typedef struct { | |
UINTN Signature; | |
EMU_IO_THUNK_PROTOCOL *IoThunk; | |
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem; | |
EFI_FILE_PROTOCOL EfiFile; | |
EFI_FILE_PROTOCOL *Io; | |
} EMU_EFI_FILE_PRIVATE; | |
#define EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS(a) \ | |
CR (a, \ | |
EMU_EFI_FILE_PRIVATE, \ | |
EfiFile, \ | |
EMU_EFI_FILE_PRIVATE_SIGNATURE \ | |
) | |
#endif |