+++ /dev/null
-/** @file\r
- SimpleFileSystem protocol as defined in the EFI 1.0 specification.\r
-\r
- The SimpleFileSystem protocol is the programatic access to the FAT (12,16,32) \r
- file system specified in EFI 1.0. It can also be used to abstract a file \r
- system other than FAT.\r
-\r
- EFI 1.0 can boot from any valid EFI image contained in a SimpleFileSystem\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: SimpleFileSystem.h\r
-\r
-**/\r
-\r
-#ifndef __SIMPLE_FILE_SYSTEM_H__\r
-#define __SIMPLE_FILE_SYSTEM_H__\r
-\r
-#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \\r
- { \\r
- 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \\r
- }\r
-\r
-typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;\r
-typedef struct _EFI_FILE EFI_FILE;\r
-typedef struct _EFI_FILE *EFI_FILE_HANDLE;\r
-typedef struct _EFI_FILE EFI_FILE_PROTOCOL;\r
-\r
-/**\r
- Open the root directory on a volume.\r
-\r
- @param This Protocol instance pointer.\r
- @param Root Returns an Open file handle for the root directory\r
-\r
- @retval EFI_SUCCESS The device was opened.\r
- @retval EFI_UNSUPPORTED This volume does not suppor the file system.\r
- @retval EFI_NO_MEDIA The device has no media.\r
- @retval EFI_DEVICE_ERROR The device reported an error.\r
- @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted\r
- @retval EFI_ACCESS_DENIED The service denied access to the file\r
- @retval EFI_OUT_OF_RESOURCES The volume was not opened due to lack of resources\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME) (\r
- IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,\r
- OUT EFI_FILE **Root\r
- )\r
-;\r
-\r
-#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000\r
-\r
-struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL {\r
- UINT64 Revision;\r
- EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME OpenVolume;\r
-};\r
-\r
-/**\r
- Open the root directory on a volume.\r
-\r
- @param This Protocol instance pointer.\r
- @param NewHandle Returns File Handle for FileName\r
- @param FileName Null terminated string. "\", ".", and ".." are supported\r
- @param OpenMode Open mode for file.\r
- @param Attributes Only used for EFI_FILE_MODE_CREATE\r
-\r
- @retval EFI_SUCCESS The device was opened.\r
- @retval EFI_NOT_FOUND The specified file could not be found on the device\r
- @retval EFI_NO_MEDIA The device has no media.\r
- @retval EFI_MEDIA_CHANGED The media has changed\r
- @retval EFI_DEVICE_ERROR The device reported an error.\r
- @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted\r
- @retval EFI_ACCESS_DENIED The service denied access to the file\r
- @retval EFI_OUT_OF_RESOURCES The volume was not opened due to lack of resources\r
- @retval EFI_VOLUME_FULL The volume is full.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_OPEN) (\r
- IN EFI_FILE *This,\r
- OUT EFI_FILE **NewHandle,\r
- IN CHAR16 *FileName,\r
- IN UINT64 OpenMode,\r
- IN UINT64 Attributes\r
- )\r
-;\r
-\r
-//\r
-// Open modes\r
-//\r
-#define EFI_FILE_MODE_READ 0x0000000000000001ULL\r
-#define EFI_FILE_MODE_WRITE 0x0000000000000002ULL\r
-#define EFI_FILE_MODE_CREATE 0x8000000000000000ULL\r
-\r
-//\r
-// File attributes\r
-//\r
-#define EFI_FILE_READ_ONLY 0x0000000000000001ULL\r
-#define EFI_FILE_HIDDEN 0x0000000000000002ULL\r
-#define EFI_FILE_SYSTEM 0x0000000000000004ULL\r
-#define EFI_FILE_RESERVED 0x0000000000000008ULL\r
-#define EFI_FILE_DIRECTORY 0x0000000000000010ULL\r
-#define EFI_FILE_ARCHIVE 0x0000000000000020ULL\r
-#define EFI_FILE_VALID_ATTR 0x0000000000000037ULL\r
-\r
-/**\r
- Close the file handle\r
-\r
- @param This Protocol instance pointer.\r
-\r
- @retval EFI_SUCCESS The device was opened.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_CLOSE) (\r
- IN EFI_FILE *This\r
- )\r
-;\r
-\r
-/**\r
- Close and delete the file handle\r
-\r
- @param This Protocol instance pointer.\r
- \r
- @retval EFI_SUCCESS The device was opened.\r
- @retval EFI_WARN_DELETE_FAILURE The handle was closed but the file was not deleted\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_DELETE) (\r
- IN EFI_FILE *This\r
- )\r
-;\r
-\r
-/**\r
- Read data from the file.\r
-\r
- @param This Protocol instance pointer.\r
- @param BufferSize On input size of buffer, on output amount of data in buffer.\r
- @param Buffer The buffer in which data is read.\r
-\r
- @retval EFI_SUCCESS Data was read.\r
- @retval EFI_NO_MEDIA The device has no media\r
- @retval EFI_DEVICE_ERROR The device reported an error\r
- @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted\r
- @retval EFI_BUFFER_TO_SMALL BufferSize is too small. BufferSize contains required size\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_READ) (\r
- IN EFI_FILE *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
- )\r
-;\r
-\r
-/**\r
- Write data from to the file.\r
-\r
- @param This Protocol instance pointer.\r
- @param BufferSize On input size of buffer, on output amount of data in buffer.\r
- @param Buffer The buffer in which data to write.\r
-\r
- @retval EFI_SUCCESS Data was written.\r
- @retval EFI_UNSUPPORT Writes to Open directory are not supported\r
- @retval EFI_NO_MEDIA The device has no media\r
- @retval EFI_DEVICE_ERROR The device reported an error\r
- @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted\r
- @retval EFI_WRITE_PROTECTED The device is write protected\r
- @retval EFI_ACCESS_DENIED The file was open for read only\r
- @retval EFI_VOLUME_FULL The volume is full\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_WRITE) (\r
- IN EFI_FILE *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
- )\r
-;\r
-\r
-/**\r
- Set a files current position\r
-\r
- @param This Protocol instance pointer.\r
- @param Position Byte possition from the start of the file\r
- \r
- @retval EFI_SUCCESS Data was written.\r
- @retval EFI_UNSUPPORTED Seek request for non-zero is not valid on open.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_SET_POSITION) (\r
- IN EFI_FILE *This,\r
- IN UINT64 Position\r
- )\r
-;\r
-\r
-/**\r
- Get a files current position\r
-\r
- @param This Protocol instance pointer.\r
- @param Position Byte possition from the start of the file\r
- \r
- @retval EFI_SUCCESS Data was written.\r
- @retval EFI_UNSUPPORTED Seek request for non-zero is not valid on open.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_GET_POSITION) (\r
- IN EFI_FILE *This,\r
- OUT UINT64 *Position\r
- )\r
-;\r
-\r
-/**\r
- Get information about a file\r
-\r
- @param This Protocol instance pointer.\r
- @param InformationType Type of info to return in Buffer\r
- @param BufferSize On input size of buffer, on output amount of data in buffer.\r
- @param Buffer The buffer to return data.\r
-\r
- @retval EFI_SUCCESS Data was returned.\r
- @retval EFI_UNSUPPORT InformationType is not supported\r
- @retval EFI_NO_MEDIA The device has no media\r
- @retval EFI_DEVICE_ERROR The device reported an error\r
- @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted\r
- @retval EFI_WRITE_PROTECTED The device is write protected\r
- @retval EFI_ACCESS_DENIED The file was open for read only\r
- @retval EFI_BUFFER_TOO_SMALL Buffer was too small, required size returned in BufferSize\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_GET_INFO) (\r
- IN EFI_FILE *This,\r
- IN EFI_GUID *InformationType,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
- )\r
-;\r
-\r
-/**\r
- Set information about a file\r
-\r
- @param File Protocol instance pointer.\r
- @param InformationType Type of info in Buffer\r
- @param BufferSize Size of buffer.\r
- @param Buffer The data to write.\r
-\r
- @retval EFI_SUCCESS Data was returned.\r
- @retval EFI_UNSUPPORT InformationType is not supported\r
- @retval EFI_NO_MEDIA The device has no media\r
- @retval EFI_DEVICE_ERROR The device reported an error\r
- @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted\r
- @retval EFI_WRITE_PROTECTED The device is write protected\r
- @retval EFI_ACCESS_DENIED The file was open for read only\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_SET_INFO) (\r
- IN EFI_FILE *This,\r
- IN EFI_GUID *InformationType,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer\r
- )\r
-;\r
-\r
-/**\r
- Flush data back for the file handle\r
-\r
- @param This Protocol instance pointer.\r
-\r
- @retval EFI_SUCCESS Data was written.\r
- @retval EFI_UNSUPPORT Writes to Open directory are not supported\r
- @retval EFI_NO_MEDIA The device has no media\r
- @retval EFI_DEVICE_ERROR The device reported an error\r
- @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted\r
- @retval EFI_WRITE_PROTECTED The device is write protected\r
- @retval EFI_ACCESS_DENIED The file was open for read only\r
- @retval EFI_VOLUME_FULL The volume is full\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FILE_FLUSH) (\r
- IN EFI_FILE *This\r
- )\r
-;\r
-\r
-#define EFI_FILE_HANDLE_REVISION 0x00010000\r
-#define EFI_FILE_PROTOCOL_REVISION EFI_FILE_HANDLE_REVISION\r
-\r
-struct _EFI_FILE {\r
- UINT64 Revision;\r
- EFI_FILE_OPEN Open;\r
- EFI_FILE_CLOSE Close;\r
- EFI_FILE_DELETE Delete;\r
- EFI_FILE_READ Read;\r
- EFI_FILE_WRITE Write;\r
- EFI_FILE_GET_POSITION GetPosition;\r
- EFI_FILE_SET_POSITION SetPosition;\r
- EFI_FILE_GET_INFO GetInfo;\r
- EFI_FILE_SET_INFO SetInfo;\r
- EFI_FILE_FLUSH Flush;\r
-};\r
-\r
-\r
-extern EFI_GUID gEfiSimpleFileSystemProtocolGuid;\r
-\r
-#endif\r