11VAR_ERROR_FLAG mLastVarErrorFlag = VAR_ERROR_FLAG_NO_ERROR;
22UINT16 mUserVariableCount = 0;
23UINT16 mMarkedUserVariableCount = 0;
25EFI_GUID mVariableCleanupHiiGuid = VARIABLE_CLEANUP_HII_GUID;
26CHAR16 mVarStoreName[] = L
"VariableCleanup";
38 VARIABLE_CLEANUP_HII_GUID
42 END_ENTIRE_DEVICE_PATH_SUBTYPE,
63 VAR_ERROR_FLAG ErrorFlag;
65 Size =
sizeof (ErrorFlag);
66 Status =
gRT->GetVariable (
68 &gEdkiiVarErrorFlagGuid,
73 if (EFI_ERROR (Status)) {
74 DEBUG ((DEBUG_INFO,
"%s - not found\n", VAR_ERROR_FLAG_NAME));
75 return VAR_ERROR_FLAG_NO_ERROR;
100 if (mVarCheck ==
NULL) {
101 gBS->LocateProtocol (
102 &gEdkiiVarCheckProtocolGuid,
108 ASSERT (mVarCheck !=
NULL);
110 ZeroMem (&Property,
sizeof (Property));
111 Status = mVarCheck->VariablePropertyGet (
116 if (EFI_ERROR (Status)) {
120 DEBUG ((DEBUG_INFO,
"PlatformVarCleanup - User variable: %g:%s\n", Guid, Name));
150 for (Link = mUserVariableList.ForwardLink
151 ; Link != &mUserVariableList
152 ; Link = Link->ForwardLink)
154 UserVariableNode = USER_VARIABLE_FROM_LINK (Link);
160 return UserVariableNode;
168 ASSERT (UserVariableNode !=
NULL);
169 UserVariableNode->Signature = USER_VARIABLE_NODE_SIGNATURE;
170 CopyGuid (&UserVariableNode->Guid, Guid);
174 UserVariableNode->PromptString =
AllocatePool ((36 + 2) *
sizeof (CHAR16));
175 ASSERT (UserVariableNode->PromptString !=
NULL);
176 UnicodeSPrint (UserVariableNode->PromptString, (36 + 2) * sizeof (CHAR16), L
" %g", &UserVariableNode->Guid);
179 return UserVariableNode;
194 UINTN MaxVarNameSize;
209 MaxVarNameSize = 128 *
sizeof (CHAR16);
211 ASSERT (VarName !=
NULL);
216 MaxDataSize = 0x1000;
218 ASSERT (Data !=
NULL);
222 VarNameSize = MaxVarNameSize;
223 Status =
gRT->GetNextVariableName (&VarNameSize, VarName, &Guid);
224 if (Status == EFI_BUFFER_TOO_SMALL) {
226 ASSERT (VarName !=
NULL);
227 MaxVarNameSize = VarNameSize;
228 Status =
gRT->GetNextVariableName (&VarNameSize, VarName, &Guid);
231 if (!EFI_ERROR (Status)) {
233 DataSize = MaxDataSize;
234 GetVariableStatus =
gRT->GetVariable (VarName, &Guid, &Attributes, &DataSize, Data);
235 if (GetVariableStatus == EFI_BUFFER_TOO_SMALL) {
237 ASSERT (Data !=
NULL);
238 MaxDataSize = DataSize;
239 GetVariableStatus =
gRT->GetVariable (VarName, &Guid, &Attributes, &DataSize, Data);
246 ASSERT (UserVariableNode !=
NULL);
252 ASSERT (UserVariableNameNode !=
NULL);
253 UserVariableNameNode->Signature = USER_VARIABLE_NAME_NODE_SIGNATURE;
255 UserVariableNameNode->Attributes = Attributes;
256 UserVariableNameNode->DataSize = DataSize;
257 UserVariableNameNode->Index = Index;
258 UserVariableNameNode->QuestionId = (EFI_QUESTION_ID)(USER_VARIABLE_QUESTION_ID + Index);
262 StringSize = 2 *
sizeof (CHAR16) +
StrSize (UserVariableNameNode->Name);
263 UserVariableNameNode->PromptString =
AllocatePool (StringSize);
264 ASSERT (UserVariableNameNode->PromptString !=
NULL);
265 UnicodeSPrint (UserVariableNameNode->PromptString, StringSize, L
" %s", UserVariableNameNode->Name);
269 StringSize = (33 + 1 + (
sizeof (UINT32) +
sizeof (
UINTN)) * 2) *
sizeof (CHAR16);
270 UserVariableNameNode->HelpString =
AllocatePool (StringSize);
271 ASSERT (UserVariableNameNode->HelpString !=
NULL);
272 UnicodeSPrint (UserVariableNameNode->HelpString, StringSize, L
"Attribtues = 0x%08x and DataSize = 0x%x", UserVariableNameNode->Attributes, UserVariableNameNode->DataSize);
273 UserVariableNameNode->Deleted =
FALSE;
274 InsertTailList (&UserVariableNode->NameLink, &UserVariableNameNode->Link);
279 }
while (Status != EFI_NOT_FOUND);
281 mUserVariableCount = Index;
282 ASSERT (mUserVariableCount <= MAX_USER_VARIABLE_COUNT);
283 DEBUG ((DEBUG_INFO,
"PlatformVarCleanup - User variable count: 0x%04x\n", mUserVariableCount));
303 while (mUserVariableList.ForwardLink != &mUserVariableList) {
304 Link = mUserVariableList.ForwardLink;
305 UserVariableNode = USER_VARIABLE_FROM_LINK (Link);
309 while (UserVariableNode->NameLink.ForwardLink != &UserVariableNode->NameLink) {
310 NameLink = UserVariableNode->NameLink.ForwardLink;
311 UserVariableNameNode = USER_VARIABLE_NAME_FROM_LINK (NameLink);
315 FreePool (UserVariableNameNode->Name);
316 FreePool (UserVariableNameNode->PromptString);
317 FreePool (UserVariableNameNode->HelpString);
321 FreePool (UserVariableNode->PromptString);
355 UINTN DescriptorSize;
358 if ((Data ==
NULL) || (DataSize ==
NULL)) {
359 return EFI_INVALID_PARAMETER;
369 PayloadSize = *DataSize;
373 if (NewData ==
NULL) {
374 return EFI_OUT_OF_RESOURCES;
377 if ((Payload !=
NULL) && (PayloadSize != 0)) {
378 CopyMem (NewData + DescriptorSize, Payload, PayloadSize);
384 Status =
gRT->GetTime (&Time,
NULL);
385 if (EFI_ERROR (Status)) {
402 if (Payload !=
NULL) {
406 *DataSize = DescriptorSize + PayloadSize;
440 UINTN DescriptorSize;
441 UINT64 MonotonicCount;
443 if ((Data ==
NULL) || (DataSize ==
NULL)) {
444 return EFI_INVALID_PARAMETER;
454 PayloadSize = *DataSize;
460 if (NewData ==
NULL) {
461 return EFI_OUT_OF_RESOURCES;
464 if ((Payload !=
NULL) && (PayloadSize != 0)) {
465 CopyMem (NewData + DescriptorSize, Payload, PayloadSize);
470 Status =
gBS->GetNextMonotonicCount (&MonotonicCount);
471 if (EFI_ERROR (Status)) {
483 if (Payload !=
NULL) {
487 *DataSize = DescriptorSize + PayloadSize;
501 IN BOOLEAN DeleteAll,
513 for (Link = mUserVariableList.ForwardLink
514 ; Link != &mUserVariableList
515 ; Link = Link->ForwardLink)
517 UserVariableNode = USER_VARIABLE_FROM_LINK (Link);
519 for (NameLink = UserVariableNode->NameLink.ForwardLink
520 ; NameLink != &UserVariableNode->NameLink
521 ; NameLink = NameLink->ForwardLink)
523 UserVariableNameNode = USER_VARIABLE_NAME_FROM_LINK (NameLink);
525 if (!UserVariableNameNode->Deleted && (DeleteAll || ((VariableCleanupData !=
NULL) && (VariableCleanupData->UserVariable[UserVariableNameNode->Index] ==
TRUE)))) {
526 DEBUG ((DEBUG_INFO,
"PlatformVarCleanup - Delete variable: %g:%s\n", &UserVariableNode->Guid, UserVariableNameNode->Name));
531 if (!EFI_ERROR (Status)) {
532 Status =
gRT->SetVariable (UserVariableNameNode->Name, &UserVariableNode->Guid, UserVariableNameNode->Attributes, DataSize, Data);
539 if (!EFI_ERROR (Status)) {
540 Status =
gRT->SetVariable (UserVariableNameNode->Name, &UserVariableNode->Guid, UserVariableNameNode->Attributes, DataSize, Data);
544 Status =
gRT->SetVariable (UserVariableNameNode->Name, &UserVariableNode->Guid, 0, 0,
NULL);
547 if (!EFI_ERROR (Status)) {
548 UserVariableNameNode->Deleted =
TRUE;
550 DEBUG ((DEBUG_INFO,
"PlatformVarCleanup - Delete variable fail: %g:%s\n", &UserVariableNode->Guid, UserVariableNameNode->Name));
583 OUT EFI_STRING *Progress,
584 OUT EFI_STRING *Results
590 EFI_STRING ConfigRequestHdr;
591 EFI_STRING ConfigRequest;
592 BOOLEAN AllocatedRequest;
595 if ((Progress ==
NULL) || (Results ==
NULL)) {
596 return EFI_INVALID_PARAMETER;
601 return EFI_NOT_FOUND;
604 ConfigRequestHdr =
NULL;
605 ConfigRequest =
NULL;
606 AllocatedRequest =
FALSE;
609 Private = VARIABLE_CLEANUP_HII_PRIVATE_FROM_THIS (This);
614 ConfigRequest = Request;
622 &mVariableCleanupHiiGuid,
624 Private->DriverHandle
626 Size = (
StrLen (ConfigRequestHdr) + 32 + 1) *
sizeof (CHAR16);
628 ASSERT (ConfigRequest !=
NULL);
629 AllocatedRequest =
TRUE;
630 UnicodeSPrint (ConfigRequest, Size, L
"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize);
634 Status = Private->ConfigRouting->BlockToConfig (
635 Private->ConfigRouting,
637 (UINT8 *)&Private->VariableCleanupData,
647 if (AllocatedRequest) {
649 ConfigRequest =
NULL;
655 if (Request ==
NULL) {
657 }
else if (
StrStr (Request, L
"OFFSET") ==
NULL) {
658 *Progress = Request +
StrLen (Request);
675 EFI_STRING_ID PromptStringToken;
676 EFI_STRING_ID HelpStringToken;
677 VOID *StartOpCodeHandle;
678 VOID *EndOpCodeHandle;
691 ASSERT (StartOpCodeHandle !=
NULL);
694 ASSERT (EndOpCodeHandle !=
NULL);
701 StartLabel->
Number = LABEL_START;
708 EndLabel->
Number = LABEL_END;
712 &mVariableCleanupHiiGuid,
713 FORM_ID_VARIABLE_CLEANUP,
718 for (Link = mUserVariableList.ForwardLink
719 ; Link != &mUserVariableList
720 ; Link = Link->ForwardLink)
722 UserVariableNode = USER_VARIABLE_FROM_LINK (Link);
728 for (NameLink = UserVariableNode->NameLink.ForwardLink
729 ; NameLink != &UserVariableNode->NameLink
730 ; NameLink = NameLink->ForwardLink)
732 UserVariableNameNode = USER_VARIABLE_NAME_FROM_LINK (NameLink);
734 if (!UserVariableNameNode->Deleted) {
739 PromptStringToken =
HiiSetString (Private->HiiHandle, 0, UserVariableNode->PromptString,
NULL);
747 PromptStringToken =
HiiSetString (Private->HiiHandle, 0, UserVariableNameNode->PromptString,
NULL);
748 HelpStringToken =
HiiSetString (Private->HiiHandle, 0, UserVariableNameNode->HelpString,
NULL);
751 UserVariableNameNode->QuestionId,
752 VARIABLE_CLEANUP_VARSTORE_ID,
753 (UINT16)(USER_VARIABLE_VAR_OFFSET + UserVariableNameNode->Index),
756 EFI_IFR_FLAG_CALLBACK,
757 Private->VariableCleanupData.UserVariable[UserVariableNameNode->Index],
777 SAVE_AND_EXIT_QUESTION_ID,
780 EFI_IFR_FLAG_CALLBACK,
785 NO_SAVE_AND_EXIT_QUESTION_ID,
788 EFI_IFR_FLAG_CALLBACK,
794 &mVariableCleanupHiiGuid,
795 FORM_ID_VARIABLE_CLEANUP,
842 IN CONST EFI_STRING Configuration,
843 OUT EFI_STRING *Progress
850 if (Progress ==
NULL) {
851 return EFI_INVALID_PARAMETER;
854 *Progress = Configuration;
856 if (Configuration ==
NULL) {
857 return EFI_INVALID_PARAMETER;
865 return EFI_NOT_FOUND;
868 Private = VARIABLE_CLEANUP_HII_PRIVATE_FROM_THIS (This);
876 Status = Private->ConfigRouting->ConfigToBlock (
877 Private->ConfigRouting,
879 (UINT8 *)&Private->VariableCleanupData,
922 IN EFI_BROWSER_ACTION Action,
923 IN EFI_QUESTION_ID QuestionId,
926 OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
932 Private = VARIABLE_CLEANUP_HII_PRIVATE_FROM_THIS (This);
934 if ((Action != EFI_BROWSER_ACTION_CHANGING) && (Action != EFI_BROWSER_ACTION_CHANGED)) {
938 return EFI_UNSUPPORTED;
944 VariableCleanupData = &Private->VariableCleanupData;
946 if (Action == EFI_BROWSER_ACTION_CHANGING) {
948 return EFI_INVALID_PARAMETER;
950 }
else if (Action == EFI_BROWSER_ACTION_CHANGED) {
951 if ((Value ==
NULL) || (ActionRequest ==
NULL)) {
952 return EFI_INVALID_PARAMETER;
955 if ((QuestionId >= USER_VARIABLE_QUESTION_ID) && (QuestionId < USER_VARIABLE_QUESTION_ID + MAX_USER_VARIABLE_COUNT)) {
960 mMarkedUserVariableCount++;
961 ASSERT (mMarkedUserVariableCount <= mUserVariableCount);
962 if (mMarkedUserVariableCount == mUserVariableCount) {
966 VariableCleanupData->SelectAll =
TRUE;
972 mMarkedUserVariableCount--;
976 VariableCleanupData->SelectAll =
FALSE;
979 switch (QuestionId) {
980 case SELECT_ALL_QUESTION_ID:
985 SetMem (VariableCleanupData->UserVariable, sizeof (VariableCleanupData->UserVariable),
TRUE);
986 mMarkedUserVariableCount = mUserVariableCount;
991 SetMem (VariableCleanupData->UserVariable, sizeof (VariableCleanupData->UserVariable),
FALSE);
992 mMarkedUserVariableCount = 0;
996 case SAVE_AND_EXIT_QUESTION_ID:
998 *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;
1001 case NO_SAVE_AND_EXIT_QUESTION_ID:
1005 *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;
1040 IN VAR_ERROR_FLAG Flag,
1041 IN VAR_CLEANUP_TYPE Type
1052 return EFI_UNSUPPORTED;
1055 if ((Type >= VarCleanupMax) || ((Flag & ((VAR_ERROR_FLAG)(VAR_ERROR_FLAG_SYSTEM_ERROR & VAR_ERROR_FLAG_USER_ERROR))) == 0)) {
1056 return EFI_INVALID_PARAMETER;
1059 if (Flag == VAR_ERROR_FLAG_NO_ERROR) {
1066 if ((Flag & (~((VAR_ERROR_FLAG)VAR_ERROR_FLAG_SYSTEM_ERROR))) == 0) {
1070 DEBUG ((DEBUG_ERROR,
"NOTICE - VAR_ERROR_FLAG_SYSTEM_ERROR\n"));
1071 DEBUG ((DEBUG_ERROR,
"Platform should have mechanism to reset system to manufacture mode\n"));
1072 return EFI_UNSUPPORTED;
1094 case VarCleanupManually:
1098 Status =
gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid,
NULL, (VOID **)&FormBrowser2);
1099 if (EFI_ERROR (Status)) {
1104 if (Private ==
NULL) {
1105 return EFI_OUT_OF_RESOURCES;
1108 Private->Signature = VARIABLE_CLEANUP_HII_PRIVATE_SIGNATURE;
1113 Status =
gBS->LocateProtocol (
1114 &gEfiHiiConfigRoutingProtocolGuid,
1116 (VOID **)&Private->ConfigRouting
1118 if (EFI_ERROR (Status)) {
1125 Status =
gBS->InstallMultipleProtocolInterfaces (
1126 &Private->DriverHandle,
1127 &gEfiDevicePathProtocolGuid,
1128 &mVarCleanupHiiVendorDevicePath,
1129 &gEfiHiiConfigAccessProtocolGuid,
1130 &Private->ConfigAccess,
1133 if (EFI_ERROR (Status)) {
1141 &mVariableCleanupHiiGuid,
1142 Private->DriverHandle,
1143 PlatformVarCleanupLibStrings,
1147 if (Private->HiiHandle ==
NULL) {
1148 Status = EFI_OUT_OF_RESOURCES;
1154 Status = FormBrowser2->SendForm (
1156 &Private->HiiHandle,
1166 return EFI_UNSUPPORTED;
1171 if (Private->DriverHandle !=
NULL) {
1172 gBS->UninstallMultipleProtocolInterfaces (
1173 Private->DriverHandle,
1174 &gEfiDevicePathProtocolGuid,
1175 &mVarCleanupHiiVendorDevicePath,
1176 &gEfiHiiConfigAccessProtocolGuid,
1177 &Private->ConfigAccess,
1182 if (Private->HiiHandle !=
NULL) {
1207 return mLastVarErrorFlag;
1251 DEBUG ((DEBUG_INFO,
"mLastVarErrorFlag - 0x%02x\n", mLastVarErrorFlag));
1256 Status =
gBS->CreateEventEx (
1261 &gEfiEndOfDxeEventGroupGuid,
1262 &mPlatVarCleanupLibEndOfDxeEvent
1290 Status =
gBS->CloseEvent (mPlatVarCleanupLibEndOfDxeEvent);
UINTN EFIAPI StrSize(IN CONST CHAR16 *String)
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
#define INITIALIZE_LIST_HEAD_VARIABLE(ListHead)
UINTN EFIAPI StrLen(IN CONST CHAR16 *String)
CHAR16 *EFIAPI StrStr(IN CONST CHAR16 *String, IN CONST CHAR16 *SearchString)
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI SetMem(OUT VOID *Buffer, IN UINTN Length, IN UINT8 Value)
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
GUID *EFIAPI CopyGuid(OUT GUID *DestinationGuid, IN CONST GUID *SourceGuid)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
#define HARDWARE_DEVICE_PATH
VOID *EFIAPI ReallocatePool(IN UINTN OldSize, IN UINTN NewSize, IN VOID *OldBuffer OPTIONAL)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
VOID *EFIAPI AllocateCopyPool(IN UINTN AllocationSize, IN CONST VOID *Buffer)
EFI_STRING EFIAPI HiiConstructConfigHdr(IN CONST EFI_GUID *Guid OPTIONAL, IN CONST CHAR16 *Name OPTIONAL, IN EFI_HANDLE DriverHandle)
UINT8 *EFIAPI HiiCreateSubTitleOpCode(IN VOID *OpCodeHandle, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 Flags, IN UINT8 Scope)
BOOLEAN EFIAPI HiiGetBrowserData(IN CONST EFI_GUID *VariableGuid OPTIONAL, IN CONST CHAR16 *VariableName OPTIONAL, IN UINTN BufferSize, OUT UINT8 *Buffer)
VOID *EFIAPI HiiAllocateOpCodeHandle(VOID)
VOID EFIAPI HiiFreeOpCodeHandle(VOID *OpCodeHandle)
EFI_HII_HANDLE EFIAPI HiiAddPackages(IN CONST EFI_GUID *PackageListGuid, IN EFI_HANDLE DeviceHandle OPTIONAL,...)
UINT8 *EFIAPI HiiCreateGuidOpCode(IN VOID *OpCodeHandle, IN CONST EFI_GUID *Guid, IN CONST VOID *GuidOpCode OPTIONAL, IN UINTN OpCodeSize)
UINT8 *EFIAPI HiiCreateCheckBoxOpCode(IN VOID *OpCodeHandle, IN EFI_QUESTION_ID QuestionId, IN EFI_VARSTORE_ID VarStoreId, IN UINT16 VarOffset, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN UINT8 CheckBoxFlags, IN VOID *DefaultsOpCodeHandle OPTIONAL)
BOOLEAN EFIAPI HiiSetBrowserData(IN CONST EFI_GUID *VariableGuid OPTIONAL, IN CONST CHAR16 *VariableName OPTIONAL, IN UINTN BufferSize, IN CONST UINT8 *Buffer, IN CONST CHAR16 *RequestElement OPTIONAL)
EFI_STATUS EFIAPI HiiUpdateForm(IN EFI_HII_HANDLE HiiHandle, IN EFI_GUID *FormSetGuid OPTIONAL, IN EFI_FORM_ID FormId, IN VOID *StartOpCodeHandle, IN VOID *EndOpCodeHandle OPTIONAL)
BOOLEAN EFIAPI HiiIsConfigHdrMatch(IN CONST EFI_STRING ConfigHdr, IN CONST EFI_GUID *Guid OPTIONAL, IN CONST CHAR16 *Name OPTIONAL)
EFI_STRING_ID EFIAPI HiiSetString(IN EFI_HII_HANDLE HiiHandle, IN EFI_STRING_ID StringId OPTIONAL, IN CONST EFI_STRING String, IN CONST CHAR8 *SupportedLanguages OPTIONAL)
UINT8 *EFIAPI HiiCreateActionOpCode(IN VOID *OpCodeHandle, IN EFI_QUESTION_ID QuestionId, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN EFI_STRING_ID QuestionConfig)
VOID EFIAPI HiiRemovePackages(IN EFI_HII_HANDLE HiiHandle)
#define EFI_IFR_EXTEND_OP_LABEL
UINTN EFIAPI UnicodeSPrint(OUT CHAR16 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR16 *FormatString,...)
EFI_RUNTIME_SERVICES * gRT
#define OFFSET_OF(TYPE, Field)
#define ASSERT_EFI_ERROR(StatusParameter)
#define DEBUG(Expression)
VOID CreateUserVariableNode(VOID)
EFI_STATUS EFIAPI VariableCleanupHiiCallback(IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN EFI_BROWSER_ACTION Action, IN EFI_QUESTION_ID QuestionId, IN UINT8 Type, IN EFI_IFR_TYPE_VALUE *Value, OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest)
VAR_ERROR_FLAG EFIAPI GetLastBootVarErrorFlag(VOID)
USER_VARIABLE_NODE * FindUserVariableNodeByGuid(IN EFI_GUID *Guid)
VOID UpdateUserVariableForm(IN VARIABLE_CLEANUP_HII_PRIVATE_DATA *Private)
EFI_STATUS EFIAPI PlatformVarCleanupLibDestructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS EFIAPI VariableCleanupHiiRouteConfig(IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN CONST EFI_STRING Configuration, OUT EFI_STRING *Progress)
EFI_STATUS EFIAPI VariableCleanupHiiExtractConfig(IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN CONST EFI_STRING Request, OUT EFI_STRING *Progress, OUT EFI_STRING *Results)
EFI_STATUS CreateTimeBasedPayload(IN OUT UINTN *DataSize, IN OUT UINT8 **Data)
EFI_STATUS CreateCounterBasedPayload(IN OUT UINTN *DataSize, IN OUT UINT8 **Data)
EFI_STATUS EFIAPI PlatformVarCleanupLibConstructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
BOOLEAN IsUserVariable(IN CHAR16 *Name, IN EFI_GUID *Guid)
VOID DeleteUserVariable(IN BOOLEAN DeleteAll, IN VARIABLE_CLEANUP_DATA *VariableCleanupData OPTIONAL)
EFI_STATUS EFIAPI PlatformVarCleanup(IN VAR_ERROR_FLAG Flag, IN VAR_CLEANUP_TYPE Type)
VOID EFIAPI PlatformVarCleanupEndOfDxeEvent(IN EFI_EVENT Event, IN VOID *Context)
VOID DestroyUserVariableNode(VOID)
VAR_ERROR_FLAG InternalGetVarErrorFlag(VOID)
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)
#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS
#define EFI_VARIABLE_NON_VOLATILE
#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS
WIN_CERTIFICATE_UEFI_GUID AuthInfo
WIN_CERTIFICATE_UEFI_GUID AuthInfo