199767f8919635c4928607450d9e0abb932109ceToomas Soome/* $FreeBSD$ */
199767f8919635c4928607450d9e0abb932109ceToomas Soome#ifndef _EFI_PROT_H
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define _EFI_PROT_H
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/*++
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeCopyright (c) 1999 - 2002 Intel Corporation. All rights reserved
199767f8919635c4928607450d9e0abb932109ceToomas SoomeThis software and associated documentation (if any) is furnished
199767f8919635c4928607450d9e0abb932109ceToomas Soomeunder a license and may only be used or copied in accordance
199767f8919635c4928607450d9e0abb932109ceToomas Soomewith the terms of the license. Except as permitted by such
199767f8919635c4928607450d9e0abb932109ceToomas Soomelicense, no part of this software or documentation may be
199767f8919635c4928607450d9e0abb932109ceToomas Soomereproduced, stored in a retrieval system, or transmitted in any
199767f8919635c4928607450d9e0abb932109ceToomas Soomeform or by any means without the express written consent of
199767f8919635c4928607450d9e0abb932109ceToomas SoomeIntel Corporation.
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeModule Name:
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome efiprot.h
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeAbstract:
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI Protocols
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeRevision History
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome--*/
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Device Path protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DEVICE_PATH_PROTOCOL \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Block IO protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define BLOCK_IO_PROTOCOL \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_BLOCK_IO_INTERFACE_REVISION 0x00010000
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeINTERFACE_DECL(_EFI_BLOCK_IO);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_BLOCK_RESET) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_BLOCK_IO *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN BOOLEAN ExtendedVerification
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_BLOCK_READ) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_BLOCK_IO *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT32 MediaId,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_LBA LBA,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN BufferSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT VOID *Buffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_BLOCK_WRITE) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_BLOCK_IO *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT32 MediaId,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_LBA LBA,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN BufferSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN VOID *Buffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_BLOCK_FLUSH) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_BLOCK_IO *This
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 MediaId;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BOOLEAN RemovableMedia;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BOOLEAN MediaPresent;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome BOOLEAN LogicalPartition;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BOOLEAN ReadOnly;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BOOLEAN WriteCaching;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 BlockSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 IoAlign;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_LBA LastBlock;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_BLOCK_IO_MEDIA;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _EFI_BLOCK_IO {
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 Revision;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_BLOCK_IO_MEDIA *Media;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_BLOCK_RESET Reset;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_BLOCK_READ ReadBlocks;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_BLOCK_WRITE WriteBlocks;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_BLOCK_FLUSH FlushBlocks;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_BLOCK_IO;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Disk Block IO protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DISK_IO_PROTOCOL \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_DISK_IO_INTERFACE_REVISION 0x00010000
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeINTERFACE_DECL(_EFI_DISK_IO);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_DISK_READ) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_DISK_IO *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT32 MediaId,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT64 Offset,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN BufferSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT VOID *Buffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_DISK_WRITE) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_DISK_IO *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT32 MediaId,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT64 Offset,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN BufferSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN VOID *Buffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _EFI_DISK_IO {
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 Revision;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DISK_READ ReadDisk;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DISK_WRITE WriteDisk;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_DISK_IO;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Simple file system protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIMPLE_FILE_SYSTEM_PROTOCOL \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeINTERFACE_DECL(_EFI_FILE_IO_INTERFACE);
199767f8919635c4928607450d9e0abb932109ceToomas SoomeINTERFACE_DECL(_EFI_FILE_HANDLE);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_VOLUME_OPEN) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_IO_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT struct _EFI_FILE_HANDLE **Root
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_IO_INTERFACE_REVISION 0x00010000
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _EFI_FILE_IO_INTERFACE {
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 Revision;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_VOLUME_OPEN OpenVolume;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_FILE_IO_INTERFACE;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_OPEN) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT struct _EFI_FILE_HANDLE **NewHandle,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN CHAR16 *FileName,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT64 OpenMode,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT64 Attributes
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Open modes
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_MODE_READ 0x0000000000000001
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_MODE_WRITE 0x0000000000000002
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_MODE_CREATE 0x8000000000000000
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome// File attributes
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_READ_ONLY 0x0000000000000001
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_HIDDEN 0x0000000000000002
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_SYSTEM 0x0000000000000004
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_RESERVIED 0x0000000000000008
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_DIRECTORY 0x0000000000000010
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_ARCHIVE 0x0000000000000020
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_VALID_ATTR 0x0000000000000037
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_CLOSE) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_DELETE) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_READ) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT UINTN *BufferSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT VOID *Buffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_WRITE) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT UINTN *BufferSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN VOID *Buffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_SET_POSITION) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT64 Position
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_GET_POSITION) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT UINT64 *Position
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_GET_INFO) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_GUID *InformationType,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT UINTN *BufferSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT VOID *Buffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_SET_INFO) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_GUID *InformationType,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN BufferSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN VOID *Buffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_FILE_FLUSH) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_FILE_HANDLE *File
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_HANDLE_REVISION 0x00010000
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _EFI_FILE_HANDLE {
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 Revision;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_OPEN Open;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_CLOSE Close;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_DELETE Delete;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_READ Read;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_WRITE Write;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_GET_POSITION GetPosition;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_SET_POSITION SetPosition;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_GET_INFO GetInfo;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_SET_INFO SetInfo;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_FILE_FLUSH Flush;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_FILE, *EFI_FILE_HANDLE;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// File information types
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_INFO_ID \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 Size;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 FileSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 PhysicalSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_TIME CreateTime;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_TIME LastAccessTime;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_TIME ModificationTime;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 Attribute;
199767f8919635c4928607450d9e0abb932109ceToomas Soome CHAR16 FileName[1];
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_FILE_INFO;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// The FileName field of the EFI_FILE_INFO data structure is variable length.
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
199767f8919635c4928607450d9e0abb932109ceToomas Soome// be the size of the data structure without the FileName field. The following macro
199767f8919635c4928607450d9e0abb932109ceToomas Soome// computes this size correctly no matter how big the FileName array is declared.
199767f8919635c4928607450d9e0abb932109ceToomas Soome// This is required to make the EFI_FILE_INFO data structure ANSI compilant.
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_SYSTEM_INFO_ID \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 Size;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BOOLEAN ReadOnly;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 VolumeSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 FreeSpace;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 BlockSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome CHAR16 VolumeLabel[1];
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_FILE_SYSTEM_INFO;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
199767f8919635c4928607450d9e0abb932109ceToomas Soome// to be the size of the data structure without the VolumeLable field. The following macro
199767f8919635c4928607450d9e0abb932109ceToomas Soome// computes this size correctly no matter how big the VolumeLable array is declared.
199767f8919635c4928607450d9e0abb932109ceToomas Soome// This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soome CHAR16 VolumeLabel[1];
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_FILE_SYSTEM_VOLUME_LABEL_INFO;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Load file protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define LOAD_FILE_PROTOCOL \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeINTERFACE_DECL(_EFI_LOAD_FILE_INTERFACE);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_LOAD_FILE) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_LOAD_FILE_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_DEVICE_PATH *FilePath,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN BOOLEAN BootPolicy,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT UINTN *BufferSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN VOID *Buffer OPTIONAL
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _EFI_LOAD_FILE_INTERFACE {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_LOAD_FILE LoadFile;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_LOAD_FILE_INTERFACE;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Device IO protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define DEVICE_IO_PROTOCOL \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeINTERFACE_DECL(_EFI_DEVICE_IO_INTERFACE);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef enum {
199767f8919635c4928607450d9e0abb932109ceToomas Soome IO_UINT8,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IO_UINT16,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IO_UINT32,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IO_UINT64,
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome MMIO_COPY_UINT8,
199767f8919635c4928607450d9e0abb932109ceToomas Soome MMIO_COPY_UINT16,
199767f8919635c4928607450d9e0abb932109ceToomas Soome MMIO_COPY_UINT32,
199767f8919635c4928607450d9e0abb932109ceToomas Soome MMIO_COPY_UINT64
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_IO_WIDTH;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define EFI_PCI_ADDRESS(bus,dev,func,reg) \
199767f8919635c4928607450d9e0abb932109ceToomas Soome ( (UINT64) ( (((UINTN)bus) << 24) + (((UINTN)dev) << 16) + (((UINTN)func) << 8) + ((UINTN)reg) ))
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_DEVICE_IO) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_DEVICE_IO_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_IO_WIDTH Width,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT64 Address,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN Count,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT VOID *Buffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_IO Read;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_DEVICE_IO Write;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_IO_ACCESS;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_PCI_DEVICE_PATH) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_DEVICE_IO_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINT64 Address,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT EFI_DEVICE_PATH **PciDevicePath
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef enum {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EfiBusMasterRead,
199767f8919635c4928607450d9e0abb932109ceToomas Soome EfiBusMasterWrite,
199767f8919635c4928607450d9e0abb932109ceToomas Soome EfiBusMasterCommonBuffer
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_IO_OPERATION_TYPE;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_IO_MAP) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_DEVICE_IO_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_IO_OPERATION_TYPE Operation,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_PHYSICAL_ADDRESS *HostAddress,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT UINTN *NumberOfBytes,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT VOID **Mapping
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_IO_UNMAP) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_DEVICE_IO_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN VOID *Mapping
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_DEVICE_IO_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_ALLOCATE_TYPE Type,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_MEMORY_TYPE MemoryType,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN Pages,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT EFI_PHYSICAL_ADDRESS *HostAddress
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_IO_FLUSH) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_DEVICE_IO_INTERFACE *This
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFI_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_IO_FREE_BUFFER) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_DEVICE_IO_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN Pages,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_PHYSICAL_ADDRESS HostAddress
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _EFI_DEVICE_IO_INTERFACE {
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IO_ACCESS Mem;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IO_ACCESS Io;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IO_ACCESS Pci;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IO_MAP Map;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_PCI_DEVICE_PATH PciDevicePath;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IO_UNMAP Unmap;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IO_ALLOCATE_BUFFER AllocateBuffer;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IO_FLUSH Flush;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_IO_FREE_BUFFER FreeBuffer;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_DEVICE_IO_INTERFACE;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome// Unicode Collation protocol
199767f8919635c4928607450d9e0abb932109ceToomas Soome//
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define UNICODE_COLLATION_PROTOCOL \
199767f8919635c4928607450d9e0abb932109ceToomas Soome { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff)
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeINTERFACE_DECL(_EFI_UNICODE_COLLATION_INTERFACE);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeINTN
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_UNICODE_COLLATION_STRICOLL) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN CHAR16 *s1,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN CHAR16 *s2
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeBOOLEAN
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN CHAR16 *String,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN CHAR16 *Pattern
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeVOID
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_UNICODE_COLLATION_STRLWR) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT CHAR16 *Str
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeVOID
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_UNICODE_COLLATION_STRUPR) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN OUT CHAR16 *Str
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeVOID
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN FatSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN CHAR8 *Fat,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT CHAR16 *String
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef
199767f8919635c4928607450d9e0abb932109ceToomas SoomeBOOLEAN
199767f8919635c4928607450d9e0abb932109ceToomas Soome(EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT) (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN CHAR16 *String,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN UINTN FatSize,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OUT CHAR8 *Fat
199767f8919635c4928607450d9e0abb932109ceToomas Soome );
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soometypedef struct _EFI_UNICODE_COLLATION_INTERFACE {
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome // general
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_UNICODE_COLLATION_STRICOLL StriColl;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_UNICODE_COLLATION_METAIMATCH MetaiMatch;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_UNICODE_COLLATION_STRLWR StrLwr;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_UNICODE_COLLATION_STRUPR StrUpr;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome // for supporting fat volumes
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_UNICODE_COLLATION_FATTOSTR FatToStr;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_UNICODE_COLLATION_STRTOFAT StrToFat;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome CHAR8 *SupportedLanguages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome} EFI_UNICODE_COLLATION_INTERFACE;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#endif