audk/EdkCompatibilityPkg/Foundation/Framework/Ppi/BlockIo/BlockIo.h

89 lines
2.5 KiB
C

/*++
Copyright (c) 1999 - 2002, Intel Corporation
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.
Module Name:
BlockIo.h
Abstract:
BlockIo PPI as defined in EFI 2.0
Used to access block-oriented storage devices
--*/
#ifndef _PEI_BLOCK_IO_H_
#define _PEI_BLOCK_IO_H_
#define PEI_BLOCK_IO_PPI_GUID \
{ \
0x695d8aa1, 0x42ee, 0x4c46, 0x80, 0x5c, 0x6e, 0xa6, 0xbc, 0xe7, 0x99, 0xe3 \
}
EFI_FORWARD_DECLARATION (PEI_RECOVERY_BLOCK_IO_INTERFACE);
typedef UINT64 PEI_LBA;
typedef enum {
LegacyFloppy = 0,
IdeCDROM = 1,
IdeLS120 = 2,
UsbMassStorage= 3,
MaxDeviceType
} PEI_BLOCK_DEVICE_TYPE;
typedef struct {
PEI_BLOCK_DEVICE_TYPE DeviceType;
BOOLEAN MediaPresent;
UINTN LastBlock;
UINTN BlockSize;
} PEI_BLOCK_IO_MEDIA;
typedef
EFI_STATUS
(EFIAPI *PEI_GET_NUMBER_BLOCK_DEVICES) (
IN EFI_PEI_SERVICES **PeiServices,
IN PEI_RECOVERY_BLOCK_IO_INTERFACE * This,
OUT UINTN *NumberBlockDevices
);
typedef
EFI_STATUS
(EFIAPI *PEI_GET_DEVICE_MEDIA_INFORMATION) (
IN EFI_PEI_SERVICES **PeiServices,
IN PEI_RECOVERY_BLOCK_IO_INTERFACE * This,
IN UINTN DeviceIndex,
OUT PEI_BLOCK_IO_MEDIA * MediaInfo
);
typedef
EFI_STATUS
(EFIAPI *PEI_READ_BLOCKS) (
IN EFI_PEI_SERVICES **PeiServices,
IN PEI_RECOVERY_BLOCK_IO_INTERFACE * This,
IN UINTN DeviceIndex,
IN PEI_LBA StartLBA,
IN UINTN BufferSize,
OUT VOID *Buffer
);
typedef struct _PEI_RECOVERY_BLOCK_IO_INTERFACE {
PEI_GET_NUMBER_BLOCK_DEVICES GetNumberOfBlockDevices;
PEI_GET_DEVICE_MEDIA_INFORMATION GetBlockDeviceMediaInfo;
PEI_READ_BLOCKS ReadBlocks;
} PEI_RECOVERY_BLOCK_IO_INTERFACE;
extern EFI_GUID gPeiBlockIoPpiGuid;
#endif