177943Sdfr/* $FreeBSD$ */ 277943Sdfr#ifndef _EFI_PROT_H 377943Sdfr#define _EFI_PROT_H 477943Sdfr 577943Sdfr/*++ 677943Sdfr 7163898SmarcelCopyright (c) 1999 - 2002 Intel Corporation. All rights reserved 8163898SmarcelThis software and associated documentation (if any) is furnished 9163898Smarcelunder a license and may only be used or copied in accordance 10163898Smarcelwith the terms of the license. Except as permitted by such 11163898Smarcellicense, no part of this software or documentation may be 12163898Smarcelreproduced, stored in a retrieval system, or transmitted in any 13163898Smarcelform or by any means without the express written consent of 14163898SmarcelIntel Corporation. 1577943Sdfr 1677943SdfrModule Name: 1777943Sdfr 1877943Sdfr efiprot.h 1977943Sdfr 2077943SdfrAbstract: 2177943Sdfr 2277943Sdfr EFI Protocols 2377943Sdfr 2477943Sdfr 2577943Sdfr 2677943SdfrRevision History 2777943Sdfr 2877943Sdfr--*/ 2977943Sdfr 30163898Smarcel// 31163898Smarcel// Device Path protocol 32163898Smarcel// 3377943Sdfr 3477943Sdfr#define DEVICE_PATH_PROTOCOL \ 3577943Sdfr { 0x9576e91, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } 3677943Sdfr 3777943Sdfr 38163898Smarcel// 39163898Smarcel// Block IO protocol 40163898Smarcel// 4177943Sdfr 4277943Sdfr#define BLOCK_IO_PROTOCOL \ 4377943Sdfr { 0x964e5b21, 0x6459, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } 4477943Sdfr#define EFI_BLOCK_IO_INTERFACE_REVISION 0x00010000 4577943Sdfr 4677943SdfrINTERFACE_DECL(_EFI_BLOCK_IO); 4777943Sdfr 4877943Sdfrtypedef 4977943SdfrEFI_STATUS 5077943Sdfr(EFIAPI *EFI_BLOCK_RESET) ( 5177943Sdfr IN struct _EFI_BLOCK_IO *This, 5277943Sdfr IN BOOLEAN ExtendedVerification 5377943Sdfr ); 5477943Sdfr 5577943Sdfrtypedef 5677943SdfrEFI_STATUS 5777943Sdfr(EFIAPI *EFI_BLOCK_READ) ( 5877943Sdfr IN struct _EFI_BLOCK_IO *This, 5977943Sdfr IN UINT32 MediaId, 6077943Sdfr IN EFI_LBA LBA, 6177943Sdfr IN UINTN BufferSize, 6277943Sdfr OUT VOID *Buffer 6377943Sdfr ); 6477943Sdfr 6577943Sdfr 6677943Sdfrtypedef 6777943SdfrEFI_STATUS 6877943Sdfr(EFIAPI *EFI_BLOCK_WRITE) ( 6977943Sdfr IN struct _EFI_BLOCK_IO *This, 7077943Sdfr IN UINT32 MediaId, 7177943Sdfr IN EFI_LBA LBA, 7277943Sdfr IN UINTN BufferSize, 7377943Sdfr IN VOID *Buffer 7477943Sdfr ); 7577943Sdfr 7677943Sdfr 7777943Sdfrtypedef 7877943SdfrEFI_STATUS 7977943Sdfr(EFIAPI *EFI_BLOCK_FLUSH) ( 8077943Sdfr IN struct _EFI_BLOCK_IO *This 8177943Sdfr ); 8277943Sdfr 8377943Sdfr 8477943Sdfr 8577943Sdfrtypedef struct { 8677943Sdfr UINT32 MediaId; 8777943Sdfr BOOLEAN RemovableMedia; 8877943Sdfr BOOLEAN MediaPresent; 8977943Sdfr 9077943Sdfr BOOLEAN LogicalPartition; 9177943Sdfr BOOLEAN ReadOnly; 9277943Sdfr BOOLEAN WriteCaching; 9377943Sdfr 9477943Sdfr UINT32 BlockSize; 9577943Sdfr UINT32 IoAlign; 9677943Sdfr 9777943Sdfr EFI_LBA LastBlock; 9877943Sdfr} EFI_BLOCK_IO_MEDIA; 9977943Sdfr 10077943Sdfrtypedef struct _EFI_BLOCK_IO { 10177943Sdfr UINT64 Revision; 10277943Sdfr 10377943Sdfr EFI_BLOCK_IO_MEDIA *Media; 10477943Sdfr 10577943Sdfr EFI_BLOCK_RESET Reset; 10677943Sdfr EFI_BLOCK_READ ReadBlocks; 10777943Sdfr EFI_BLOCK_WRITE WriteBlocks; 10877943Sdfr EFI_BLOCK_FLUSH FlushBlocks; 10977943Sdfr 11077943Sdfr} EFI_BLOCK_IO; 11177943Sdfr 11277943Sdfr 11377943Sdfr 114163898Smarcel// 115163898Smarcel// Disk Block IO protocol 116163898Smarcel// 11777943Sdfr 11877943Sdfr#define DISK_IO_PROTOCOL \ 11977943Sdfr { 0xce345171, 0xba0b, 0x11d2, 0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } 12077943Sdfr#define EFI_DISK_IO_INTERFACE_REVISION 0x00010000 12177943Sdfr 12277943SdfrINTERFACE_DECL(_EFI_DISK_IO); 12377943Sdfr 12477943Sdfrtypedef 12577943SdfrEFI_STATUS 12677943Sdfr(EFIAPI *EFI_DISK_READ) ( 12777943Sdfr IN struct _EFI_DISK_IO *This, 12877943Sdfr IN UINT32 MediaId, 12977943Sdfr IN UINT64 Offset, 13077943Sdfr IN UINTN BufferSize, 13177943Sdfr OUT VOID *Buffer 13277943Sdfr ); 13377943Sdfr 13477943Sdfr 13577943Sdfrtypedef 13677943SdfrEFI_STATUS 13777943Sdfr(EFIAPI *EFI_DISK_WRITE) ( 13877943Sdfr IN struct _EFI_DISK_IO *This, 13977943Sdfr IN UINT32 MediaId, 14077943Sdfr IN UINT64 Offset, 14177943Sdfr IN UINTN BufferSize, 14277943Sdfr IN VOID *Buffer 14377943Sdfr ); 14477943Sdfr 14577943Sdfr 14677943Sdfrtypedef struct _EFI_DISK_IO { 14777943Sdfr UINT64 Revision; 14877943Sdfr EFI_DISK_READ ReadDisk; 14977943Sdfr EFI_DISK_WRITE WriteDisk; 15077943Sdfr} EFI_DISK_IO; 15177943Sdfr 15277943Sdfr 153163898Smarcel// 154163898Smarcel// Simple file system protocol 155163898Smarcel// 15677943Sdfr 15777943Sdfr#define SIMPLE_FILE_SYSTEM_PROTOCOL \ 15877943Sdfr { 0x964e5b22, 0x6459, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } 15977943Sdfr 16077943SdfrINTERFACE_DECL(_EFI_FILE_IO_INTERFACE); 16177943SdfrINTERFACE_DECL(_EFI_FILE_HANDLE); 16277943Sdfr 16377943Sdfrtypedef 16477943SdfrEFI_STATUS 16577943Sdfr(EFIAPI *EFI_VOLUME_OPEN) ( 16677943Sdfr IN struct _EFI_FILE_IO_INTERFACE *This, 16777943Sdfr OUT struct _EFI_FILE_HANDLE **Root 16877943Sdfr ); 16977943Sdfr 17077943Sdfr#define EFI_FILE_IO_INTERFACE_REVISION 0x00010000 17177943Sdfr 17277943Sdfrtypedef struct _EFI_FILE_IO_INTERFACE { 17377943Sdfr UINT64 Revision; 17477943Sdfr EFI_VOLUME_OPEN OpenVolume; 17577943Sdfr} EFI_FILE_IO_INTERFACE; 17677943Sdfr 177163898Smarcel// 178163898Smarcel// 179163898Smarcel// 180163898Smarcel 18177943Sdfrtypedef 18277943SdfrEFI_STATUS 18377943Sdfr(EFIAPI *EFI_FILE_OPEN) ( 18477943Sdfr IN struct _EFI_FILE_HANDLE *File, 18577943Sdfr OUT struct _EFI_FILE_HANDLE **NewHandle, 18677943Sdfr IN CHAR16 *FileName, 18777943Sdfr IN UINT64 OpenMode, 18877943Sdfr IN UINT64 Attributes 18977943Sdfr ); 19077943Sdfr 191163898Smarcel// Open modes 19277943Sdfr#define EFI_FILE_MODE_READ 0x0000000000000001 19377943Sdfr#define EFI_FILE_MODE_WRITE 0x0000000000000002 19477943Sdfr#define EFI_FILE_MODE_CREATE 0x8000000000000000 19577943Sdfr 196163898Smarcel// File attributes 19777943Sdfr#define EFI_FILE_READ_ONLY 0x0000000000000001 19877943Sdfr#define EFI_FILE_HIDDEN 0x0000000000000002 19977943Sdfr#define EFI_FILE_SYSTEM 0x0000000000000004 20077943Sdfr#define EFI_FILE_RESERVIED 0x0000000000000008 20177943Sdfr#define EFI_FILE_DIRECTORY 0x0000000000000010 20277943Sdfr#define EFI_FILE_ARCHIVE 0x0000000000000020 20377943Sdfr#define EFI_FILE_VALID_ATTR 0x0000000000000037 20477943Sdfr 20577943Sdfrtypedef 20677943SdfrEFI_STATUS 20777943Sdfr(EFIAPI *EFI_FILE_CLOSE) ( 20877943Sdfr IN struct _EFI_FILE_HANDLE *File 20977943Sdfr ); 21077943Sdfr 21177943Sdfrtypedef 21277943SdfrEFI_STATUS 21377943Sdfr(EFIAPI *EFI_FILE_DELETE) ( 21477943Sdfr IN struct _EFI_FILE_HANDLE *File 21577943Sdfr ); 21677943Sdfr 21777943Sdfrtypedef 21877943SdfrEFI_STATUS 21977943Sdfr(EFIAPI *EFI_FILE_READ) ( 22077943Sdfr IN struct _EFI_FILE_HANDLE *File, 22177943Sdfr IN OUT UINTN *BufferSize, 22277943Sdfr OUT VOID *Buffer 22377943Sdfr ); 22477943Sdfr 22577943Sdfrtypedef 22677943SdfrEFI_STATUS 22777943Sdfr(EFIAPI *EFI_FILE_WRITE) ( 22877943Sdfr IN struct _EFI_FILE_HANDLE *File, 22977943Sdfr IN OUT UINTN *BufferSize, 23077943Sdfr IN VOID *Buffer 23177943Sdfr ); 23277943Sdfr 23377943Sdfrtypedef 23477943SdfrEFI_STATUS 23577943Sdfr(EFIAPI *EFI_FILE_SET_POSITION) ( 23677943Sdfr IN struct _EFI_FILE_HANDLE *File, 23777943Sdfr IN UINT64 Position 23877943Sdfr ); 23977943Sdfr 24077943Sdfrtypedef 24177943SdfrEFI_STATUS 24277943Sdfr(EFIAPI *EFI_FILE_GET_POSITION) ( 24377943Sdfr IN struct _EFI_FILE_HANDLE *File, 24477943Sdfr OUT UINT64 *Position 24577943Sdfr ); 24677943Sdfr 24777943Sdfrtypedef 24877943SdfrEFI_STATUS 24977943Sdfr(EFIAPI *EFI_FILE_GET_INFO) ( 25077943Sdfr IN struct _EFI_FILE_HANDLE *File, 25177943Sdfr IN EFI_GUID *InformationType, 25277943Sdfr IN OUT UINTN *BufferSize, 25377943Sdfr OUT VOID *Buffer 25477943Sdfr ); 25577943Sdfr 25677943Sdfrtypedef 25777943SdfrEFI_STATUS 25877943Sdfr(EFIAPI *EFI_FILE_SET_INFO) ( 25977943Sdfr IN struct _EFI_FILE_HANDLE *File, 26077943Sdfr IN EFI_GUID *InformationType, 26177943Sdfr IN UINTN BufferSize, 26277943Sdfr IN VOID *Buffer 26377943Sdfr ); 26477943Sdfr 26577943Sdfrtypedef 26677943SdfrEFI_STATUS 26777943Sdfr(EFIAPI *EFI_FILE_FLUSH) ( 26877943Sdfr IN struct _EFI_FILE_HANDLE *File 26977943Sdfr ); 27077943Sdfr 27177943Sdfr 27277943Sdfr 27377943Sdfr#define EFI_FILE_HANDLE_REVISION 0x00010000 27477943Sdfrtypedef struct _EFI_FILE_HANDLE { 27577943Sdfr UINT64 Revision; 27677943Sdfr EFI_FILE_OPEN Open; 27777943Sdfr EFI_FILE_CLOSE Close; 27877943Sdfr EFI_FILE_DELETE Delete; 27977943Sdfr EFI_FILE_READ Read; 28077943Sdfr EFI_FILE_WRITE Write; 28177943Sdfr EFI_FILE_GET_POSITION GetPosition; 28277943Sdfr EFI_FILE_SET_POSITION SetPosition; 28377943Sdfr EFI_FILE_GET_INFO GetInfo; 28477943Sdfr EFI_FILE_SET_INFO SetInfo; 28577943Sdfr EFI_FILE_FLUSH Flush; 28677943Sdfr} EFI_FILE, *EFI_FILE_HANDLE; 28777943Sdfr 28877943Sdfr 289163898Smarcel// 290163898Smarcel// File information types 291163898Smarcel// 29277943Sdfr 29377943Sdfr#define EFI_FILE_INFO_ID \ 29477943Sdfr { 0x9576e92, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } 29577943Sdfr 29677943Sdfrtypedef struct { 29777943Sdfr UINT64 Size; 29877943Sdfr UINT64 FileSize; 29977943Sdfr UINT64 PhysicalSize; 30077943Sdfr EFI_TIME CreateTime; 30177943Sdfr EFI_TIME LastAccessTime; 30277943Sdfr EFI_TIME ModificationTime; 30377943Sdfr UINT64 Attribute; 30477943Sdfr CHAR16 FileName[1]; 30577943Sdfr} EFI_FILE_INFO; 30677943Sdfr 307163898Smarcel// 308163898Smarcel// The FileName field of the EFI_FILE_INFO data structure is variable length. 309163898Smarcel// Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to 310163898Smarcel// be the size of the data structure without the FileName field. The following macro 311163898Smarcel// computes this size correctly no matter how big the FileName array is declared. 312163898Smarcel// This is required to make the EFI_FILE_INFO data structure ANSI compilant. 313163898Smarcel// 31477943Sdfr 31577943Sdfr#define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName) 31677943Sdfr 31777943Sdfr#define EFI_FILE_SYSTEM_INFO_ID \ 31877943Sdfr { 0x9576e93, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } 31977943Sdfr 32077943Sdfrtypedef struct { 32177943Sdfr UINT64 Size; 32277943Sdfr BOOLEAN ReadOnly; 32377943Sdfr UINT64 VolumeSize; 32477943Sdfr UINT64 FreeSpace; 32577943Sdfr UINT32 BlockSize; 32677943Sdfr CHAR16 VolumeLabel[1]; 32777943Sdfr} EFI_FILE_SYSTEM_INFO; 32877943Sdfr 329163898Smarcel// 330163898Smarcel// The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length. 331163898Smarcel// Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs 332163898Smarcel// to be the size of the data structure without the VolumeLable field. The following macro 333163898Smarcel// computes this size correctly no matter how big the VolumeLable array is declared. 334163898Smarcel// This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant. 335163898Smarcel// 33677943Sdfr 33777943Sdfr#define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel) 33877943Sdfr 33977943Sdfr#define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID \ 34077943Sdfr { 0xDB47D7D3,0xFE81, 0x11d3, 0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } 34177943Sdfr 34277943Sdfrtypedef struct { 34377943Sdfr CHAR16 VolumeLabel[1]; 34477943Sdfr} EFI_FILE_SYSTEM_VOLUME_LABEL_INFO; 34577943Sdfr 34677943Sdfr#define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel) 34777943Sdfr 348163898Smarcel// 349163898Smarcel// Load file protocol 350163898Smarcel// 35177943Sdfr 352163898Smarcel 35377943Sdfr#define LOAD_FILE_PROTOCOL \ 35477943Sdfr { 0x56EC3091, 0x954C, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B } 35577943Sdfr 35677943SdfrINTERFACE_DECL(_EFI_LOAD_FILE_INTERFACE); 35777943Sdfr 35877943Sdfrtypedef 35977943SdfrEFI_STATUS 36077943Sdfr(EFIAPI *EFI_LOAD_FILE) ( 36177943Sdfr IN struct _EFI_LOAD_FILE_INTERFACE *This, 36277943Sdfr IN EFI_DEVICE_PATH *FilePath, 36377943Sdfr IN BOOLEAN BootPolicy, 36477943Sdfr IN OUT UINTN *BufferSize, 36577943Sdfr IN VOID *Buffer OPTIONAL 36677943Sdfr ); 36777943Sdfr 36877943Sdfrtypedef struct _EFI_LOAD_FILE_INTERFACE { 36977943Sdfr EFI_LOAD_FILE LoadFile; 37077943Sdfr} EFI_LOAD_FILE_INTERFACE; 37177943Sdfr 37277943Sdfr 373163898Smarcel// 374163898Smarcel// Device IO protocol 375163898Smarcel// 37677943Sdfr 37777943Sdfr#define DEVICE_IO_PROTOCOL \ 37877943Sdfr { 0xaf6ac311, 0x84c3, 0x11d2, 0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } 37977943Sdfr 38077943SdfrINTERFACE_DECL(_EFI_DEVICE_IO_INTERFACE); 38177943Sdfr 38277943Sdfrtypedef enum { 38377943Sdfr IO_UINT8, 38477943Sdfr IO_UINT16, 38577943Sdfr IO_UINT32, 38677943Sdfr IO_UINT64, 387163898Smarcel// 388163898Smarcel// Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO 389163898Smarcel// 39077943Sdfr MMIO_COPY_UINT8, 39177943Sdfr MMIO_COPY_UINT16, 39277943Sdfr MMIO_COPY_UINT32, 39377943Sdfr MMIO_COPY_UINT64 39477943Sdfr} EFI_IO_WIDTH; 39577943Sdfr 396163898Smarcel#define EFI_PCI_ADDRESS(bus,dev,func,reg) \ 397163898Smarcel ( (UINT64) ( (((UINTN)bus) << 24) + (((UINTN)dev) << 16) + (((UINTN)func) << 8) + ((UINTN)reg) )) 39877943Sdfr 39977943Sdfrtypedef 40077943SdfrEFI_STATUS 40177943Sdfr(EFIAPI *EFI_DEVICE_IO) ( 40277943Sdfr IN struct _EFI_DEVICE_IO_INTERFACE *This, 40377943Sdfr IN EFI_IO_WIDTH Width, 40477943Sdfr IN UINT64 Address, 40577943Sdfr IN UINTN Count, 40677943Sdfr IN OUT VOID *Buffer 40777943Sdfr ); 40877943Sdfr 40977943Sdfrtypedef struct { 41077943Sdfr EFI_DEVICE_IO Read; 41177943Sdfr EFI_DEVICE_IO Write; 41277943Sdfr} EFI_IO_ACCESS; 41377943Sdfr 41477943Sdfrtypedef 41577943SdfrEFI_STATUS 41677943Sdfr(EFIAPI *EFI_PCI_DEVICE_PATH) ( 41777943Sdfr IN struct _EFI_DEVICE_IO_INTERFACE *This, 41877943Sdfr IN UINT64 Address, 41977943Sdfr IN OUT EFI_DEVICE_PATH **PciDevicePath 42077943Sdfr ); 42177943Sdfr 42277943Sdfrtypedef enum { 42377943Sdfr EfiBusMasterRead, 42477943Sdfr EfiBusMasterWrite, 42577943Sdfr EfiBusMasterCommonBuffer 42677943Sdfr} EFI_IO_OPERATION_TYPE; 42777943Sdfr 42877943Sdfrtypedef 42977943SdfrEFI_STATUS 43077943Sdfr(EFIAPI *EFI_IO_MAP) ( 43177943Sdfr IN struct _EFI_DEVICE_IO_INTERFACE *This, 43277943Sdfr IN EFI_IO_OPERATION_TYPE Operation, 43377943Sdfr IN EFI_PHYSICAL_ADDRESS *HostAddress, 43477943Sdfr IN OUT UINTN *NumberOfBytes, 43577943Sdfr OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, 43677943Sdfr OUT VOID **Mapping 43777943Sdfr ); 43877943Sdfr 43977943Sdfrtypedef 44077943SdfrEFI_STATUS 44177943Sdfr(EFIAPI *EFI_IO_UNMAP) ( 44277943Sdfr IN struct _EFI_DEVICE_IO_INTERFACE *This, 44377943Sdfr IN VOID *Mapping 44477943Sdfr ); 44577943Sdfr 44677943Sdfrtypedef 44777943SdfrEFI_STATUS 44877943Sdfr(EFIAPI *EFI_IO_ALLOCATE_BUFFER) ( 44977943Sdfr IN struct _EFI_DEVICE_IO_INTERFACE *This, 45077943Sdfr IN EFI_ALLOCATE_TYPE Type, 45177943Sdfr IN EFI_MEMORY_TYPE MemoryType, 45277943Sdfr IN UINTN Pages, 45377943Sdfr IN OUT EFI_PHYSICAL_ADDRESS *HostAddress 45477943Sdfr ); 45577943Sdfr 45677943Sdfrtypedef 45777943SdfrEFI_STATUS 45877943Sdfr(EFIAPI *EFI_IO_FLUSH) ( 45977943Sdfr IN struct _EFI_DEVICE_IO_INTERFACE *This 46077943Sdfr ); 46177943Sdfr 46277943Sdfrtypedef 46377943SdfrEFI_STATUS 46477943Sdfr(EFIAPI *EFI_IO_FREE_BUFFER) ( 46577943Sdfr IN struct _EFI_DEVICE_IO_INTERFACE *This, 46677943Sdfr IN UINTN Pages, 46777943Sdfr IN EFI_PHYSICAL_ADDRESS HostAddress 46877943Sdfr ); 46977943Sdfr 47077943Sdfrtypedef struct _EFI_DEVICE_IO_INTERFACE { 47177943Sdfr EFI_IO_ACCESS Mem; 47277943Sdfr EFI_IO_ACCESS Io; 47377943Sdfr EFI_IO_ACCESS Pci; 47477943Sdfr EFI_IO_MAP Map; 47577943Sdfr EFI_PCI_DEVICE_PATH PciDevicePath; 47677943Sdfr EFI_IO_UNMAP Unmap; 47777943Sdfr EFI_IO_ALLOCATE_BUFFER AllocateBuffer; 47877943Sdfr EFI_IO_FLUSH Flush; 47977943Sdfr EFI_IO_FREE_BUFFER FreeBuffer; 48077943Sdfr} EFI_DEVICE_IO_INTERFACE; 48177943Sdfr 48277943Sdfr 483163898Smarcel// 484163898Smarcel// Unicode Collation protocol 485163898Smarcel// 48677943Sdfr 48777943Sdfr#define UNICODE_COLLATION_PROTOCOL \ 48877943Sdfr { 0x1d85cd7f, 0xf43d, 0x11d2, 0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } 48977943Sdfr 49077943Sdfr#define UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff) 49177943Sdfr 49277943SdfrINTERFACE_DECL(_EFI_UNICODE_COLLATION_INTERFACE); 49377943Sdfr 49477943Sdfrtypedef 49577943SdfrINTN 496163898Smarcel(EFIAPI *EFI_UNICODE_COLLATION_STRICOLL) ( 49777943Sdfr IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, 49877943Sdfr IN CHAR16 *s1, 49977943Sdfr IN CHAR16 *s2 50077943Sdfr ); 50177943Sdfr 50277943Sdfrtypedef 50377943SdfrBOOLEAN 504163898Smarcel(EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH) ( 50577943Sdfr IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, 50677943Sdfr IN CHAR16 *String, 50777943Sdfr IN CHAR16 *Pattern 50877943Sdfr ); 50977943Sdfr 51077943Sdfrtypedef 51177943SdfrVOID 512163898Smarcel(EFIAPI *EFI_UNICODE_COLLATION_STRLWR) ( 51377943Sdfr IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, 51477943Sdfr IN OUT CHAR16 *Str 51577943Sdfr ); 51677943Sdfr 51777943Sdfrtypedef 51877943SdfrVOID 519163898Smarcel(EFIAPI *EFI_UNICODE_COLLATION_STRUPR) ( 52077943Sdfr IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, 52177943Sdfr IN OUT CHAR16 *Str 52277943Sdfr ); 52377943Sdfr 52477943Sdfrtypedef 52577943SdfrVOID 526163898Smarcel(EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR) ( 52777943Sdfr IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, 52877943Sdfr IN UINTN FatSize, 52977943Sdfr IN CHAR8 *Fat, 53077943Sdfr OUT CHAR16 *String 53177943Sdfr ); 53277943Sdfr 53377943Sdfrtypedef 53477943SdfrBOOLEAN 535163898Smarcel(EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT) ( 53677943Sdfr IN struct _EFI_UNICODE_COLLATION_INTERFACE *This, 53777943Sdfr IN CHAR16 *String, 53877943Sdfr IN UINTN FatSize, 53977943Sdfr OUT CHAR8 *Fat 54077943Sdfr ); 54177943Sdfr 54277943Sdfr 54377943Sdfrtypedef struct _EFI_UNICODE_COLLATION_INTERFACE { 54477943Sdfr 545163898Smarcel // general 546163898Smarcel EFI_UNICODE_COLLATION_STRICOLL StriColl; 547163898Smarcel EFI_UNICODE_COLLATION_METAIMATCH MetaiMatch; 548163898Smarcel EFI_UNICODE_COLLATION_STRLWR StrLwr; 549163898Smarcel EFI_UNICODE_COLLATION_STRUPR StrUpr; 55077943Sdfr 551163898Smarcel // for supporting fat volumes 552163898Smarcel EFI_UNICODE_COLLATION_FATTOSTR FatToStr; 553163898Smarcel EFI_UNICODE_COLLATION_STRTOFAT StrToFat; 55477943Sdfr 55577943Sdfr CHAR8 *SupportedLanguages; 55677943Sdfr} EFI_UNICODE_COLLATION_INTERFACE; 55777943Sdfr 55877943Sdfr#endif 559