SecurityPkg/UserIdentification/UserIdentifyManagerDxe/UserIdentifyManager.c File Reference


Functions

EFI_STATUS FindUserProfile (IN OUT USER_PROFILE_ENTRY **User, IN BOOLEAN NextUser, OUT UINTN *ProfileIndex)
EFI_STATUS FindUserInfo (IN USER_PROFILE_ENTRY *User, IN OUT EFI_USER_INFO **Info, IN BOOLEAN NextInfo, OUT UINTN *Offset)
EFI_STATUS FindUserInfoByType (IN USER_PROFILE_ENTRY *User, IN OUT EFI_USER_INFO **Info, IN UINT8 InfoType)
EFI_STATUS FindUserProfileByInfo (IN OUT USER_PROFILE_ENTRY **User, IN OUT EFI_USER_INFO **UserInfo, IN EFI_USER_INFO *Info, IN UINTN InfoSize)
BOOLEAN CheckAccessPolicy (IN UINT8 *PolicyInfo, IN UINTN InfoLen)
BOOLEAN CheckIdentityPolicy (IN UINT8 *PolicyInfo, IN UINTN InfoLen)
BOOLEAN CheckUserInfo (IN CONST EFI_USER_INFO *Info)
BOOLEAN CheckProfileInfo (IN UINT8 *UserProfileInfo, IN UINTN UserProfileSize)
BOOLEAN CheckCurrentUserAccessRight (IN UINT32 RightType)
VOID GenerateIdentifier (OUT UINT8 *Identifier)
VOID GenerateUserId (OUT UINT8 *UserId)
BOOLEAN ExpandUsermUserProfileDb (VOID)
BOOLEAN ExpandUserProfile (IN USER_PROFILE_ENTRY *User, IN UINTN ExpandSize)
EFI_STATUS SaveNvUserProfile (IN USER_PROFILE_ENTRY *User, IN BOOLEAN Delete)
EFI_STATUS AddUserInfo (IN USER_PROFILE_ENTRY *User, IN UINT8 *Info, IN UINTN InfoSize, OUT EFI_USER_INFO **UserInfo, IN BOOLEAN Save)
EFI_STATUS GetUserInfo (IN USER_PROFILE_ENTRY *User, IN EFI_USER_INFO *UserInfo, OUT EFI_USER_INFO *Info, IN OUT UINTN *InfoSize, IN BOOLEAN ChkRight)
EFI_STATUS DelUserInfo (IN USER_PROFILE_ENTRY *User, IN EFI_USER_INFO *Info, IN BOOLEAN Save)
EFI_STATUS ModifyUserInfo (IN USER_PROFILE_ENTRY *User, IN OUT EFI_USER_INFO **UserInfo, IN CONST EFI_USER_INFO *Info, IN UINTN InfoSize)
EFI_STATUS DelUserProfile (IN USER_PROFILE_ENTRY *User)
EFI_STATUS AddUserProfile (OUT USER_PROFILE_ENTRY **UserProfile, IN UINTN ProfileSize, IN UINT8 *ProfileInfo, IN BOOLEAN Save)
EFI_STATUS CreateUserProfile (OUT USER_PROFILE_ENTRY **User)
EFI_STATUS AddDefaultUserProfile (VOID)
EFI_STATUS PublishUserTable (VOID)
EFI_STATUS GetIdentifyType (IN EFI_USER_PROFILE_HANDLE User, OUT UINT8 *PolicyType)
EFI_STATUS IdentifyByProviderId (IN EFI_USER_PROFILE_HANDLE User, IN EFI_GUID *Provider)
EFI_STATUS UpdateUserInfo (IN USER_PROFILE_ENTRY *User)
VOID AddProviderSelection (IN EFI_GUID *ProviderGuid, IN VOID *OpCodeHandle)
EFI_STATUS AddUserSelection (IN UINT16 Index, IN USER_PROFILE_ENTRY *User, IN VOID *OpCodeHandle)
EFI_STATUS IdentifyAndTypeUser (IN USER_PROFILE_ENTRY *User)
EFI_STATUS IdentifyOrTypeUser (IN USER_PROFILE_ENTRY *User)
EFI_STATUS EFIAPI UserIdentifyManagerCallback (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)
EFI_STATUS InitUserProfileDb (VOID)
EFI_STATUS InitProviderInfo (VOID)
EFI_STATUS EFIAPI FakeExtractConfig (IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN CONST EFI_STRING Request, OUT EFI_STRING *Progress, OUT EFI_STRING *Results)
EFI_STATUS EFIAPI FakeRouteConfig (IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN CONST EFI_STRING Configuration, OUT EFI_STRING *Progress)
EFI_STATUS InitFormBrowser (VOID)
EFI_STATUS IdentifyAutoLogonUser (IN UINTN ProviderIndex, OUT USER_PROFILE_ENTRY **User)
BOOLEAN CheckConsole (EFI_GUID *ProtocolGuid)
BOOLEAN IsConsoleReady (VOID)
EFI_STATUS IdentifyUser (OUT USER_PROFILE_ENTRY **User)
VOID EFIAPI InternalEmptyFuntion (IN EFI_EVENT Event, IN VOID *Context)
VOID SignalEventUserProfileChanged (VOID)
EFI_STATUS EFIAPI UserProfileCreate (IN CONST EFI_USER_MANAGER_PROTOCOL *This, OUT EFI_USER_PROFILE_HANDLE *User)
EFI_STATUS EFIAPI UserProfileDelete (IN CONST EFI_USER_MANAGER_PROTOCOL *This, IN EFI_USER_PROFILE_HANDLE User)
EFI_STATUS EFIAPI UserProfileGetNext (IN CONST EFI_USER_MANAGER_PROTOCOL *This, IN OUT EFI_USER_PROFILE_HANDLE *User)
EFI_STATUS EFIAPI UserProfileCurrent (IN CONST EFI_USER_MANAGER_PROTOCOL *This, OUT EFI_USER_PROFILE_HANDLE *CurrentUser)
EFI_STATUS EFIAPI UserProfileIdentify (IN CONST EFI_USER_MANAGER_PROTOCOL *This, OUT EFI_USER_PROFILE_HANDLE *User)
EFI_STATUS EFIAPI UserProfileFind (IN CONST EFI_USER_MANAGER_PROTOCOL *This, IN OUT EFI_USER_PROFILE_HANDLE *User, IN OUT EFI_USER_INFO_HANDLE *UserInfo, IN CONST EFI_USER_INFO *Info, IN UINTN InfoSize)
EFI_STATUS EFIAPI UserProfileGetInfo (IN CONST EFI_USER_MANAGER_PROTOCOL *This, IN EFI_USER_PROFILE_HANDLE User, IN EFI_USER_INFO_HANDLE UserInfo, OUT EFI_USER_INFO *Info, IN OUT UINTN *InfoSize)
EFI_STATUS EFIAPI UserProfileSetInfo (IN CONST EFI_USER_MANAGER_PROTOCOL *This, IN EFI_USER_PROFILE_HANDLE User, IN OUT EFI_USER_INFO_HANDLE *UserInfo, IN CONST EFI_USER_INFO *Info, IN UINTN InfoSize)
EFI_STATUS EFIAPI UserProfileNotify (IN CONST EFI_USER_MANAGER_PROTOCOL *This, IN EFI_HANDLE Changed)
EFI_STATUS EFIAPI UserProfileDeleteInfo (IN CONST EFI_USER_MANAGER_PROTOCOL *This, IN EFI_USER_PROFILE_HANDLE User, IN EFI_USER_INFO_HANDLE UserInfo)
EFI_STATUS EFIAPI UserProfileGetNextInfo (IN CONST EFI_USER_MANAGER_PROTOCOL *This, IN EFI_USER_PROFILE_HANDLE User, IN OUT EFI_USER_INFO_HANDLE *UserInfo)
EFI_STATUS EFIAPI UserIdentifyManagerInit (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)

Variables

CHAR16 mUserName [] = L"Administrator"
USER_PROFILE_DBmUserProfileDb = NULL
CREDENTIAL_PROVIDER_INFOmProviderDb = NULL
EFI_USER_PROFILE_HANDLE mCurrentUser = NULL
BOOLEAN mIdentified = FALSE
USER_MANAGER_CALLBACK_INFOmCallbackInfo = NULL
HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath
EFI_USER_MANAGER_PROTOCOL gUserIdentifyManager

Detailed Description

This driver manages user information and produces user manager protocol.

Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.


Function Documentation

EFI_STATUS AddDefaultUserProfile ( VOID   ) 

Add a default user profile to user profile database.

Return values:
EFI_SUCCESS A default user profile is added successfully.
Others Fail to add a default user profile

References CreateUserProfile(), EFI_STATUS(), INFO_PAYLOAD_SIZE, ModifyUserInfo(), and mUserName.

Referenced by InitUserProfileDb().

VOID AddProviderSelection ( IN EFI_GUID *  ProviderGuid,
IN VOID *  OpCodeHandle 
)

Add a credenetial provider item in form.

Parameters:
[in] ProviderGuid Points to the identifir of credential provider.
[in] OpCodeHandle Points to container for dynamic created opcodes.

References CREDENTIAL_PROVIDER_INFO::Count, USER_MANAGER_CALLBACK_INFO::HiiHandle, LABEL_PROVIDER_NAME, CREDENTIAL_PROVIDER_INFO::Provider, and UINTN().

Referenced by IdentifyOrTypeUser().

EFI_STATUS AddUserInfo ( IN USER_PROFILE_ENTRY User,
IN UINT8 *  Info,
IN UINTN  InfoSize,
OUT EFI_USER_INFO **  UserInfo,
IN BOOLEAN  Save 
)

Add one new user info into the user's profile.

Parameters:
[in] User point to the user profile
[in] Info Points to the user information payload.
[in] InfoSize The size of the user information payload, in bytes.
[out] UserInfo Point to the new info in user profile
[in] Save If TRUE, save the profile to NV flash. If FALSE, don't need to save the profile to NV flash.
Return values:
EFI_SUCCESS Add user info to user profile successfully.
Others Fail to add user info to user profile.

References EFI_STATUS(), ExpandUserProfile(), FindUserProfile(), and SaveNvUserProfile().

Referenced by AddUserProfile(), and ModifyUserInfo().

EFI_STATUS AddUserProfile ( OUT USER_PROFILE_ENTRY **  UserProfile,
IN UINTN  ProfileSize,
IN UINT8 *  ProfileInfo,
IN BOOLEAN  Save 
)

Add user profile to user profile database.

Parameters:
[out] UserProfile Point to the newly added user profile.
[in] ProfileSize The size of the user profile.
[in] ProfileInfo Point to the user profie data.
[in] Save If TRUE, save the new added profile to NV flash. If FALSE, don't save the profile to NV flash.
Return values:
EFI_SUCCESS Add user profile to user profile database successfully.
Others Fail to add user profile to user profile database.

References AddUserInfo(), CheckProfileInfo(), DelUserProfile(), EFI_STATUS(), ExpandUsermUserProfileDb(), USER_PROFILE_DB::MaxProfileNum, USER_PROFILE_ENTRY::MaxProfileSize, USER_PROFILE_ENTRY::ProfileInfo, USER_PROFILE_DB::UserProfile, USER_PROFILE_DB::UserProfileNum, USER_PROFILE_ENTRY::UserProfileSize, and USER_PROFILE_ENTRY::UserVarName.

Referenced by CreateUserProfile(), and InitUserProfileDb().

EFI_STATUS AddUserSelection ( IN UINT16  Index,
IN USER_PROFILE_ENTRY User,
IN VOID *  OpCodeHandle 
)

Add a username item in form.

Parameters:
[in] Index The index of the user in the user name list.
[in] User Points to the user profile whose username is added.
[in] OpCodeHandle Points to container for dynamic created opcodes.
Return values:
EFI_SUCCESS Add a username successfully.
Others Fail to add a username.

References EFI_STATUS(), FindUserInfoByType(), FORMID_PROVIDER_FORM, and USER_MANAGER_CALLBACK_INFO::HiiHandle.

Referenced by UserIdentifyManagerCallback().

BOOLEAN CheckAccessPolicy ( IN UINT8 *  PolicyInfo,
IN UINTN  InfoLen 
)

Check whether the access policy is valid.

Parameters:
[in] PolicyInfo Point to the access policy.
[in] InfoLen The policy length.
Return values:
TRUE The policy is a valid access policy.
FALSE The access policy is not a valid access policy.

References TRUE, and UINTN().

Referenced by CheckUserInfo().

BOOLEAN CheckConsole ( EFI_GUID *  ProtocolGuid  ) 

Check whether the given console is ready.

Parameters:
[in] ProtocolGuid Points to the protocol guid of sonsole .
Return values:
TRUE The given console is ready.
FALSE The given console is not ready.

References EFI_STATUS(), TRUE, and UINTN().

Referenced by IsConsoleReady().

BOOLEAN CheckCurrentUserAccessRight ( IN UINT32  RightType  ) 

Find the specified RightType in current user profile.

Parameters:
[in] RightType Could be EFI_USER_INFO_ACCESS_MANAGE, EFI_USER_INFO_ACCESS_ENROLL_OTHERS or EFI_USER_INFO_ACCESS_ENROLL_SELF.
Return values:
TRUE Find the specified RightType in current user profile.
FALSE Can't find the right in the profile.

References EFI_STATUS(), FindUserInfoByType(), mCurrentUser, TRUE, and UINTN().

Referenced by UserProfileCreate(), UserProfileDelete(), UserProfileDeleteInfo(), and UserProfileSetInfo().

BOOLEAN CheckIdentityPolicy ( IN UINT8 *  PolicyInfo,
IN UINTN  InfoLen 
)

Check whether the identity policy is valid.

Parameters:
[in] PolicyInfo Point to the identity policy.
[in] InfoLen The policy length.
Return values:
TRUE The policy is a valid identity policy.
FALSE The access policy is not a valid identity policy.

References TRUE, and UINTN().

Referenced by CheckUserInfo().

BOOLEAN CheckProfileInfo ( IN UINT8 *  UserProfileInfo,
IN UINTN  UserProfileSize 
)

Check the user profile data format to be added.

Parameters:
[in] UserProfileInfo Points to the user profile data.
[in] UserProfileSize The length of user profile data.
Return values:
TRUE It is a valid user profile.
FALSE It is not a valid user profile.

References CheckUserInfo(), TRUE, and UINTN().

Referenced by AddUserProfile().

BOOLEAN CheckUserInfo ( IN CONST EFI_USER_INFO *  Info  ) 

Check whether the user information is a valid user information record.

Parameters:
[in] Info points to the user information.
Return values:
TRUE The info is a valid user information record.
FALSE The info is not a valid user information record.

References CheckAccessPolicy(), CheckIdentityPolicy(), TRUE, and UINTN().

Referenced by CheckProfileInfo(), and ModifyUserInfo().

EFI_STATUS CreateUserProfile ( OUT USER_PROFILE_ENTRY **  User  ) 

This function creates a new user profile with only a new user identifier attached and returns its handle. The user profile is non-volatile, but the handle User can change across reboots.

Parameters:
[out] User Handle of a new user profile.
Return values:
EFI_SUCCESS User profile was successfully created.
Others Fail to create user profile

References AddUserProfile(), EFI_STATUS(), GenerateUserId(), and TRUE.

Referenced by AddDefaultUserProfile(), and UserProfileCreate().

EFI_STATUS DelUserInfo ( IN USER_PROFILE_ENTRY User,
IN EFI_USER_INFO *  Info,
IN BOOLEAN  Save 
)

Delete the specified user information from user profile.

Parameters:
[in] User Point to the user profile.
[in] Info Point to the user information record to delete.
[in] Save If TRUE, save the profile to NV flash. If FALSE, don't need to save the profile to NV flash.
Return values:
EFI_SUCCESS Delete user info from user profile successfully.
Others Fail to delete user info from user profile.

References EFI_STATUS(), FindUserInfo(), SaveNvUserProfile(), and UINTN().

Referenced by ModifyUserInfo(), and UserProfileDeleteInfo().

EFI_STATUS DelUserProfile ( IN USER_PROFILE_ENTRY User  ) 

Delete the user profile from non-volatile memory and database.

Parameters:
[in] User Points to the user profile.
Return values:
EFI_SUCCESS Delete user from the user profile successfully.
Others Fail to delete user from user profile

References EFI_STATUS(), FindUserProfile(), mCurrentUser, SaveNvUserProfile(), TRUE, UINTN(), USER_PROFILE_DB::UserProfile, and USER_PROFILE_DB::UserProfileNum.

Referenced by AddUserProfile(), and UserProfileDelete().

BOOLEAN ExpandUsermUserProfileDb ( VOID   ) 

Expand user profile database.

Return values:
TRUE Success to expand user profile database.
FALSE Fail to expand user profile database.

References USER_PROFILE_DB::MaxProfileNum, TRUE, UINTN(), USER_NUMBER_INC, USER_PROFILE_DB::UserProfile, and USER_PROFILE_DB::UserProfileNum.

Referenced by AddUserProfile(), and InitUserProfileDb().

BOOLEAN ExpandUserProfile ( IN USER_PROFILE_ENTRY User,
IN UINTN  ExpandSize 
)

Expand user profile

Parameters:
[in] User Points to user profile.
[in] ExpandSize The size of user profile.
Return values:
TRUE Success to expand user profile size.
FALSE Fail to expand user profile size.

References TRUE, and UINTN().

Referenced by AddUserInfo().

EFI_STATUS EFIAPI FakeExtractConfig ( IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *  This,
IN CONST EFI_STRING  Request,
OUT EFI_STRING *  Progress,
OUT EFI_STRING *  Results 
)

This function allows a caller to extract the current configuration for one or more named elements from the target driver.

Parameters:
This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
Request A null-terminated Unicode string in <ConfigRequest> format.
Progress On return, points to a character in the Request string. Points to the string's null terminator if request was successful. Points to the most recent '&' before the first failing name/value pair (or the beginning of the string if the failure is in the first name/value pair) if the request was not successful.
Results A null-terminated Unicode string in <ConfigAltResp> format which has all values filled in for the names in the Request string. String to be allocated by the called function.
Return values:
EFI_SUCCESS The Results is filled with the requested values.
EFI_OUT_OF_RESOURCES Not enough memory to store the results.
EFI_INVALID_PARAMETER Request is illegal syntax, or unknown name.
EFI_NOT_FOUND Routing data doesn't match any storage in this driver.

EFI_STATUS EFIAPI FakeRouteConfig ( IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *  This,
IN CONST EFI_STRING  Configuration,
OUT EFI_STRING *  Progress 
)

This function processes the results of changes in configuration.

Parameters:
This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
Configuration A null-terminated Unicode string in <ConfigResp> format.
Progress A pointer to a string filled in with the offset of the most recent '&' before the first failing name/value pair (or the beginning of the string if the failure is in the first name/value pair) or the terminating NULL if all was successful.
Return values:
EFI_SUCCESS The Results is processed successfully.
EFI_INVALID_PARAMETER Configuration is NULL.
EFI_NOT_FOUND Routing data doesn't match any storage in this driver.

EFI_STATUS FindUserInfo ( IN USER_PROFILE_ENTRY User,
IN OUT EFI_USER_INFO **  Info,
IN BOOLEAN  NextInfo,
OUT UINTN *  Offset 
)

Find the specified user information record in the specified User profile.

This function searches the specified user information record from the beginning of the user profile. And if NextInfo is TRUE, return the next info in the user profile.

Parameters:
[in] User Points to the user profile entry.
[in,out] Info On entry, points to the user information record or NULL to start searching with the first user information record. On return, points to the user information record or NULL if not found.
[in] NextInfo If FALSE, find the user information record in profile specifyed by User. If TRUE, find the next user information record in profile specifyed by User.
[out] Offset A pointer to the offset of the information record in the user profile.
Return values:
EFI_INVALID_PARAMETER Info is NULL
EFI_NOT_FOUND Info was not found, or the next Info was not found.
EFI_SUCCESS Info or the next info are found in user profile.

References EFI_STATUS(), FindUserProfile(), and UINTN().

Referenced by DelUserInfo(), FindUserInfoByType(), GetUserInfo(), and UserProfileGetNextInfo().

EFI_STATUS FindUserInfoByType ( IN USER_PROFILE_ENTRY User,
IN OUT EFI_USER_INFO **  Info,
IN UINT8  InfoType 
)

Find a user infomation record by the information record type.

This function searches all user information records of User. The search starts with the user information record following Info and continues until either the information is found or there are no more user infomation record. A match occurs when a Info.InfoType field matches the user information record type.

Parameters:
[in] User Points to the user profile record to search.
[in,out] Info On entry, points to the user information record or NULL to start searching with the first user information record. On return, points to the user information record or NULL if not found.
[in] InfoType The infomation type to be searched.
Return values:
EFI_SUCCESS User information was found. Info points to the user information record.
EFI_NOT_FOUND User information was not found.
EFI_INVALID_PARAMETER User is NULL or Info is NULL.

References EFI_STATUS(), FindUserInfo(), FindUserProfile(), TRUE, and UINTN().

EFI_STATUS FindUserProfile ( IN OUT USER_PROFILE_ENTRY **  User,
IN BOOLEAN  NextUser,
OUT UINTN *  ProfileIndex 
)

Find the specified user in the user database.

This function searches the specified user from the beginning of the user database. And if NextUser is TRUE, return the next User in the user database.

Parameters:
[in,out] User On entry, points to the user profile entry to search. On return, points to the user profile entry or NULL if not found.
[in] NextUser If FALSE, find the user in user profile database specifyed by User If TRUE, find the next user in user profile database specifyed by User.
[out] ProfileIndex A pointer to the index of user profile database that matches the user specifyed by User.
Return values:
EFI_NOT_FOUND User was NULL, or User was not found, or the next user was not found.
EFI_SUCCESS User or the next user are found in user profile database

References UINTN(), USER_PROFILE_DB::UserProfile, and USER_PROFILE_DB::UserProfileNum.

Referenced by AddUserInfo(), DelUserProfile(), FindUserInfo(), FindUserInfoByType(), FindUserProfileByInfo(), SaveNvUserProfile(), and UserProfileGetNext().

EFI_STATUS FindUserProfileByInfo ( IN OUT USER_PROFILE_ENTRY **  User,
IN OUT EFI_USER_INFO **  UserInfo,
IN EFI_USER_INFO *  Info,
IN UINTN  InfoSize 
)

Find a user using a user information record.

This function searches all user profiles for the specified user information record. The search starts with the user information record handle following UserInfo and continues until either the information is found or there are no more user profiles. A match occurs when the Info.InfoType field matches the user information record type and the user information record data matches the portion of Info passed the EFI_USER_INFO header.

Parameters:
[in,out] User On entry, points to the previously returned user profile record, or NULL to start searching with the first user profile. On return, points to the user profile entry, or NULL if not found.
[in,out] UserInfo On entry, points to the previously returned user information record, or NULL to start searching with the first. On return, points to the user information record, or NULL if not found.
[in] Info Points to the buffer containing the user information to be compared to the user information record.
[in] InfoSize The size of Info, in bytes. Same as Info->InfoSize.
Return values:
EFI_SUCCESS User information was found. User points to the user profile record, and UserInfo points to the user information record.
EFI_NOT_FOUND User information was not found.
EFI_INVALID_PARAMETER User is NULL; Info is NULL; or, InfoSize is too small.

References EFI_STATUS(), FindUserInfoByType(), FindUserProfile(), TRUE, and USER_PROFILE_DB::UserProfile.

Referenced by IdentifyAutoLogonUser(), and UserProfileFind().

VOID GenerateIdentifier ( OUT UINT8 *  Identifier  ) 

Create a unique user identifier.

Parameters:
[out] Identifier This points to the identifier.

References UINTN().

Referenced by GenerateUserId().

VOID GenerateUserId ( OUT UINT8 *  UserId  ) 

Generate unique user ID.

Parameters:
[out] UserId Points to the user identifer.

References EFI_STATUS(), FindUserInfoByType(), GenerateIdentifier(), TRUE, UINTN(), USER_PROFILE_DB::UserProfile, and USER_PROFILE_DB::UserProfileNum.

Referenced by CreateUserProfile().

EFI_STATUS GetIdentifyType ( IN EFI_USER_PROFILE_HANDLE  User,
OUT UINT8 *  PolicyType 
)

Get the user's identity type.

The identify manager only supports the identity policy in which the credential provider handles are connected by the operator 'AND' or 'OR'.

Parameters:
[in] User Handle of a user profile.
[out] PolicyType Point to the identity type.
Return values:
EFI_SUCCESS Get user's identity type successfully.
Others Fail to get user's identity type.

References EFI_STATUS(), FindUserInfoByType(), and UINTN().

Referenced by IdentifyAutoLogonUser(), and UserIdentifyManagerCallback().

EFI_STATUS GetUserInfo ( IN USER_PROFILE_ENTRY User,
IN EFI_USER_INFO *  UserInfo,
OUT EFI_USER_INFO *  Info,
IN OUT UINTN *  InfoSize,
IN BOOLEAN  ChkRight 
)

Get the user info from the specified user info handle.

Parameters:
[in] User Point to the user profile.
[in] UserInfo Point to the user information record to get.
[out] Info On entry, points to a buffer of at least *InfoSize bytes. On exit, holds the user information.
[in,out] InfoSize On entry, points to the size of Info. On return, points to the size of the user information.
[in] ChkRight If TRUE, check the user info attribute. If FALSE, don't check the user info attribute.
Return values:
EFI_ACCESS_DENIED The information cannot be accessed by the current user.
EFI_INVALID_PARAMETER InfoSize is NULL or UserInfo is NULL.
EFI_BUFFER_TOO_SMALL The number of bytes specified by *InfoSize is too small to hold the returned data. The actual size required is returned in *InfoSize.
EFI_SUCCESS Information returned successfully.

References EFI_STATUS(), FindUserInfo(), and mCurrentUser.

Referenced by UserProfileGetInfo().

EFI_STATUS IdentifyAndTypeUser ( IN USER_PROFILE_ENTRY User  ) 

Identify the user whose identity policy does not contain the operator 'OR'.

Parameters:
[in] User Points to the user profile.
Return values:
EFI_SUCCESS The specified user is identified successfully.
Others Fail to identify the user.

References BOOLEAN(), EFI_STATUS(), FindUserInfoByType(), IdentifyByProviderId(), TRUE, and UINTN().

Referenced by UserIdentifyManagerCallback().

EFI_STATUS IdentifyAutoLogonUser ( IN UINTN  ProviderIndex,
OUT USER_PROFILE_ENTRY **  User 
)

Identify the user whose identification policy supports auto logon.

Parameters:
[in] ProviderIndex The provider index in the provider list.
[out] User Points to user user profile if a user is identified successfully.
Return values:
EFI_SUCCESS Identify a user with the specified provider successfully.
Others Fail to identify a user.

References EFI_STATUS(), FindUserProfileByInfo(), GetIdentifyType(), and CREDENTIAL_PROVIDER_INFO::Provider.

Referenced by IdentifyUser().

EFI_STATUS IdentifyByProviderId ( IN EFI_USER_PROFILE_HANDLE  User,
IN EFI_GUID *  Provider 
)

Identify the User by the specfied provider.

Parameters:
[in] User Handle of a user profile.
[in] Provider Points to the identifier of credential provider.
Return values:
EFI_INVALID_PARAMETER Provider is NULL.
EFI_NOT_FOUND Fail to identify the specified user.
EFI_SUCCESS User is identified successfully.

References CREDENTIAL_PROVIDER_INFO::Count, EFI_STATUS(), USER_MANAGER_CALLBACK_INFO::FormBrowser2, CREDENTIAL_PROVIDER_INFO::Provider, and UINTN().

Referenced by IdentifyAndTypeUser(), and UserIdentifyManagerCallback().

EFI_STATUS IdentifyOrTypeUser ( IN USER_PROFILE_ENTRY User  ) 

Identify the user whose identity policy does not contain the operator 'AND'.

Parameters:
[in] User Points to the user profile.
Return values:
EFI_SUCCESS The specified user is identified successfully.
Others Fail to identify the user.

References AddProviderSelection(), EFI_STATUS(), FindUserInfoByType(), FORMID_PROVIDER_FORM, gUserIdentifyManagerGuid, USER_MANAGER_CALLBACK_INFO::HiiHandle, LABEL_END, LABEL_PROVIDER_NAME, and UINTN().

Referenced by UserIdentifyManagerCallback().

EFI_STATUS IdentifyUser ( OUT USER_PROFILE_ENTRY **  User  ) 

EFI_STATUS InitFormBrowser ( VOID   ) 

EFI_STATUS InitProviderInfo ( VOID   ) 

This function collects all the credential providers and saves to mProviderDb.

Return values:
EFI_SUCCESS Collect credential providers successfully.
Others Fail to collect credential providers.

References CREDENTIAL_PROVIDER_INFO::Count, EFI_STATUS(), CREDENTIAL_PROVIDER_INFO::Provider, and UINTN().

Referenced by IdentifyUser(), and UserProfileManagerCallback().

EFI_STATUS InitUserProfileDb ( VOID   ) 

This function construct user profile database from user data saved in the Flash. If no user is found in Flash, add one default user "administrator" in the user profile database.

Return values:
EFI_SUCCESS Init user profile database successfully.
Others Fail to init user profile database.

References AddDefaultUserProfile(), AddUserProfile(), DEFAULT_PROFILE_SIZE, EFI_STATUS(), ExpandUsermUserProfileDb(), gUserIdentifyManagerGuid, SaveNvUserProfile(), TRUE, UINTN(), USER_PROFILE_DB::UserProfile, and USER_PROFILE_DB::UserProfileNum.

Referenced by IdentifyUser().

VOID EFIAPI InternalEmptyFuntion ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

An empty function to pass error checking of CreateEventEx ().

Parameters:
Event Event whose notification function is being invoked.
Context Pointer to the notification function's context, which is implementation-dependent.

Referenced by SignalEventUserProfileChanged().

BOOLEAN IsConsoleReady ( VOID   ) 

Check whether the console is ready.

Return values:
TRUE The console is ready.
FALSE The console is not ready.

References CheckConsole(), and TRUE.

Referenced by IdentifyUser().

EFI_STATUS ModifyUserInfo ( IN USER_PROFILE_ENTRY User,
IN OUT EFI_USER_INFO **  UserInfo,
IN CONST EFI_USER_INFO *  Info,
IN UINTN  InfoSize 
)

Add or update user information.

Parameters:
[in] User Point to the user profile.
[in,out] UserInfo On entry, points to the user information to modify, or NULL to add a new UserInfo. On return, points to the modified user information.
[in] Info Points to the new user information.
[in] InfoSize The size of Info,in bytes.
Return values:
EFI_INVALID_PARAMETER UserInfo is NULL or Info is NULL.
EFI_ACCESS_DENIED The record is exclusive.
EFI_SUCCESS User information was successfully changed/added.

References AddUserInfo(), CheckUserInfo(), DelUserInfo(), EFI_STATUS(), FindUserInfoByType(), TRUE, and UINTN().

Referenced by AddDefaultUserProfile(), UpdateUserInfo(), UserProfileManagerCallback(), and UserProfileSetInfo().

EFI_STATUS PublishUserTable ( VOID   ) 

Publish current user information into EFI System Configuration Table.

By UEFI spec, the User Identity Manager will publish the current user profile into the EFI System Configuration Table. Currently, only the user identifier and user name are published.

Return values:
EFI_SUCCESS Current user information is published successfully.
Others Fail to publish current user information

References EFI_STATUS(), FindUserInfoByType(), and mCurrentUser.

Referenced by UserProfileIdentify().

EFI_STATUS SaveNvUserProfile ( IN USER_PROFILE_ENTRY User,
IN BOOLEAN  Delete 
)

Save the user profile to non-volatile memory, or delete it from non-volatile memory.

Parameters:
[in] User Point to the user profile
[in] Delete If TRUE, delete the found user profile. If FALSE, save the user profile.
Return values:
EFI_SUCCESS Save or delete user profile successfully.
Others Fail to change the profile.

References EFI_STATUS(), FindUserProfile(), and gUserIdentifyManagerGuid.

Referenced by AddUserInfo(), DelUserInfo(), DelUserProfile(), and InitUserProfileDb().

VOID SignalEventUserProfileChanged ( VOID   ) 

Create, Signal, and Close the User Profile Changed event.

References EFI_STATUS(), and InternalEmptyFuntion().

Referenced by UserProfileIdentify().

EFI_STATUS UpdateUserInfo ( IN USER_PROFILE_ENTRY User  ) 

Update user information when user is logon on successfully.

Parameters:
[in] User Points to user profile.
Return values:
EFI_SUCCESS Update user information successfully.
Others Fail to update user information.

References EFI_STATUS(), FindUserInfoByType(), ModifyUserInfo(), and UINTN().

Referenced by IdentifyUser().

EFI_STATUS EFIAPI UserIdentifyManagerCallback ( 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 
)

This function processes the results of changes in configuration.

Parameters:
This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
Action Specifies the type of action taken by the browser.
QuestionId A unique value which is sent to the original exporting driver so that it can identify the type of data to expect.
Type The type of value for the question.
Value A pointer to the data being sent to the original exporting driver.
ActionRequest On return, points to the action requested by the callback function.
Return values:
EFI_SUCCESS The callback successfully handled the action.
Others Fail to handle the action.

References AddUserSelection(), EFI_STATUS(), FORM_OPEN_QUESTION_ID, FORMID_INVALID_FORM, FORMID_USER_FORM, GetIdentifyType(), gUserIdentifyManagerGuid, USER_MANAGER_CALLBACK_INFO::HiiHandle, IdentifyAndTypeUser(), IdentifyByProviderId(), IdentifyOrTypeUser(), LABEL_END, LABEL_PROVIDER_NAME, LABEL_USER_NAME, mCurrentUser, mIdentified, CREDENTIAL_PROVIDER_INFO::Provider, TRUE, USER_PROFILE_DB::UserProfile, and USER_PROFILE_DB::UserProfileNum.

Referenced by InitFormBrowser().

EFI_STATUS EFIAPI UserIdentifyManagerInit ( IN EFI_HANDLE  ImageHandle,
IN EFI_SYSTEM_TABLE *  SystemTable 
)

Main entry for this driver.

Parameters:
[in] ImageHandle Image handle this driver.
[in] SystemTable Pointer to SystemTable.
Return values:
EFI_SUCESS This function always complete successfully.

References USER_MANAGER_CALLBACK_INFO::DriverHandle, EFI_STATUS(), InitFormBrowser(), and LoadDeferredImageInit().

EFI_STATUS EFIAPI UserProfileCreate ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
OUT EFI_USER_PROFILE_HANDLE *  User 
)

Create a new user profile.

This function creates a new user profile with only a new user identifier attached and returns its handle. The user profile is non-volatile, but the handle User can change across reboots.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[out] User On return, points to the new user profile handle. The user profile handle is unique only during this boot.
Return values:
EFI_SUCCESS User profile was successfully created.
EFI_ACCESS_DENIED Current user does not have sufficient permissions to create a user profile.
EFI_UNSUPPORTED Creation of new user profiles is not supported.
EFI_INVALID_PARAMETER The User parameter is NULL.

References CheckCurrentUserAccessRight(), CreateUserProfile(), and EFI_STATUS().

EFI_STATUS EFIAPI UserProfileCurrent ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
OUT EFI_USER_PROFILE_HANDLE *  CurrentUser 
)

Return the current user profile handle.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[out] CurrentUser On return, points to the current user profile handle.
Return values:
EFI_SUCCESS Current user profile handle returned successfully.
EFI_INVALID_PARAMETER The CurrentUser parameter is NULL.

References mCurrentUser.

EFI_STATUS EFIAPI UserProfileDelete ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
IN EFI_USER_PROFILE_HANDLE  User 
)

Delete an existing user profile.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[in] User User profile handle.
Return values:
EFI_SUCCESS User profile was successfully deleted.
EFI_ACCESS_DENIED Current user does not have sufficient permissions to delete a user profile or there is only one user profile.
EFI_UNSUPPORTED Deletion of new user profiles is not supported.
EFI_INVALID_PARAMETER User does not refer to a valid user profile.

References CheckCurrentUserAccessRight(), DelUserProfile(), and EFI_STATUS().

EFI_STATUS EFIAPI UserProfileDeleteInfo ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
IN EFI_USER_PROFILE_HANDLE  User,
IN EFI_USER_INFO_HANDLE  UserInfo 
)

Delete user information.

Delete the user information attached to the user profile specified by the UserInfo.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[in] User Handle of the user whose information will be deleted.
[in] UserInfo Handle of the user information to remove.
Return values:
EFI_SUCCESS User information deleted successfully.
EFI_NOT_FOUND User information record UserInfo does not exist in the user profile.
EFI_ACCESS_DENIED The current user does not have permission to delete this user information.

References CheckCurrentUserAccessRight(), DelUserInfo(), EFI_STATUS(), mCurrentUser, and TRUE.

EFI_STATUS EFIAPI UserProfileFind ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
IN OUT EFI_USER_PROFILE_HANDLE *  User,
IN OUT EFI_USER_INFO_HANDLE *  UserInfo,
IN CONST EFI_USER_INFO *  Info,
IN UINTN  InfoSize 
)

Find a user using a user information record.

This function searches all user profiles for the specified user information record. The search starts with the user information record handle following UserInfo and continues until either the information is found or there are no more user profiles. A match occurs when the Info.InfoType field matches the user information record type and the user information record data matches the portion of Info.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[in,out] User On entry, points to the previously returned user profile handle, or NULL to start searching with the first user profile. On return, points to the user profile handle, or NULL if not found.
[in,out] UserInfo On entry, points to the previously returned user information handle, or NULL to start searching with the first. On return, points to the user information handle of the user information record, or NULL if not found. Can be NULL, in which case only one user information record per user can be returned.
[in] Info Points to the buffer containing the user information to be compared to the user information record. If the user information record data is empty, then only the user information record type is compared. If InfoSize is 0, then the user information record must be empty.
[in] InfoSize The size of Info, in bytes.
Return values:
EFI_SUCCESS User information was found. User points to the user profile handle, and UserInfo points to the user information handle.
EFI_NOT_FOUND User information was not found. User points to NULL, and UserInfo points to NULL.
EFI_INVALID_PARAMETER User is NULL. Or Info is NULL.

References EFI_STATUS(), FindUserProfileByInfo(), and UINTN().

EFI_STATUS EFIAPI UserProfileGetInfo ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
IN EFI_USER_PROFILE_HANDLE  User,
IN EFI_USER_INFO_HANDLE  UserInfo,
OUT EFI_USER_INFO *  Info,
IN OUT UINTN *  InfoSize 
)

Return information attached to the user.

This function returns user information. The format of the information is described in User Information. The function may return EFI_ACCESS_DENIED if the information is marked private and the handle specified by User is not the current user profile. The function may return EFI_ACCESS_DENIED if the information is marked protected and the information is associated with a credential provider for which the user has not been authenticated.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[in] User Handle of the user whose profile will be retrieved.
[in] UserInfo Handle of the user information data record.
[out] Info On entry, points to a buffer of at least *InfoSize bytes. On exit, holds the user information. If the buffer is too small to hold the information, then EFI_BUFFER_TOO_SMALL is returned and InfoSize is updated to contain the number of bytes actually required.
[in,out] InfoSize On entry, points to the size of Info. On return, points to the size of the user information.
Return values:
EFI_SUCCESS Information returned successfully.
EFI_ACCESS_DENIED The information about the specified user cannot be accessed by the current user.
EFI_BUFFER_TOO_SMALL The number of bytes specified by *InfoSize is too small to hold the returned data. The actual size required is returned in *InfoSize.
EFI_NOT_FOUND User does not refer to a valid user profile or UserInfo does not refer to a valid user info handle.
EFI_INVALID_PARAMETER Info is NULL or InfoSize is NULL.

References EFI_STATUS(), GetUserInfo(), and TRUE.

EFI_STATUS EFIAPI UserProfileGetNext ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
IN OUT EFI_USER_PROFILE_HANDLE *  User 
)

Enumerate all of the enrolled users on the platform.

This function returns the next enrolled user profile. To retrieve the first user profile handle, point User at a NULL. Each subsequent call will retrieve another user profile handle until there are no more, at which point User will point to NULL.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[in,out] User On entry, points to the previous user profile handle or NULL to start enumeration. On exit, points to the next user profile handle or NULL if there are no more user profiles.
Return values:
EFI_SUCCESS Next enrolled user profile successfully returned.
EFI_ACCESS_DENIED Next enrolled user profile was not successfully returned.
EFI_INVALID_PARAMETER The User parameter is NULL.

References EFI_STATUS(), FindUserProfile(), and TRUE.

EFI_STATUS EFIAPI UserProfileGetNextInfo ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
IN EFI_USER_PROFILE_HANDLE  User,
IN OUT EFI_USER_INFO_HANDLE *  UserInfo 
)

Enumerate user information of all the enrolled users on the platform.

This function returns the next user information record. To retrieve the first user information record handle, point UserInfo at a NULL. Each subsequent call will retrieve another user information record handle until there are no more, at which point UserInfo will point to NULL.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[in] User Handle of the user whose information will be deleted.
[in,out] UserInfo Handle of the user information to remove.
Return values:
EFI_SUCCESS User information returned.
EFI_NOT_FOUND No more user information found.
EFI_INVALID_PARAMETER UserInfo is NULL.

References FindUserInfo(), and TRUE.

EFI_STATUS EFIAPI UserProfileIdentify ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
OUT EFI_USER_PROFILE_HANDLE *  User 
)

Identify a user.

Identify the user and, if authenticated, returns the user handle and changes the current user profile. All user information marked as private in a previously selected profile is no longer available for inspection. Whenever the current user profile is changed then the an event with the GUID EFI_EVENT_GROUP_USER_PROFILE_CHANGED is signaled.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[out] User On return, points to the user profile handle for the current user profile.
Return values:
EFI_SUCCESS User was successfully identified.
EFI_ACCESS_DENIED User was not successfully identified.
EFI_INVALID_PARAMETER The User parameter is NULL.

References EFI_STATUS(), IdentifyUser(), mCurrentUser, PublishUserTable(), and SignalEventUserProfileChanged().

EFI_STATUS EFIAPI UserProfileNotify ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
IN EFI_HANDLE  Changed 
)

Called by credential provider to notify of information change.

This function allows the credential provider to notify the User Identity Manager when user status has changed. If the User Identity Manager doesn't support asynchronous changes in credentials, then this function should return EFI_UNSUPPORTED. If current user does not exist, and the credential provider can identify a user, then make the user to be current user and signal the EFI_EVENT_GROUP_USER_PROFILE_CHANGED event. If current user already exists, and the credential provider can identify another user, then switch current user to the newly identified user, and signal the EFI_EVENT_GROUP_USER_PROFILE_CHANGED event. If current user was identified by this credential provider and now the credential provider cannot identify current user, then logout current user and signal the EFI_EVENT_GROUP_USER_PROFILE_CHANGED event.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[in] Changed Handle on which is installed an instance of the EFI_USER_CREDENTIAL2_PROTOCOL where the user has changed.
Return values:
EFI_SUCCESS The User Identity Manager has handled the notification.
EFI_NOT_READY The function was called while the specified credential provider was not selected.
EFI_UNSUPPORTED The User Identity Manager doesn't support asynchronous notifications.

EFI_STATUS EFIAPI UserProfileSetInfo ( IN CONST EFI_USER_MANAGER_PROTOCOL *  This,
IN EFI_USER_PROFILE_HANDLE  User,
IN OUT EFI_USER_INFO_HANDLE *  UserInfo,
IN CONST EFI_USER_INFO *  Info,
IN UINTN  InfoSize 
)

Add or update user information.

This function changes user information. If NULL is pointed to by UserInfo, then a new user information record is created and its handle is returned in UserInfo. Otherwise, the existing one is replaced. If EFI_USER_INFO_IDENITTY_POLICY_RECORD is changed, it is the caller's responsibility to keep it to be synced with the information on credential providers. If EFI_USER_INFO_EXCLUSIVE is specified in Info and a user information record of the same type already exists in the user profile, then EFI_ACCESS_DENIED will be returned and UserInfo will point to the handle of the existing record.

Parameters:
[in] This Points to this instance of the EFI_USER_MANAGER_PROTOCOL.
[in] User Handle of the user whose profile will be retrieved.
[in,out] UserInfo Handle of the user information data record.
[in] Info On entry, points to a buffer of at least *InfoSize bytes. On exit, holds the user information. If the buffer is too small to hold the information, then EFI_BUFFER_TOO_SMALL is returned and InfoSize is updated to contain the number of bytes actually required.
[in] InfoSize On entry, points to the size of Info. On return, points to the size of the user information.
Return values:
EFI_SUCCESS Information returned successfully.
EFI_ACCESS_DENIED The record is exclusive.
EFI_SECURITY_VIOLATION The current user does not have permission to change the specified user profile or user information record.
EFI_NOT_FOUND User does not refer to a valid user profile or UserInfo does not refer to a valid user info handle.
EFI_INVALID_PARAMETER UserInfo is NULL or Info is NULL.

References CheckCurrentUserAccessRight(), EFI_STATUS(), mCurrentUser, and ModifyUserInfo().


Variable Documentation

EFI_USER_MANAGER_PROTOCOL gUserIdentifyManager

EFI_USER_PROFILE_HANDLE mCurrentUser = NULL

Initial value:

 {
  {
    {
      HARDWARE_DEVICE_PATH,
      HW_VENDOR_DP,
      {
        (UINT8) (sizeof (VENDOR_DEVICE_PATH)),
        (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)
      }
    },
    USER_IDENTIFY_MANAGER_GUID
  },
  {
    END_DEVICE_PATH_TYPE,
    END_ENTIRE_DEVICE_PATH_SUBTYPE,
    {
      (UINT8) (END_DEVICE_PATH_LENGTH),
      (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)
    }
  }
}

BOOLEAN mIdentified = FALSE

CHAR16 mUserName[] = L"Administrator"

Referenced by AddDefaultUserProfile().


Generated on Thu Sep 24 23:44:24 2015 for SecurityPkg[ALL] by  doxygen 1.5.7.1