VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/Protocol/EraseBlock.h@ 77662

最後變更 在這個檔案從77662是 77662,由 vboxsync 提交於 6 年 前

EFI: First step in UDK2018 merge. Does not build yet.

  • 屬性 svn:eol-style 設為 native
檔案大小: 3.9 KB
 
1/** @file
2 This file defines the EFI Erase Block Protocol.
3
4 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 @par Revision Reference:
14 This Protocol is introduced in UEFI Specification 2.6
15
16**/
17
18#ifndef __EFI_ERASE_BLOCK_PROTOCOL_H__
19#define __EFI_ERASE_BLOCK_PROTOCOL_H__
20
21#define EFI_ERASE_BLOCK_PROTOCOL_GUID \
22 { \
23 0x95a9a93e, 0xa86e, 0x4926, { 0xaa, 0xef, 0x99, 0x18, 0xe7, 0x72, 0xd9, 0x87 } \
24 }
25
26typedef struct _EFI_ERASE_BLOCK_PROTOCOL EFI_ERASE_BLOCK_PROTOCOL;
27
28#define EFI_ERASE_BLOCK_PROTOCOL_REVISION ((2<<16) | (60))
29
30///
31/// EFI_ERASE_BLOCK_TOKEN
32///
33typedef struct {
34 //
35 // If Event is NULL, then blocking I/O is performed. If Event is not NULL and
36 // non-blocking I/O is supported, then non-blocking I/O is performed, and
37 // Event will be signaled when the erase request is completed.
38 //
39 EFI_EVENT Event;
40 //
41 // Defines whether the signaled event encountered an error.
42 //
43 EFI_STATUS TransactionStatus;
44} EFI_ERASE_BLOCK_TOKEN;
45
46/**
47 Erase a specified number of device blocks.
48
49 @param[in] This Indicates a pointer to the calling context.
50 @param[in] MediaId The media ID that the erase request is for.
51 @param[in] LBA The starting logical block address to be
52 erased. The caller is responsible for erasing
53 only legitimate locations.
54 @param[in, out] Token A pointer to the token associated with the
55 transaction.
56 @param[in] Size The size in bytes to be erased. This must be
57 a multiple of the physical block size of the
58 device.
59
60 @retval EFI_SUCCESS The erase request was queued if Event is not
61 NULL. The data was erased correctly to the
62 device if the Event is NULL.to the device.
63 @retval EFI_WRITE_PROTECTED The device cannot be erased due to write
64 protection.
65 @retval EFI_DEVICE_ERROR The device reported an error while attempting
66 to perform the erase operation.
67 @retval EFI_INVALID_PARAMETER The erase request contains LBAs that are not
68 valid.
69 @retval EFI_NO_MEDIA There is no media in the device.
70 @retval EFI_MEDIA_CHANGED The MediaId is not for the current media.
71
72**/
73typedef
74EFI_STATUS
75(EFIAPI *EFI_BLOCK_ERASE) (
76 IN EFI_ERASE_BLOCK_PROTOCOL *This,
77 IN UINT32 MediaId,
78 IN EFI_LBA LBA,
79 IN OUT EFI_ERASE_BLOCK_TOKEN *Token,
80 IN UINTN Size
81 );
82
83///
84/// The EFI Erase Block Protocol provides the ability for a device to expose
85/// erase functionality. This optional protocol is installed on the same handle
86/// as the EFI_BLOCK_IO_PROTOCOL or EFI_BLOCK_IO2_PROTOCOL.
87///
88struct _EFI_ERASE_BLOCK_PROTOCOL {
89 //
90 // The revision to which the EFI_ERASE_BLOCK_PROTOCOL adheres. All future
91 // revisions must be backwards compatible. If a future version is not
92 // backwards compatible, it is not the same GUID.
93 //
94 UINT64 Revision;
95 //
96 // Returns the erase length granularity as a number of logical blocks. A
97 // value of 1 means the erase granularity is one logical block.
98 //
99 UINT32 EraseLengthGranularity;
100 EFI_BLOCK_ERASE EraseBlocks;
101};
102
103extern EFI_GUID gEfiEraseBlockProtocolGuid;
104
105#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette