efiprot.h revision 199767f8919635c4928607450d9e0abb932109ce
/* $FreeBSD$ */
#ifndef _EFI_PROT_H
#define _EFI_PROT_H
/*++
Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
This software and associated documentation (if any) is furnished
under a license and may only be used or copied in accordance
with the terms of the license. Except as permitted by such
license, no part of this software or documentation may be
reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of
Intel Corporation.
Module Name:
Abstract:
EFI Protocols
Revision History
--*/
//
// Device Path protocol
//
#define DEVICE_PATH_PROTOCOL \
{ 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
//
// Block IO protocol
//
#define BLOCK_IO_PROTOCOL \
{ 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
#define EFI_BLOCK_IO_INTERFACE_REVISION 0x00010000
typedef
(EFIAPI *EFI_BLOCK_RESET) (
);
typedef
(EFIAPI *EFI_BLOCK_READ) (
);
typedef
(EFIAPI *EFI_BLOCK_WRITE) (
);
typedef
(EFIAPI *EFI_BLOCK_FLUSH) (
);
typedef struct {
typedef struct _EFI_BLOCK_IO {
} EFI_BLOCK_IO;
//
// Disk Block IO protocol
//
#define DISK_IO_PROTOCOL \
{ 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
#define EFI_DISK_IO_INTERFACE_REVISION 0x00010000
typedef
(EFIAPI *EFI_DISK_READ) (
);
typedef
(EFIAPI *EFI_DISK_WRITE) (
);
typedef struct _EFI_DISK_IO {
} EFI_DISK_IO;
//
// Simple file system protocol
//
#define SIMPLE_FILE_SYSTEM_PROTOCOL \
{ 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
typedef
(EFIAPI *EFI_VOLUME_OPEN) (
);
#define EFI_FILE_IO_INTERFACE_REVISION 0x00010000
typedef struct _EFI_FILE_IO_INTERFACE {
//
//
//
typedef
(EFIAPI *EFI_FILE_OPEN) (
);
// Open modes
#define EFI_FILE_MODE_READ 0x0000000000000001
#define EFI_FILE_MODE_WRITE 0x0000000000000002
#define EFI_FILE_MODE_CREATE 0x8000000000000000
// File attributes
#define EFI_FILE_READ_ONLY 0x0000000000000001
#define EFI_FILE_HIDDEN 0x0000000000000002
#define EFI_FILE_SYSTEM 0x0000000000000004
#define EFI_FILE_RESERVIED 0x0000000000000008
#define EFI_FILE_DIRECTORY 0x0000000000000010
#define EFI_FILE_ARCHIVE 0x0000000000000020
#define EFI_FILE_VALID_ATTR 0x0000000000000037
typedef
(EFIAPI *EFI_FILE_CLOSE) (
);
typedef
(EFIAPI *EFI_FILE_DELETE) (
);
typedef
(EFIAPI *EFI_FILE_READ) (
);
typedef
(EFIAPI *EFI_FILE_WRITE) (
);
typedef
);
typedef
);
typedef
(EFIAPI *EFI_FILE_GET_INFO) (
);
typedef
(EFIAPI *EFI_FILE_SET_INFO) (
);
typedef
(EFIAPI *EFI_FILE_FLUSH) (
);
#define EFI_FILE_HANDLE_REVISION 0x00010000
typedef struct _EFI_FILE_HANDLE {
} EFI_FILE, *EFI_FILE_HANDLE;
//
// File information types
//
#define EFI_FILE_INFO_ID \
{ 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
typedef struct {
//
// The FileName field of the EFI_FILE_INFO data structure is variable length.
// Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
// be the size of the data structure without the FileName field. The following macro
// computes this size correctly no matter how big the FileName array is declared.
// This is required to make the EFI_FILE_INFO data structure ANSI compilant.
//
#define EFI_FILE_SYSTEM_INFO_ID \
{ 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
typedef struct {
//
// The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
// Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
// to be the size of the data structure without the VolumeLable field. The following macro
// computes this size correctly no matter how big the VolumeLable array is declared.
// This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
//
#define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID \
{ 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
typedef struct {
#define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
//
// Load file protocol
//
#define LOAD_FILE_PROTOCOL \
{ 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
typedef
(EFIAPI *EFI_LOAD_FILE) (
);
typedef struct _EFI_LOAD_FILE_INTERFACE {
//
// Device IO protocol
//
#define DEVICE_IO_PROTOCOL \
{ 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
typedef enum {
//
// Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
//
} EFI_IO_WIDTH;
typedef
(EFIAPI *EFI_DEVICE_IO) (
);
typedef struct {
typedef
);
typedef enum {
typedef
(EFIAPI *EFI_IO_MAP) (
);
typedef
(EFIAPI *EFI_IO_UNMAP) (
);
typedef
);
typedef
(EFIAPI *EFI_IO_FLUSH) (
);
typedef
(EFIAPI *EFI_IO_FREE_BUFFER) (
);
typedef struct _EFI_DEVICE_IO_INTERFACE {
//
// Unicode Collation protocol
//
#define UNICODE_COLLATION_PROTOCOL \
{ 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
typedef
);
typedef
);
typedef
);
typedef
);
typedef
);
typedef
);
typedef struct _EFI_UNICODE_COLLATION_INTERFACE {
// general
// for supporting fat volumes
#endif