36 IN CHAR16 *VariableName,
40 IN EFI_GUID *VendorGuid OPTIONAL
49 UINT8 StackBuffer[256];
51 if (VendorGuid == NULL) {
62 ASSERT ((Attributes & EFI_VARIABLE_NON_VOLATILE) == 0);
71 OldDataSize =
sizeof (StackBuffer);
72 OldData = StackBuffer;
74 Status =
gRT->GetVariable (
81 if (Status == EFI_BUFFER_TOO_SMALL) {
85 OldData = AllocatePool (OldDataSize);
86 if (OldData != NULL) {
87 Status =
gRT->GetVariable (
94 if (EFI_ERROR (Status)) {
100 if (!EFI_ERROR (Status)) {
109 if (OldDataSize == DataSize) {
110 CmpResult =
CompareMem (OldData, Data, DataSize);
113 if (OldData != StackBuffer) {
120 if (CmpResult == 0) {
128 Attributes |= EFI_VARIABLE_NON_VOLATILE;
131 return gRT->SetVariable (
EFI_STATUS OcSetSystemVariable(IN CHAR16 *VariableName, IN UINT32 Attributes, IN UINTN DataSize, IN VOID *Data, IN EFI_GUID *VendorGuid OPTIONAL)