+ This code sets variable in storage blocks (Volatile or Non-Volatile).\r
+\r
+ @param VariableName A Null-terminated Unicode string that is the name of the vendor's\r
+ variable. Each VariableName is unique for each \r
+ VendorGuid. VariableName must contain 1 or more \r
+ Unicode characters. If VariableName is an empty Unicode \r
+ string, then EFI_INVALID_PARAMETER is returned.\r
+ @param VendorGuid A unique identifier for the vendor\r
+ @param Attributes Attributes bitmask to set for the variable\r
+ @param DataSize The size in bytes of the Data buffer. A size of zero causes the\r
+ variable to be deleted.\r
+ @param Data The contents for the variable\r
+ @param Global Pointer to VARIABLE_GLOBAL structure\r
+ @param VolatileOffset The offset of last volatile variable\r
+ @param NonVolatileOffset The offset of last non-volatile variable\r
+ @param Instance Instance of the Firmware Volume.\r
+\r
+ @retval EFI_SUCCESS The firmware has successfully stored the variable and its data as \r
+ defined by the Attributes.\r
+ @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits was supplied, or the \r
+ DataSize exceeds the maximum allowed, or VariableName is an empty \r
+ Unicode string, or VendorGuid is NULL.\r
+ @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data.\r
+ @retval EFI_DEVICE_ERROR The variable could not be saved due to a hardware failure.\r
+ @retval EFI_WRITE_PROTECTED The variable in question is read-only or cannot be deleted.\r
+ @retval EFI_NOT_FOUND The variable trying to be updated or deleted was not found.\r
+\r
+**/\r