]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Library/VarCheckLib.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Include / Library / VarCheckLib.h
CommitLineData
31b183bc
SZ
1/** @file\r
2 Provides variable check services and database management.\r
3\r
4Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
9d510e61 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
31b183bc
SZ
6\r
7**/\r
8\r
9#ifndef _VARIABLE_CHECK_LIB_H_\r
10#define _VARIABLE_CHECK_LIB_H_\r
11\r
12#include <Protocol/VarCheck.h>\r
13\r
14typedef enum {\r
15 VarCheckRequestReserved0 = 0,\r
16 VarCheckRequestReserved1 = 1,\r
17 VarCheckFromTrusted = 2,\r
18 VarCheckFromUntrusted = 3,\r
19} VAR_CHECK_REQUEST_SOURCE;\r
20\r
21typedef\r
22VOID\r
23(EFIAPI *VAR_CHECK_END_OF_DXE_CALLBACK) (\r
24 VOID\r
25 );\r
26\r
27/**\r
28 Register END_OF_DXE callback.\r
29 The callback will be invoked by VarCheckLibInitializeAtEndOfDxe().\r
30\r
31 @param[in] Callback END_OF_DXE callback.\r
32\r
33 @retval EFI_SUCCESS The callback was registered successfully.\r
34 @retval EFI_INVALID_PARAMETER Callback is NULL.\r
35 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has\r
36 already been signaled.\r
37 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the callback register request.\r
38\r
39**/\r
40EFI_STATUS\r
41EFIAPI\r
42VarCheckLibRegisterEndOfDxeCallback (\r
43 IN VAR_CHECK_END_OF_DXE_CALLBACK Callback\r
44 );\r
45\r
46/**\r
47 Var check initialize at END_OF_DXE.\r
48\r
49 This function needs to be called at END_OF_DXE.\r
50 Address pointers may be returned,\r
51 and caller needs to ConvertPointer() for the pointers.\r
52\r
53 @param[in, out] AddressPointerCount Output pointer to address pointer count.\r
54\r
55 @return Address pointer buffer, NULL if input AddressPointerCount is NULL.\r
56\r
57**/\r
58VOID ***\r
59EFIAPI\r
60VarCheckLibInitializeAtEndOfDxe (\r
61 IN OUT UINTN *AddressPointerCount OPTIONAL\r
62 );\r
63\r
64/**\r
65 Register address pointer.\r
66 The AddressPointer may be returned by VarCheckLibInitializeAtEndOfDxe().\r
67\r
68 @param[in] AddressPointer Address pointer.\r
69\r
70 @retval EFI_SUCCESS The address pointer was registered successfully.\r
71 @retval EFI_INVALID_PARAMETER AddressPointer is NULL.\r
72 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has\r
73 already been signaled.\r
74 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the address pointer register request.\r
75\r
76**/\r
77EFI_STATUS\r
78EFIAPI\r
79VarCheckLibRegisterAddressPointer (\r
80 IN VOID **AddressPointer\r
81 );\r
82\r
83/**\r
84 Register SetVariable check handler.\r
85\r
86 @param[in] Handler Pointer to check handler.\r
87\r
88 @retval EFI_SUCCESS The SetVariable check handler was registered successfully.\r
89 @retval EFI_INVALID_PARAMETER Handler is NULL.\r
90 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has\r
91 already been signaled.\r
92 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the SetVariable check handler register request.\r
93 @retval EFI_UNSUPPORTED This interface is not implemented.\r
94 For example, it is unsupported in VarCheck protocol if both VarCheck and SmmVarCheck protocols are present.\r
95\r
96**/\r
97EFI_STATUS\r
98EFIAPI\r
99VarCheckLibRegisterSetVariableCheckHandler (\r
100 IN VAR_CHECK_SET_VARIABLE_CHECK_HANDLER Handler\r
101 );\r
102\r
103/**\r
104 Variable property set.\r
105\r
106 @param[in] Name Pointer to the variable name.\r
107 @param[in] Guid Pointer to the vendor GUID.\r
108 @param[in] VariableProperty Pointer to the input variable property.\r
109\r
110 @retval EFI_SUCCESS The property of variable specified by the Name and Guid was set successfully.\r
111 @retval EFI_INVALID_PARAMETER Name, Guid or VariableProperty is NULL, or Name is an empty string,\r
112 or the fields of VariableProperty are not valid.\r
113 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has\r
114 already been signaled.\r
115 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the variable property set request.\r
116\r
117**/\r
118EFI_STATUS\r
119EFIAPI\r
120VarCheckLibVariablePropertySet (\r
121 IN CHAR16 *Name,\r
122 IN EFI_GUID *Guid,\r
123 IN VAR_CHECK_VARIABLE_PROPERTY *VariableProperty\r
124 );\r
125\r
126/**\r
127 Variable property get.\r
128\r
129 @param[in] Name Pointer to the variable name.\r
130 @param[in] Guid Pointer to the vendor GUID.\r
131 @param[out] VariableProperty Pointer to the output variable property.\r
132\r
133 @retval EFI_SUCCESS The property of variable specified by the Name and Guid was got successfully.\r
134 @retval EFI_INVALID_PARAMETER Name, Guid or VariableProperty is NULL, or Name is an empty string.\r
135 @retval EFI_NOT_FOUND The property of variable specified by the Name and Guid was not found.\r
136\r
137**/\r
138EFI_STATUS\r
139EFIAPI\r
140VarCheckLibVariablePropertyGet (\r
141 IN CHAR16 *Name,\r
142 IN EFI_GUID *Guid,\r
143 OUT VAR_CHECK_VARIABLE_PROPERTY *VariableProperty\r
144 );\r
145\r
146/**\r
147 SetVariable check.\r
148\r
149 @param[in] VariableName Name of Variable to set.\r
150 @param[in] VendorGuid Variable vendor GUID.\r
151 @param[in] Attributes Attribute value of the variable.\r
152 @param[in] DataSize Size of Data to set.\r
153 @param[in] Data Data pointer.\r
154 @param[in] RequestSource Request source.\r
155\r
156 @retval EFI_SUCCESS The SetVariable check result was success.\r
157 @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, GUID,\r
158 DataSize and Data value was supplied.\r
159 @retval EFI_WRITE_PROTECTED The variable in question is read-only.\r
160 @retval Others The other return status from check handler.\r
161\r
162**/\r
163EFI_STATUS\r
164EFIAPI\r
165VarCheckLibSetVariableCheck (\r
166 IN CHAR16 *VariableName,\r
167 IN EFI_GUID *VendorGuid,\r
168 IN UINT32 Attributes,\r
169 IN UINTN DataSize,\r
170 IN VOID *Data,\r
171 IN VAR_CHECK_REQUEST_SOURCE RequestSource\r
172 );\r
173\r
174#endif\r