VarCheckLib.h 5.9 KB

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