2 Provides variable check services and database management.
4 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
9 #ifndef _VARIABLE_CHECK_LIB_H_
10 #define _VARIABLE_CHECK_LIB_H_
12 #include <Protocol/VarCheck.h>
15 VarCheckRequestReserved0
= 0,
16 VarCheckRequestReserved1
= 1,
17 VarCheckFromTrusted
= 2,
18 VarCheckFromUntrusted
= 3,
19 } VAR_CHECK_REQUEST_SOURCE
;
23 (EFIAPI
*VAR_CHECK_END_OF_DXE_CALLBACK
)(
28 Register END_OF_DXE callback.
29 The callback will be invoked by VarCheckLibInitializeAtEndOfDxe().
31 @param[in] Callback END_OF_DXE callback.
33 @retval EFI_SUCCESS The callback was registered successfully.
34 @retval EFI_INVALID_PARAMETER Callback is NULL.
35 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has
36 already been signaled.
37 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the callback register request.
42 VarCheckLibRegisterEndOfDxeCallback (
43 IN VAR_CHECK_END_OF_DXE_CALLBACK Callback
47 Var check initialize at END_OF_DXE.
49 This function needs to be called at END_OF_DXE.
50 Address pointers may be returned,
51 and caller needs to ConvertPointer() for the pointers.
53 @param[in, out] AddressPointerCount Output pointer to address pointer count.
55 @return Address pointer buffer, NULL if input AddressPointerCount is NULL.
60 VarCheckLibInitializeAtEndOfDxe (
61 IN OUT UINTN
*AddressPointerCount OPTIONAL
65 Register address pointer.
66 The AddressPointer may be returned by VarCheckLibInitializeAtEndOfDxe().
68 @param[in] AddressPointer Address pointer.
70 @retval EFI_SUCCESS The address pointer was registered successfully.
71 @retval EFI_INVALID_PARAMETER AddressPointer is NULL.
72 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has
73 already been signaled.
74 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the address pointer register request.
79 VarCheckLibRegisterAddressPointer (
80 IN VOID
**AddressPointer
84 Register SetVariable check handler.
86 @param[in] Handler Pointer to check handler.
88 @retval EFI_SUCCESS The SetVariable check handler was registered successfully.
89 @retval EFI_INVALID_PARAMETER Handler is NULL.
90 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has
91 already been signaled.
92 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the SetVariable check handler register request.
93 @retval EFI_UNSUPPORTED This interface is not implemented.
94 For example, it is unsupported in VarCheck protocol if both VarCheck and SmmVarCheck protocols are present.
99 VarCheckLibRegisterSetVariableCheckHandler (
100 IN VAR_CHECK_SET_VARIABLE_CHECK_HANDLER Handler
104 Variable property set.
106 @param[in] Name Pointer to the variable name.
107 @param[in] Guid Pointer to the vendor GUID.
108 @param[in] VariableProperty Pointer to the input variable property.
110 @retval EFI_SUCCESS The property of variable specified by the Name and Guid was set successfully.
111 @retval EFI_INVALID_PARAMETER Name, Guid or VariableProperty is NULL, or Name is an empty string,
112 or the fields of VariableProperty are not valid.
113 @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has
114 already been signaled.
115 @retval EFI_OUT_OF_RESOURCES There is not enough resource for the variable property set request.
120 VarCheckLibVariablePropertySet (
123 IN VAR_CHECK_VARIABLE_PROPERTY
*VariableProperty
127 Variable property get.
129 @param[in] Name Pointer to the variable name.
130 @param[in] Guid Pointer to the vendor GUID.
131 @param[out] VariableProperty Pointer to the output variable property.
133 @retval EFI_SUCCESS The property of variable specified by the Name and Guid was got successfully.
134 @retval EFI_INVALID_PARAMETER Name, Guid or VariableProperty is NULL, or Name is an empty string.
135 @retval EFI_NOT_FOUND The property of variable specified by the Name and Guid was not found.
140 VarCheckLibVariablePropertyGet (
143 OUT VAR_CHECK_VARIABLE_PROPERTY
*VariableProperty
149 @param[in] VariableName Name of Variable to set.
150 @param[in] VendorGuid Variable vendor GUID.
151 @param[in] Attributes Attribute value of the variable.
152 @param[in] DataSize Size of Data to set.
153 @param[in] Data Data pointer.
154 @param[in] RequestSource Request source.
156 @retval EFI_SUCCESS The SetVariable check result was success.
157 @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, GUID,
158 DataSize and Data value was supplied.
159 @retval EFI_WRITE_PROTECTED The variable in question is read-only.
160 @retval Others The other return status from check handler.
165 VarCheckLibSetVariableCheck (
166 IN CHAR16
*VariableName
,
167 IN EFI_GUID
*VendorGuid
,
168 IN UINT32 Attributes
,
171 IN VAR_CHECK_REQUEST_SOURCE RequestSource