]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Protocol/VarCheck.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Include / Protocol / VarCheck.h
CommitLineData
efb01a10
SZ
1/** @file\r
2 Variable check definitions.\r
3\r
4 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
9d510e61 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
efb01a10
SZ
6\r
7**/\r
8\r
9#ifndef _VARIABLE_CHECK_H_\r
10#define _VARIABLE_CHECK_H_\r
11\r
12#include <Uefi/UefiSpec.h>\r
13\r
14typedef struct _EDKII_VAR_CHECK_PROTOCOL EDKII_VAR_CHECK_PROTOCOL;\r
15\r
16#define EDKII_VAR_CHECK_PROTOCOL_GUID { \\r
17 0xaf23b340, 0x97b4, 0x4685, { 0x8d, 0x4f, 0xa3, 0xf2, 0x81, 0x69, 0xb2, 0x1d } \\r
18};\r
19\r
20typedef EFI_SET_VARIABLE VAR_CHECK_SET_VARIABLE_CHECK_HANDLER;\r
21\r
22/**\r
23 Register SetVariable check handler.\r
24 Variable driver will call the handler to do check before\r
25 really setting the variable into variable storage.\r
26\r
27 @param[in] Handler Pointer to the check handler.\r
28\r
29 @retval EFI_SUCCESS The SetVariable check handler was registered successfully.\r
30 @retval EFI_INVALID_PARAMETER Handler is NULL.\r
31 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled.\r
32 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the SetVariable check handler register request.\r
33 @retval EFI_UNSUPPORTED This interface is not implemented.\r
34 For example, it is unsupported in VarCheck protocol if both VarCheck and SmmVarCheck protocols are present.\r
35\r
36**/\r
37typedef\r
38EFI_STATUS\r
39(EFIAPI * EDKII_VAR_CHECK_REGISTER_SET_VARIABLE_CHECK_HANDLER) (\r
40 IN VAR_CHECK_SET_VARIABLE_CHECK_HANDLER Handler\r
41 );\r
42\r
43#define VAR_CHECK_VARIABLE_PROPERTY_REVISION 0x0001\r
44//\r
45// 1. Set by VariableLock PROTOCOL\r
46// 2. Set by VarCheck PROTOCOL\r
47//\r
48// If set, other fields for check will be ignored.\r
49//\r
50#define VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY BIT0\r
51\r
52typedef struct {\r
53 UINT16 Revision;\r
54 UINT16 Property;\r
55 UINT32 Attributes;\r
56 UINTN MinSize;\r
57 UINTN MaxSize;\r
58} VAR_CHECK_VARIABLE_PROPERTY;\r
59\r
b6477d82
SZ
60typedef struct {\r
61 EFI_GUID *Guid;\r
62 CHAR16 *Name;\r
63 VAR_CHECK_VARIABLE_PROPERTY VariableProperty;\r
64} VARIABLE_ENTRY_PROPERTY;\r
65\r
efb01a10
SZ
66/**\r
67 Variable property set.\r
68 Variable driver will do check according to the VariableProperty before\r
69 really setting the variable into variable storage.\r
70\r
71 @param[in] Name Pointer to the variable name.\r
72 @param[in] Guid Pointer to the vendor GUID.\r
73 @param[in] VariableProperty Pointer to the input variable property.\r
74\r
75 @retval EFI_SUCCESS The property of variable specified by the Name and Guid was set successfully.\r
76 @retval EFI_INVALID_PARAMETER Name, Guid or VariableProperty is NULL, or Name is an empty string,\r
77 or the fields of VariableProperty are not valid.\r
78 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has\r
79 already been signaled.\r
80 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the variable property set request.\r
81\r
82**/\r
83typedef\r
84EFI_STATUS\r
85(EFIAPI * EDKII_VAR_CHECK_VARIABLE_PROPERTY_SET) (\r
86 IN CHAR16 *Name,\r
87 IN EFI_GUID *Guid,\r
88 IN VAR_CHECK_VARIABLE_PROPERTY *VariableProperty\r
89 );\r
90\r
91/**\r
92 Variable property get.\r
93\r
94 @param[in] Name Pointer to the variable name.\r
95 @param[in] Guid Pointer to the vendor GUID.\r
96 @param[out] VariableProperty Pointer to the output variable property.\r
97\r
98 @retval EFI_SUCCESS The property of variable specified by the Name and Guid was got successfully.\r
99 @retval EFI_INVALID_PARAMETER Name, Guid or VariableProperty is NULL, or Name is an empty string.\r
100 @retval EFI_NOT_FOUND The property of variable specified by the Name and Guid was not found.\r
101\r
102**/\r
103typedef\r
104EFI_STATUS\r
105(EFIAPI * EDKII_VAR_CHECK_VARIABLE_PROPERTY_GET) (\r
106 IN CHAR16 *Name,\r
107 IN EFI_GUID *Guid,\r
108 OUT VAR_CHECK_VARIABLE_PROPERTY *VariableProperty\r
109 );\r
110\r
111struct _EDKII_VAR_CHECK_PROTOCOL {\r
112 EDKII_VAR_CHECK_REGISTER_SET_VARIABLE_CHECK_HANDLER RegisterSetVariableCheckHandler;\r
113 EDKII_VAR_CHECK_VARIABLE_PROPERTY_SET VariablePropertySet;\r
114 EDKII_VAR_CHECK_VARIABLE_PROPERTY_GET VariablePropertyGet;\r
115};\r
116\r
117extern EFI_GUID gEdkiiVarCheckProtocolGuid;\r
118\r
119#endif\r
120\r