645 lines
13 KiB
C
645 lines
13 KiB
C
#ifndef EFI_PROTOCOLS_MEDIA_ACCESS_H
|
|
#define EFI_PROTOCOLS_MEDIA_ACCESS_H
|
|
|
|
////
|
|
// Load File Protocol
|
|
///
|
|
|
|
#define EFI_LOAD_FILE_PROTOCOL_GUID {0x56ec3091,0x954c,0x11d2, {0x8e,0x3f,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
|
|
|
typedef struct _EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_LOAD_FILE)(
|
|
IN EFI_LOAD_FILE_PROTOCOL *This,
|
|
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
|
|
IN BOOLEAN BootPolicy,
|
|
IN OUT UINTN *BufferSize,
|
|
IN VOID *Buffer OPTIONAL
|
|
);
|
|
|
|
typedef struct _EFI_LOAD_FILE_PROTOCOL {
|
|
EFI_LOAD_FILE LoadFile;
|
|
} EFI_LOAD_FILE_PROTOCOL;
|
|
|
|
////
|
|
// Load File 2 Protocol
|
|
///
|
|
|
|
#define EFI_LOAD_FILE2_PROTOCOL_GUID {0x4006c0c1,0xfcb3,0x403e, {0x99,0x6d,0x4a,0x6c,0x87,0x24,0xe0,0x6d}}
|
|
|
|
typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE2_PROTOCOL;
|
|
|
|
////
|
|
// File Protocol
|
|
///
|
|
|
|
#define EFI_FILE_PROTOCOL_REVISION 0x00010000
|
|
#define EFI_FILE_PROTOCOL_REVISION2 0x00020000
|
|
#define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
|
|
|
|
#define EFI_FILE_MODE_READ 0x0000000000000001
|
|
#define EFI_FILE_MODE_WRITE 0x0000000000000002
|
|
#define EFI_FILE_MODE_CREATE 0x8000000000000000
|
|
|
|
#define EFI_FILE_READ_ONLY 0x0000000000000001
|
|
#define EFI_FILE_HIDDEN 0x0000000000000002
|
|
#define EFI_FILE_SYSTEM 0x0000000000000004
|
|
#define EFI_FILE_RESERVED 0x0000000000000008
|
|
#define EFI_FILE_DIRECTORY 0x0000000000000010
|
|
#define EFI_FILE_ARCHIVE 0x0000000000000020
|
|
#define EFI_FILE_VALID_ATTR 0x0000000000000037
|
|
|
|
typedef struct _EFI_FILE_PROTOCOL EFI_FILE_PROTOCOL;
|
|
|
|
typedef struct {
|
|
EFI_EVENT Event;
|
|
EFI_STATUS Status;
|
|
UINTN BufferSize;
|
|
VOID *Buffer;
|
|
} EFI_FILE_IO_TOKEN;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_OPEN)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
OUT EFI_FILE_PROTOCOL **NewHandle,
|
|
IN CHAR16 *FileName,
|
|
IN UINT64 OpenMode,
|
|
IN UINT64 Attributes
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_CLOSE)(
|
|
IN EFI_FILE_PROTOCOL *This
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_DELETE)(
|
|
IN EFI_FILE_PROTOCOL *This
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_READ)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
IN OUT UINTN *BufferSize,
|
|
OUT VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_WRITE)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
IN OUT UINTN *BufferSize,
|
|
IN VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_GET_POSITION)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
OUT UINT64 Position
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_SET_POSITION)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
IN UINT64 Position
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_GET_INFO)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
IN EFI_GUID *InformationType,
|
|
IN OUT UINTN *BufferSize,
|
|
OUT VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_SET_INFO)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
IN EFI_GUID *InformationType,
|
|
IN UINTN BufferSize,
|
|
IN VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_FLUSH)(
|
|
IN EFI_FILE_PROTOCOL *This
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_OPEN_EX)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
OUT EFI_FILE_PROTOCOL **NewHandle,
|
|
IN CHAR16 *FileName,
|
|
IN UINT64 OpenMode,
|
|
IN UINT64 Attributes,
|
|
IN OUT EFI_FILE_IO_TOKEN *Token
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_READ_EX)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
IN OUT EFI_FILE_IO_TOKEN *Token
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_WRITE_EX)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
IN OUT EFI_FILE_IO_TOKEN *Token
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FILE_FLUSH_EX)(
|
|
IN EFI_FILE_PROTOCOL *This,
|
|
IN OUT EFI_FILE_IO_TOKEN *Token
|
|
);
|
|
|
|
typedef struct _EFI_FILE_PROTOCOL {
|
|
UINT64 Revision;
|
|
|
|
EFI_FILE_OPEN Open;
|
|
EFI_FILE_CLOSE Close;
|
|
EFI_FILE_DELETE Delete;
|
|
EFI_FILE_READ Read;
|
|
EFI_FILE_WRITE Write;
|
|
EFI_FILE_GET_POSITION GetPosition;
|
|
EFI_FILE_SET_POSITION SetPosition;
|
|
EFI_FILE_GET_INFO GetInfo;
|
|
EFI_FILE_SET_INFO SetInfo;
|
|
EFI_FILE_FLUSH Flush;
|
|
|
|
// Added for revision 2
|
|
EFI_FILE_OPEN_EX OpenEx;
|
|
EFI_FILE_READ_EX ReadEx;
|
|
EFI_FILE_WRITE_EX WriteEx;
|
|
EFI_FILE_FLUSH_EX FlushEx;
|
|
} EFI_FILE_PROTOCOL;
|
|
|
|
////
|
|
// Simple File System Protocol
|
|
///
|
|
|
|
#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID {0x0964e5b22,0x6459,0x11d2, {0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
|
|
|
#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000
|
|
|
|
typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME)(
|
|
IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,
|
|
OUT EFI_FILE_PROTOCOL **Root
|
|
);
|
|
|
|
typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL {
|
|
UINT64 Revision;
|
|
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME OpenVolume;
|
|
} EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;
|
|
|
|
////
|
|
// Disk I/O Protocol
|
|
///
|
|
|
|
#define EFI_DISK_IO_PROTOCOL_GUID {0xce345171,0xba0b,0x11d2, {0x8e,0x4f,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
|
|
|
#define EFI_DISK_IO_PROTOCOL_REVISION 0x00010000
|
|
|
|
typedef struct _EFI_DISK_IO_PROTOCOL EFI_DISK_IO_PROTOCOL;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_DISK_READ)(
|
|
IN EFI_DISK_IO_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN UINT64 Offset,
|
|
IN UINTN BufferSize,
|
|
OUT VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_DISK_WRITE)(
|
|
IN EFI_DISK_IO_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN UINT64 Offset,
|
|
IN UINTN BufferSize,
|
|
IN VOID *Buffer
|
|
);
|
|
|
|
typedef struct _EFI_DISK_IO_PROTOCOL {
|
|
UINT64 Revision;
|
|
EFI_DISK_READ ReadDisk;
|
|
EFI_DISK_WRITE WriteDisk;
|
|
} EFI_DISK_IO_PROTOCOL;
|
|
|
|
////
|
|
// Disk I/O 2 Protocol
|
|
///
|
|
|
|
#define EFI_DISK_IO2_PROTOCOL_GUID {0x151c8eae,0x7f2c,0x472c, {0x9e,0x54,0x98,0x28,0x19,0x4f,0x6a,0x88}}
|
|
|
|
#define EFI_DISK_IO2_PROTOCOL_REVISION 0x00020000
|
|
|
|
typedef struct _EFI_DISK_IO2_PROTOCOL EFI_DISK_IO2_PROTOCOL;
|
|
|
|
typedef struct {
|
|
EFI_EVENT Event;
|
|
EFI_STATUS TransactionStatus;
|
|
} EFI_DISK_IO2_TOKEN;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_DISK_CANCEL_EX)(
|
|
IN EFI_DISK_IO2_PROTOCOL *This
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_DISK_READ_EX)(
|
|
IN EFI_DISK_IO2_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN UINT64 Offset,
|
|
IN OUT EFI_DISK_IO2_TOKEN *Token,
|
|
IN UINTN BufferSize,
|
|
OUT VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_DISK_WRITE_EX)(
|
|
IN EFI_DISK_IO2_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN UINT64 Offset,
|
|
IN OUT EFI_DISK_IO2_TOKEN *Token,
|
|
IN UINTN BufferSize,
|
|
IN VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_DISK_FLUSH_EX)(
|
|
IN EFI_DISK_IO2_PROTOCOL *This,
|
|
IN OUT EFI_DISK_IO2_TOKEN *Token
|
|
);
|
|
|
|
typedef struct _EFI_DISK_IO2_PROTOCOL {
|
|
UINT64 Revision;
|
|
EFI_DISK_CANCEL_EX Cancel;
|
|
EFI_DISK_READ_EX ReadDiskEx;
|
|
EFI_DISK_WRITE_EX WriteDiskEx;
|
|
EFI_DISK_FLUSH_EX FlushDiskEx;
|
|
} EFI_DISK_IO2_PROTOCOL;
|
|
|
|
////
|
|
// Block I/O Protocol
|
|
///
|
|
|
|
#define EFI_BLOCK_IO_PROTOCOL_GUID {0x964e5b21,0x6459,0x11d2, {0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
|
|
|
|
#define EFI_BLOCK_IO_PROTOCOL_REVISION2 0x00020001
|
|
#define EFI_BLOCK_IO_PROTOCOL_REVISION3 ((2<<16) | (31))
|
|
|
|
typedef struct _EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO_PROTOCOL;
|
|
|
|
typedef struct {
|
|
UINT32 MediaId;
|
|
BOOLEAN RemovableMedia;
|
|
BOOLEAN MediaPresent;
|
|
BOOLEAN LogicalPartition;
|
|
BOOLEAN ReadOnly;
|
|
BOOLEAN WriteCaching;
|
|
UINT32 BlockSize;
|
|
UINT32 IoAlign;
|
|
EFI_LBA LastBlock;
|
|
EFI_LBA LowestAlignedLba;
|
|
UINT32 LogicalBlocksPerPhysicalBlock;
|
|
UINT32 OptimalTransferLengthGranularity;
|
|
} EFI_BLOCK_IO_MEDIA;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_RESET)(
|
|
IN EFI_BLOCK_IO_PROTOCOL *This,
|
|
IN BOOLEAN ExtendedVerification
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_READ)(
|
|
IN EFI_BLOCK_IO_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN UINTN BufferSize,
|
|
OUT VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_WRITE)(
|
|
IN EFI_BLOCK_IO_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN UINTN BufferSize,
|
|
IN VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_FLUSH)(
|
|
IN EFI_BLOCK_IO_PROTOCOL *This
|
|
);
|
|
|
|
typedef struct _EFI_BLOCK_IO_PROTOCOL {
|
|
UINT64 Revision;
|
|
EFI_BLOCK_IO_MEDIA *Media;
|
|
EFI_BLOCK_RESET Reset;
|
|
EFI_BLOCK_READ ReadBlocks;
|
|
EFI_BLOCK_WRITE WriteBlocks;
|
|
EFI_BLOCK_FLUSH FlushBlocks;
|
|
} EFI_BLOCK_IO_PROTOCOL;
|
|
|
|
////
|
|
// Block I/O 2 Protocol
|
|
///
|
|
|
|
#define EFI_BLOCK_IO2_PROTOCOL_GUID {0xa77b2472,0xe282,0x4e9f, {0xa2,0x45,0xc2,0xc0,0xe2,0x7b,0xbc,0xc1}}
|
|
|
|
typedef struct _EFI_BLOCK_IO2_PROTOCOL EFI_BLOCK_IO2_PROTOCOL;
|
|
|
|
typedef struct {
|
|
EFI_EVENT Event;
|
|
EFI_STATUS TransactionStatus;
|
|
} EFI_BLOCK_IO2_TOKEN;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_RESET_EX)(
|
|
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
|
IN BOOLEAN ExtendedVerification
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_READ_EX)(
|
|
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
|
IN UINTN BufferSize,
|
|
OUT VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_WRITE_EX)(
|
|
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
|
IN UINTN BufferSize,
|
|
IN VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_FLUSH_EX)(
|
|
IN EFI_BLOCK_IO2_PROTOCOL *This,
|
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token
|
|
);
|
|
|
|
typedef struct _EFI_BLOCK_IO2_PROTOCOL {
|
|
EFI_BLOCK_IO_MEDIA *Media;
|
|
EFI_BLOCK_RESET_EX Reset;
|
|
EFI_BLOCK_READ_EX ReadBlocksEx;
|
|
EFI_BLOCK_WRITE_EX WriteBlocksEx;
|
|
EFI_BLOCK_FLUSH_EX FlushBlocksEx;
|
|
} EFI_BLOCK_IO2_PROTOCOL;
|
|
|
|
////
|
|
// Inline Cryptographics Interface Protocol
|
|
///
|
|
|
|
#define EFI_BLOCK_IO_CRYPTO_PROTOCOL_GUID {0xa00490ba,0x3f1a,0x4b4c, {0xab,0x90,0x4f,0xa9,0x97,0x26,0xa1,0xe8}}
|
|
|
|
#define EFI_BLOCK_IO_CRYPTO_ALGO_GUID_AES_XTS {0x2f87ba6a,0x5c04,0x4385,0xa7,0x80,0xf3,0xbf,0x78,0xa9,0x7b,0xec}
|
|
#define EFI_BLOCK_IO_CRYPTO_ALGO_GUID_AES_CBC_MICROSOFT_BITLOCKER {0x689e4c62,0x70bf,0x4cf3,0x88,0xbb,0x33,0xb3,0x18,0x26,0x86,0x70}
|
|
|
|
#define EFI_BLOCK_IO_CRYPTO_INDEX_ANY 0xFFFFFFFFFFFFFFFF
|
|
|
|
typedef struct _EFI_BLOCK_IO_CRYPTO_PROTOCOL EFI_BLOCK_IO_CRYPTO_PROTOCOL;
|
|
|
|
typedef struct {
|
|
EFI_GUID Algorithm;
|
|
UINT64 KeySize;
|
|
UINT64 CryptoBlockSizeBitMask;
|
|
} EFI_BLOCK_IO_CRYPTO_CAPABILITY;
|
|
|
|
typedef struct {
|
|
BOOLEAN Supported;
|
|
UINT64 KeyCount;
|
|
UINT64 CapabilityCount;
|
|
EFI_BLOCK_IO_CRYPTO_CAPABILITY Capabilities [1];
|
|
} EFI_BLOCK_IO_CRYPTO_CAPABILITIES;
|
|
|
|
typedef struct {
|
|
UINT64 Index;
|
|
EFI_GUID KeyOwnerGuid;
|
|
EFI_BLOCK_IO_CRYPTO_CAPABILITY Capability;
|
|
VOID *CryptoKey;
|
|
} EFI_BLOCK_IO_CRYPTO_CONFIGURATION_TABLE_ENTRY;
|
|
|
|
typedef struct {
|
|
UINT64 Index;
|
|
EFI_GUID KeyOwnerGuid;
|
|
EFI_BLOCK_IO_CRYPTO_CAPABILITY Capability;
|
|
} EFI_BLOCK_IO_CRYPTO_RESPONSE_CONFIGURATION_ENTRY;
|
|
|
|
typedef struct {
|
|
UINT64 InputSize;
|
|
} EFI_BLOCK_IO_CRYPTO_IV_INPUT;
|
|
|
|
typedef struct {
|
|
EFI_BLOCK_IO_CRYPTO_IV_INPUT Header;
|
|
UINT64 CryptoBlockNumber;
|
|
UINT64 CryptoBlockByteSize;
|
|
} EFI_BLOCK_IO_CRYPTO_IV_INPUT_AES_XTS;
|
|
|
|
typedef struct {
|
|
EFI_BLOCK_IO_CRYPTO_IV_INPUT Header;
|
|
UINT64 CryptoBlockByteOffset;
|
|
UINT64 CryptoBlockByteSize;
|
|
} EFI_BLOCK_IO_CRYPTO_IV_INPUT_AES_CBC_MICROSOFT_BITLOCKER;
|
|
|
|
typedef struct {
|
|
EFI_EVENT Event;
|
|
EFI_STATUS TransactionStatus;
|
|
} EFI_BLOCK_IO_CRYPTO_TOKEN;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_IO_CRYPTO_RESET)(
|
|
IN EFI_BLOCK_IO_CRYPTO_PROTOCOL *This,
|
|
IN BOOLEAN ExtendedVerification
|
|
);
|
|
|
|
typedef EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_IO_CRYPTO_GET_CAPABILITIES)(
|
|
IN EFI_BLOCK_IO_CRYPTO_PROTOCOL *This,
|
|
OUT EFI_BLOCK_IO_CRYPTO_CAPABILITIES *Capabilities
|
|
);
|
|
|
|
typedef EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_IO_CRYPTO_SET_CONFIGURATION)(
|
|
IN EFI_BLOCK_IO_CRYPTO_PROTOCOL *This,
|
|
IN UINT64 ConfigurationCount,
|
|
IN EFI_BLOCK_IO_CRYPTO_CONFIGURATION_TABLE_ENTRY *ConfigurationTable,
|
|
OUT EFI_BLOCK_IO_CRYPTO_RESPONSE_CONFIGURATION_ENTRY
|
|
*ResultingTable OPTIONAL
|
|
);
|
|
|
|
typedef EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_IO_CRYPTO_GET_CONFIGURATION)(
|
|
IN EFI_BLOCK_IO_CRYPTO_PROTOCOL *This,
|
|
IN UINT64 StartIndex,
|
|
IN UINT64 ConfigurationCount,
|
|
IN EFI_GUID *KeyOwnerGuid OPTIONAL,
|
|
OUT EFI_BLOCK_IO_CRYPTO_RESPONSE_CONFIGURATION_ENTRY *ConfigurationTable
|
|
);
|
|
|
|
typedef EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_IO_CRYPTO_READ_EXTENDED)(
|
|
IN EFI_BLOCK_IO_CRYPTO_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN OUT EFI_BLOCK_IO_CRYPTO_TOKEN *Token,
|
|
IN UINT64 BufferSize,
|
|
OUT VOID *Buffer,
|
|
IN UINT64 *Index OPTIONAL,
|
|
IN VOID *CryptoIvInput OPTIONAL
|
|
);
|
|
|
|
typedef EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_IO_CRYPTO_WRITE_EXTENDED)(
|
|
IN EFI_BLOCK_IO_CRYPTO_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN OUT EFI_BLOCK_IO_CRYPTO_TOKEN *Token,
|
|
IN UINT64 BufferSize,
|
|
IN VOID *Buffer,
|
|
IN UINT64 *Index, OPTIONAL
|
|
IN VOID *CryptoIvInput OPTIONAL
|
|
);
|
|
|
|
typedef EFI_STATUS
|
|
(EFIAPI *EFI_BLOCK_IO_CRYPTO_FLUSH)(
|
|
IN EFI_BLOCK_IO_CRYPTO_PROTOCOL *This,
|
|
IN OUT EFI_BLOCK_IO_CRYPTO_TOKEN *Token
|
|
);
|
|
|
|
typedef struct _EFI_BLOCK_IO_CRYPTO_PROTOCOL {
|
|
EFI_BLOCK_IO_MEDIA *Media;
|
|
EFI_BLOCK_IO_CRYPTO_RESET Reset;
|
|
EFI_BLOCK_IO_CRYPTO_GET_CAPABILITIES GetCapabilities;
|
|
EFI_BLOCK_IO_CRYPTO_SET_CONFIGURATION SetConfiguration;
|
|
EFI_BLOCK_IO_CRYPTO_GET_CONFIGURATION GetConfiguration;
|
|
EFI_BLOCK_IO_CRYPTO_READ_EXTENDED ReadExtended;
|
|
EFI_BLOCK_IO_CRYPTO_WRITE_EXTENDED WriteExtended;
|
|
EFI_BLOCK_IO_CRYPTO_FLUSH FlushBlocks;
|
|
} EFI_BLOCK_IO_CRYPTO_PROTOCOL;
|
|
|
|
////
|
|
// Erase Block Protocol
|
|
///
|
|
|
|
#define EFI_ERASE_BLOCK_PROTOCOL_GUID {0x95a9a93e,0xa86e,0x4926, {0xaa,0xef,0x99,0x18,0xe7,0x72,0xd9,0x87}}
|
|
|
|
#define EFI_ERASE_BLOCK_PROTOCOL_REVISION ((2<<16) (60))
|
|
|
|
typedef struct _EFI_ERASE_BLOCK_PROTOCOL EFI_ERASE_BLOCK_PROTOCOL;
|
|
|
|
typedef struct {
|
|
EFI_EVENT Event;
|
|
EFI_STATUS TransactionStatus;
|
|
} EFI_ERASE_BLOCK_TOKEN;
|
|
|
|
typedef
|
|
EFI_STATUS*
|
|
(EFIAPI *EFI_BLOCK_ERASE)(
|
|
IN EFI_BLOCK_IO_PROTOCOL *This,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN OUT EFI_ERASE_BLOCK_TOKEN *Token,
|
|
IN UINTN Size
|
|
);
|
|
|
|
typedef struct _EFI_ERASE_BLOCK_PROTOCOL {
|
|
UINT64 Revision;
|
|
UINT32 EraseLengthGranularity;
|
|
EFI_BLOCK_ERASE EraseBlocks;
|
|
} EFI_ERASE_BLOCK_PROTOCOL;
|
|
|
|
////
|
|
// ATA Pass Through Protocol
|
|
///
|
|
|
|
|
|
|
|
////
|
|
// Storage Security Command Protocol
|
|
///
|
|
|
|
|
|
|
|
////
|
|
// NVM Express Pass Through Protocol
|
|
///
|
|
|
|
|
|
|
|
////
|
|
// SD MMC Pass Through Protocol
|
|
///
|
|
|
|
|
|
|
|
////
|
|
// RAM Disk Protocol
|
|
///
|
|
|
|
|
|
|
|
////
|
|
// Partition Information Protocol
|
|
///
|
|
|
|
|
|
|
|
////
|
|
// NVDIMM Label Protocol
|
|
///
|
|
|
|
|
|
|
|
////
|
|
// EFI UFS Device Config Protocol
|
|
///
|
|
|
|
|
|
|
|
|
|
#endif /* EFI_PROTOCOLS_MEDIA_ACCESS_H */
|