@param[out] Value The buffer point saved the variable info.\r
@param[out] Size The buffer size of the variable.\r
\r
- @return EFI_OUT_OF_RESOURCES Allocate buffer failed.\r
- @return EFI_SUCCESS Find the specified variable.\r
- @return Others Errors Return errors from call to gRT->GetVariable.\r
+ @retval EFI_OUT_OF_RESOURCES Allocate buffer failed.\r
+ @retval EFI_SUCCESS Find the specified variable.\r
+ @retval Others Errors Return errors from call to gRT->GetVariable.\r
\r
**/\r
EFI_STATUS\r
@param[out] Value The buffer point saved the variable info.\r
@param[out] Size The buffer size of the variable.\r
\r
- @return EFI_OUT_OF_RESOURCES Allocate buffer failed.\r
- @return EFI_SUCCESS Find the specified variable.\r
- @return Others Errors Return errors from call to gRT->GetVariable.\r
+ @retval EFI_OUT_OF_RESOURCES Allocate buffer failed.\r
+ @retval EFI_SUCCESS Find the specified variable.\r
+ @retval Others Errors Return errors from call to gRT->GetVariable.\r
\r
**/\r
EFI_STATUS\r
OUT UINTN *Size OPTIONAL\r
);\r
\r
+/** Return the attributes of the variable.\r
+\r
+ Returns the status whether get the variable success. The function retrieves\r
+ variable through the UEFI Runtime Service GetVariable(). The\r
+ returned buffer is allocated using AllocatePool(). The caller is responsible\r
+ for freeing this buffer with FreePool(). The attributes are returned if\r
+ the caller provides a valid Attribute parameter.\r
+\r
+ If Name is NULL, then ASSERT().\r
+ If Guid is NULL, then ASSERT().\r
+ If Value is NULL, then ASSERT().\r
+\r
+ @param[in] Name The pointer to a Null-terminated Unicode string.\r
+ @param[in] Guid The pointer to an EFI_GUID structure\r
+ @param[out] Value The buffer point saved the variable info.\r
+ @param[out] Size The buffer size of the variable.\r
+ @param[out] Attr The pointer to the variable attributes as found in var store\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Allocate buffer failed.\r
+ @retval EFI_SUCCESS Find the specified variable.\r
+ @retval Others Errors Return errors from call to gRT->GetVariable.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetVariable3(\r
+ IN CONST CHAR16 *Name,\r
+ IN CONST EFI_GUID *Guid,\r
+ OUT VOID **Value,\r
+ OUT UINTN *Size OPTIONAL,\r
+ OUT UINT32 *Attr OPTIONAL\r
+ );\r
+\r
/**\r
Returns a pointer to an allocated buffer that contains the best matching language\r
from a set of supported languages.\r
return Status;\r
}\r
\r
+/** Return the attributes of the variable.\r
+\r
+ Returns the status whether get the variable success. The function retrieves\r
+ variable through the UEFI Runtime Service GetVariable(). The\r
+ returned buffer is allocated using AllocatePool(). The caller is responsible\r
+ for freeing this buffer with FreePool(). The attributes are returned if\r
+ the caller provides a valid Attribute parameter.\r
+\r
+ If Name is NULL, then ASSERT().\r
+ If Guid is NULL, then ASSERT().\r
+ If Value is NULL, then ASSERT().\r
+\r
+ @param[in] Name The pointer to a Null-terminated Unicode string.\r
+ @param[in] Guid The pointer to an EFI_GUID structure\r
+ @param[out] Value The buffer point saved the variable info.\r
+ @param[out] Size The buffer size of the variable.\r
+ @param[out] Attr The pointer to the variable attributes as found in var store\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Allocate buffer failed.\r
+ @retval EFI_SUCCESS Find the specified variable.\r
+ @retval Others Errors Return errors from call to gRT->GetVariable.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetVariable3(\r
+ IN CONST CHAR16 *Name,\r
+ IN CONST EFI_GUID *Guid,\r
+ OUT VOID **Value,\r
+ OUT UINTN *Size OPTIONAL,\r
+ OUT UINT32 *Attr OPTIONAL\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ UINTN BufferSize;\r
+\r
+ ASSERT(Name != NULL && Guid != NULL && Value != NULL);\r
+\r
+ //\r
+ // Try to get the variable size.\r
+ //\r
+ BufferSize = 0;\r
+ *Value = NULL;\r
+ if (Size != NULL) {\r
+ *Size = 0;\r
+ }\r
+\r
+ if (Attr != NULL) {\r
+ *Attr = 0;\r
+ }\r
+\r
+ Status = gRT->GetVariable((CHAR16 *)Name, (EFI_GUID *)Guid, Attr, &BufferSize, *Value);\r
+ if (Status != EFI_BUFFER_TOO_SMALL) {\r
+ return Status;\r
+ }\r
+\r
+ //\r
+ // Allocate buffer to get the variable.\r
+ //\r
+ *Value = AllocatePool(BufferSize);\r
+ ASSERT(*Value != NULL);\r
+ if (*Value == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ //\r
+ // Get the variable data.\r
+ //\r
+ Status = gRT->GetVariable((CHAR16 *)Name, (EFI_GUID *)Guid, Attr, &BufferSize, *Value);\r
+ if (EFI_ERROR(Status)) {\r
+ FreePool(*Value);\r
+ *Value = NULL;\r
+ }\r
+\r
+ if (Size != NULL) {\r
+ *Size = BufferSize;\r
+ }\r
+\r
+ return Status;\r
+}\r
+\r
/**\r
Returns a pointer to an allocated buffer that contains the contents of a\r
variable retrieved through the UEFI Runtime Service GetVariable(). This\r