Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/edk2/Include/Protocol/DiskIo.h
96339 views
1
/** @file
2
Disk IO protocol as defined in the UEFI 2.0 specification.
3
4
The Disk IO protocol is used to convert block oriented devices into byte
5
oriented devices. The Disk IO protocol is intended to layer on top of the
6
Block IO protocol.
7
8
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
9
SPDX-License-Identifier: BSD-2-Clause-Patent
10
11
**/
12
13
#ifndef __DISK_IO_H__
14
#define __DISK_IO_H__
15
16
#define EFI_DISK_IO_PROTOCOL_GUID \
17
{ \
18
0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
19
}
20
21
///
22
/// Protocol GUID name defined in EFI1.1.
23
///
24
#define DISK_IO_PROTOCOL EFI_DISK_IO_PROTOCOL_GUID
25
26
typedef struct _EFI_DISK_IO_PROTOCOL EFI_DISK_IO_PROTOCOL;
27
28
///
29
/// Protocol defined in EFI1.1.
30
///
31
typedef EFI_DISK_IO_PROTOCOL EFI_DISK_IO;
32
33
/**
34
Read BufferSize bytes from Offset into Buffer.
35
36
@param This Protocol instance pointer.
37
@param MediaId Id of the media, changes every time the media is replaced.
38
@param Offset The starting byte offset to read from
39
@param BufferSize Size of Buffer
40
@param Buffer Buffer containing read data
41
42
@retval EFI_SUCCESS The data was read correctly from the device.
43
@retval EFI_DEVICE_ERROR The device reported an error while performing the read.
44
@retval EFI_NO_MEDIA There is no media in the device.
45
@retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device.
46
@retval EFI_INVALID_PARAMETER The read request contains device addresses that are not
47
valid for the device.
48
49
**/
50
typedef
51
EFI_STATUS
52
(EFIAPI *EFI_DISK_READ)(
53
IN EFI_DISK_IO_PROTOCOL *This,
54
IN UINT32 MediaId,
55
IN UINT64 Offset,
56
IN UINTN BufferSize,
57
OUT VOID *Buffer
58
);
59
60
/**
61
Writes a specified number of bytes to a device.
62
63
@param This Indicates a pointer to the calling context.
64
@param MediaId ID of the medium to be written.
65
@param Offset The starting byte offset on the logical block I/O device to write.
66
@param BufferSize The size in bytes of Buffer. The number of bytes to write to the device.
67
@param Buffer A pointer to the buffer containing the data to be written.
68
69
@retval EFI_SUCCESS The data was written correctly to the device.
70
@retval EFI_WRITE_PROTECTED The device can not be written to.
71
@retval EFI_DEVICE_ERROR The device reported an error while performing the write.
72
@retval EFI_NO_MEDIA There is no media in the device.
73
@retval EFI_MEDIA_CHNAGED The MediaId does not matched the current device.
74
@retval EFI_INVALID_PARAMETER The write request contains device addresses that are not
75
valid for the device.
76
77
**/
78
typedef
79
EFI_STATUS
80
(EFIAPI *EFI_DISK_WRITE)(
81
IN EFI_DISK_IO_PROTOCOL *This,
82
IN UINT32 MediaId,
83
IN UINT64 Offset,
84
IN UINTN BufferSize,
85
IN VOID *Buffer
86
);
87
88
#define EFI_DISK_IO_PROTOCOL_REVISION 0x00010000
89
90
///
91
/// Revision defined in EFI1.1
92
///
93
#define EFI_DISK_IO_INTERFACE_REVISION EFI_DISK_IO_PROTOCOL_REVISION
94
95
///
96
/// This protocol is used to abstract Block I/O interfaces.
97
///
98
struct _EFI_DISK_IO_PROTOCOL {
99
///
100
/// The revision to which the disk I/O interface adheres. All future
101
/// revisions must be backwards compatible. If a future version is not
102
/// backwards compatible, it is not the same GUID.
103
///
104
UINT64 Revision;
105
EFI_DISK_READ ReadDisk;
106
EFI_DISK_WRITE WriteDisk;
107
};
108
109
extern EFI_GUID gEfiDiskIoProtocolGuid;
110
111
#endif
112
113