EFI_STATUS Status;\r
EFI_USER_PROFILE_HANDLE User;\r
EFI_INPUT_KEY Key;\r
+ EFI_USER_INFO_HANDLE UserInfo;\r
+ EFI_USER_INFO *Info;\r
+ UINTN InfoSize;\r
\r
//\r
// Find specified user profile and delete it.\r
}\r
\r
if (UserIndex == 1) {\r
+ //\r
+ // Get the identification policy.\r
+ //\r
+ Status = FindInfoByType (User, EFI_USER_INFO_IDENTITY_POLICY_RECORD, &UserInfo);\r
+ if (EFI_ERROR (Status)) {\r
+ goto Done;\r
+ }\r
+\r
+ InfoSize = 0;\r
+ Info = NULL;\r
+ Status = mUserManager->GetInfo (mUserManager, User, UserInfo, Info, &InfoSize);\r
+ if (Status == EFI_BUFFER_TOO_SMALL) {\r
+ Info = AllocateZeroPool (InfoSize);\r
+ if (Info == NULL) {\r
+ goto Done;\r
+ }\r
+ Status = mUserManager->GetInfo (mUserManager, User, UserInfo, Info, &InfoSize);\r
+ }\r
+\r
+ //\r
+ // Delete the user on the credential providers by its identification policy.\r
+ //\r
+ DeleteCredentialFromProviders ((UINT8 *)(Info + 1), Info->InfoSize - sizeof (EFI_USER_INFO), User);\r
+ FreePool (Info);\r
+ \r
Status = mUserManager->Delete (mUserManager, User);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r