-typedef VOID *EFI_USER_PROFILE_HANDLE;\r
-typedef VOID *EFI_USER_INFO_HANDLE;\r
-\r
-///\r
-/// The attributes of the user profile information.\r
-///\r
-typedef UINT16 EFI_USER_INFO_ATTRIBS;\r
-#define EFI_USER_INFO_STORAGE 0x000F\r
-#define EFI_USER_INFO_STORAGE_VOLATILE 0x0000\r
-#define EFI_USER_INFO_STORAGE_CREDENTIAL_NV 0x0001\r
-#define EFI_USER_INFO_STORAGE_PLATFORM_NV 0x0002\r
-\r
-#define EFI_USER_INFO_ACCESS 0x0070\r
-#define EFI_USER_INFO_PUBLIC 0x0010\r
-#define EFI_USER_INFO_PRIVATE 0x0020\r
-#define EFI_USER_INFO_PROTECTED 0x0030\r
-#define EFI_USER_INFO_EXCLUSIVE 0x0080\r
-\r
-///\r
-/// User information structure\r
-///\r
-typedef struct {\r
- ///\r
- /// The user credential identifier associated with this user information or else Nil if the \r
- /// information is not associated with any specific credential.\r
- ///\r
- EFI_GUID Credential;\r
- ///\r
- /// The type of user information.\r
- ///\r
- UINT8 InfoType;\r
- ///\r
- /// Must be set to 0.\r
- ///\r
- UINT8 Reserved1;\r
- ///\r
- /// The attributes of the user profile information.\r
- ///\r
- EFI_USER_INFO_ATTRIBS InfoAttribs;\r
- ///\r
- /// The size of the user information, in bytes, including this header.\r
- ///\r
- UINT32 InfoSize;\r
-} EFI_USER_INFO;\r
-\r
-///\r
-/// User credential class GUIDs\r
-///\r
-#define EFI_USER_CREDENTIAL_CLASS_UNKNOWN \\r
- { 0x5cf32e68, 0x7660, 0x449b, { 0x80, 0xe6, 0x7e, 0xa3, 0x6e, 0x3, 0xf6, 0xa8 } }\r
-#define EFI_USER_CREDENTIAL_CLASS_PASSWORD \\r
- { 0xf8e5058c, 0xccb6, 0x4714, { 0xb2, 0x20, 0x3f, 0x7e, 0x3a, 0x64, 0xb, 0xd1 } }\r
-#define EFI_USER_CREDENTIAL_CLASS_SMART_CARD \\r
- { 0x5f03ba33, 0x8c6b, 0x4c24, { 0xaa, 0x2e, 0x14, 0xa2, 0x65, 0x7b, 0xd4, 0x54 } }\r
-#define EFI_USER_CREDENTIAL_CLASS_FINGERPRINT \\r
- { 0x32cba21f, 0xf308, 0x4cbc, { 0x9a, 0xb5, 0xf5, 0xa3, 0x69, 0x9f, 0x4, 0x4a } }\r
-#define EFI_USER_CREDENTIAL_CLASS_HANDPRINT \\r
- { 0x5917ef16, 0xf723, 0x4bb9, { 0xa6, 0x4b, 0xd8, 0xc5, 0x32, 0xf4, 0xd8, 0xb5 } }\r
-#define EFI_USER_CREDENTIAL_CLASS_SECURE_CARD \\r
- { 0x8a6b4a83, 0x42fe, 0x45d2, { 0xa2, 0xef, 0x46, 0xf0, 0x6c, 0x7d, 0x98, 0x52 } }\r
-\r
-typedef UINT64 EFI_CREDENTIAL_CAPABILITIES;\r
-#define EFI_CREDENTIAL_CAPABILITIES_ENROLL 0x0000000000000001\r
-\r
-///\r
-/// Credential logon flags \r
-///\r
-typedef UINT32 EFI_CREDENTIAL_LOGON_FLAGS;\r
-#define EFI_CREDENTIAL_LOGON_FLAG_AUTO 0x00000001\r
-#define EFI_CREDENTIAL_LOGON_FLAG_DEFAULT 0x00000002\r
-\r
-///\r
-/// User information record types\r
-///\r
-\r
-///\r
-/// No information.\r
-///\r
-#define EFI_USER_INFO_EMPTY_RECORD 0x00\r
-///\r
-/// Provide the user's name for the enrolled user.\r
-///\r
-#define EFI_USER_INFO_NAME_RECORD 0x01\r
-typedef CHAR16 *EFI_USER_INFO_NAME;\r
-///\r
-/// Provides the date and time when the user profile was created.\r
-///\r
-#define EFI_USER_INFO_CREATE_DATE_RECORD 0x02\r
-typedef EFI_TIME EFI_USER_INFO_CREATE_DATE;\r
-///\r
-/// Provides the date and time when the user profile was selected.\r
-///\r
-#define EFI_USER_INFO_USAGE_DATE_RECORD 0x03\r
-typedef EFI_TIME EFI_USER_INFO_USAGE_DATE;\r
-///\r
-/// Provides the number of times that the user profile has been selected.\r
-///\r
-#define EFI_USER_INFO_USAGE_COUNT_RECORD 0x04\r
-typedef UINT64 EFI_USER_INFO_USAGE_COUNT;\r
-///\r
-/// Provides a unique non-volatile user identifier for each enrolled user.\r
-///\r
-#define EFI_USER_INFO_IDENTIFIER_RECORD 0x05\r
-typedef UINT8 EFI_USER_INFO_IDENTIFIER[16];\r
-///\r
-/// Specifies the type of a particular credential associated with the user profile.\r
-///\r
-#define EFI_USER_INFO_CREDENTIAL_TYPE_RECORD 0x06\r
-typedef EFI_GUID EFI_USER_INFO_CREDENTIAL_TYPE;\r
-///\r
-/// Specifies the user-readable name of a particular credential type.\r
-///\r
-#define EFI_USER_INFO_CREDENTIAL_TYPE_NAME_RECORD 0x07\r
-typedef CHAR16 *EFI_USER_INFO_CREDENTIAL_TYPE_NAME;\r
-///\r
-/// Specifies the credential provider.\r
-///\r
-#define EFI_USER_INFO_CREDENTIAL_PROVIDER_RECORD 0x08\r
-typedef EFI_GUID EFI_USER_INFO_CREDENTIAL_PROVIDER;\r
-///\r
-/// Specifies the user-readable name of a particular credential's provider.\r
-///\r
-#define EFI_USER_INFO_CREDENTIAL_PROVIDER_NAME_RECORD 0x09\r
-typedef CHAR16 *EFI_USER_INFO_CREDENTIAL_PROVIDER_NAME;\r
-///\r
-/// Provides PKCS#11 credential information from a smart card.\r
-///\r
-#define EFI_USER_INFO_PKCS11_RECORD 0x0A\r
-///\r
-/// Provides standard biometric information in the format specified by the ISO 19785 (Common \r
-/// Biometric Exchange Formats Framework) specification.\r
-///\r
-#define EFI_USER_INFO_CBEFF_RECORD 0x0B\r
-typedef VOID *EFI_USER_INFO_CBEFF;\r
-///\r
-/// Indicates how close of a match the fingerprint must be in order to be considered a match.\r
-///\r
-#define EFI_USER_INFO_FAR_RECORD 0x0C\r
-typedef UINT8 EFI_USER_INFO_FAR;\r
-///\r
-/// Indicates how many attempts the user has to with a particular credential before the system prevents \r
-/// further attempts.\r
-///\r
-#define EFI_USER_INFO_RETRY_RECORD 0x0D\r
-typedef UINT8 EFI_USER_INFO_RETRY;\r
-///\r
-/// Provides the user's pre-OS access rights.\r
-///\r
-#define EFI_USER_INFO_ACCESS_POLICY_RECORD 0x0E\r
-\r
-typedef struct {\r
- UINT32 Type; ///< Specifies the type of user access control.\r
- UINT32 Size; ///< Specifies the size of the user access control record, in bytes, including this header.\r
-} EFI_USER_INFO_ACCESS_CONTROL;\r
-\r
-typedef EFI_USER_INFO_ACCESS_CONTROL EFI_USER_INFO_ACCESS_POLICY;\r
-\r
-///\r
-/// User Information access types\r
-///\r
-\r
-///\r
-/// Forbids the user from booting or loading executables from the specified device path or any child \r
-/// device paths.\r
-///\r
-#define EFI_USER_INFO_ACCESS_FORBID_LOAD 0x00000001\r
-///\r
-/// Permits the user from booting or loading executables from the specified device path or any child \r
-/// device paths.\r
-/// Note: in-consistency between code and the UEFI 2.3 specification here.\r
-/// The definition EFI_USER_INFO_ACCESS_PERMIT_BOOT in the specification should be typo and wait for\r
-/// spec update.\r
-///\r
-#define EFI_USER_INFO_ACCESS_PERMIT_LOAD 0x00000002\r
-///\r
-/// Presence of this record indicates that a user can update enrollment information.\r
-///\r
-#define EFI_USER_INFO_ACCESS_ENROLL_SELF 0x00000003\r
-///\r
-/// Presence of this record indicates that a user can enroll new users.\r
-///\r
-#define EFI_USER_INFO_ACCESS_ENROLL_OTHERS 0x00000004\r
-///\r
-/// Presence of this record indicates that a user can update the user information of any user.\r
-///\r
-#define EFI_USER_INFO_ACCESS_MANAGE 0x00000005\r
-///\r
-/// Describes permissions usable when configuring the platform.\r
-///\r
-#define EFI_USER_INFO_ACCESS_SETUP 0x00000006\r
-///\r
-/// Standard GUIDs for access to configure the platform.\r
-///\r
-#define EFI_USER_INFO_ACCESS_SETUP_ADMIN_GUID \\r
- { 0x85b75607, 0xf7ce, 0x471e, { 0xb7, 0xe4, 0x2a, 0xea, 0x5f, 0x72, 0x32, 0xee } }\r
-#define EFI_USER_INFO_ACCESS_SETUP_NORMAL_GUID \\r
- { 0x1db29ae0, 0x9dcb, 0x43bc, { 0x8d, 0x87, 0x5d, 0xa1, 0x49, 0x64, 0xdd, 0xe2 } }\r
-#define EFI_USER_INFO_ACCESS_SETUP_RESTRICTED_GUID \\r
- { 0xbdb38125, 0x4d63, 0x49f4, { 0x82, 0x12, 0x61, 0xcf, 0x5a, 0x19, 0xa, 0xf8 } }\r
-\r
-///\r
-/// Forbids UEFI drivers from being started from the specified device path(s) or any child device paths.\r
-///\r
-#define EFI_USER_INFO_ACCESS_FORBID_CONNECT 0x00000007\r
-///\r
-/// Permits UEFI drivers to be started on the specified device path(s) or any child device paths.\r
-///\r
-#define EFI_USER_INFO_ACCESS_PERMIT_CONNECT 0x00000008\r
-///\r
-/// Modifies the boot order.\r
-///\r
-#define EFI_USER_INFO_ACCESS_BOOT_ORDER 0x00000009\r
-typedef UINT32 EFI_USER_INFO_ACCESS_BOOT_ORDER_HDR;\r
-\r
-#define EFI_USER_INFO_ACCESS_BOOT_ORDER_MASK 0x0000000F\r
-///\r
-/// Insert new boot options at the beginning of the boot order.\r
-///\r
-#define EFI_USER_INFO_ACCESS_BOOT_ORDER_INSERT 0x00000000\r
-///\r
-/// Append new boot options to the end of the boot order.\r
-///\r
-#define EFI_USER_INFO_ACCESS_BOOT_ORDER_APPEND 0x00000001\r
-///\r
-/// Replace the entire boot order.\r
-///\r
-#define EFI_USER_INFO_ACCESS_BOOT_ORDER_REPLACE 0x00000002\r
-///\r
-/// The Boot Manager will not attempt find a default boot device \r
-/// when the default boot order is does not lead to a bootable device.\r
-///\r
-#define EFI_USER_INFO_ACCESS_BOOT_ORDER_NODEFAULT 0x00000010\r
-\r
-///\r
-/// Provides the expression which determines which credentials are required to assert user identity.\r
-///\r
-#define EFI_USER_INFO_IDENTITY_POLICY_RECORD 0x0F\r
-\r
-typedef struct {\r
- UINT32 Type; ///< Specifies either an operator or a data item. \r
- UINT32 Length; ///< The length of this block, in bytes, including this header.\r
-} EFI_USER_INFO_IDENTITY_POLICY;\r
-\r
-///\r
-/// User identity policy expression operators.\r
-///\r
-#define EFI_USER_INFO_IDENTITY_FALSE 0x00\r
-#define EFI_USER_INFO_IDENTITY_TRUE 0x01\r
-#define EFI_USER_INFO_IDENTITY_CREDENTIAL_TYPE 0x02\r
-#define EFI_USER_INFO_IDENTITY_CREDENTIAL_PROVIDER 0x03\r
-#define EFI_USER_INFO_IDENTITY_NOT 0x10\r
-#define EFI_USER_INFO_IDENTITY_AND 0x11\r
-#define EFI_USER_INFO_IDENTITY_OR 0x12\r
-\r
-///\r
-/// Provides placeholder for additional user profile information identified by a GUID.\r
-///\r
-#define EFI_USER_INFO_GUID_RECORD 0xFF\r
-typedef EFI_GUID EFI_USER_INFO_GUID;\r
-\r
-///\r
-/// User information table\r
-/// A collection of EFI_USER_INFO records, prefixed with this header.\r
-///\r
-typedef struct {\r
- UINT64 Size; ///< Total size of the user information table, in bytes.\r
-} EFI_USER_INFO_TABLE;\r
-\r