+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES\r
+\r
+/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
+ Returns a pointer to an allocated buffer that contains the contents of a \r
+ variable retrieved through the UEFI Runtime Service GetVariable(). The \r
+ returned buffer is allocated using AllocatePool(). The caller is responsible\r
+ for freeing this buffer with FreePool().\r
+\r
+ If Name is NULL, then ASSERT().\r
+ If Guid is NULL, then ASSERT().\r
+\r
+ @param[in] Name The pointer to a Null-terminated Unicode string.\r
+ @param[in] Guid The pointer to an EFI_GUID structure.\r
+\r
+ @retval NULL The variable could not be retrieved.\r
+ @retval NULL There are not enough resources available for the variable contents.\r
+ @retval Other A pointer to allocated buffer containing the variable contents.\r
+\r
+**/\r
+VOID *\r
+EFIAPI\r
+GetVariable (\r
+ IN CONST CHAR16 *Name,\r
+ IN CONST EFI_GUID *Guid\r
+ );\r
+\r
+/**\r
+ [ATTENTION] This function will be deprecated for security reason.\r
+\r
+ Returns a pointer to an allocated buffer that contains the contents of a \r
+ variable retrieved through the UEFI Runtime Service GetVariable(). This \r
+ function always uses the EFI_GLOBAL_VARIABLE GUID to retrieve variables.\r
+ The returned buffer is allocated using AllocatePool(). The caller is \r
+ responsible for freeing this buffer with FreePool().\r
+\r
+ If Name is NULL, then ASSERT().\r
+\r
+ @param[in] Name The pointer to a Null-terminated Unicode string.\r
+\r
+ @retval NULL The variable could not be retrieved.\r
+ @retval NULL There are not enough resources available for the variable contents.\r
+ @retval Other A pointer to allocated buffer containing the variable contents.\r
+\r
+**/\r
+VOID *\r
+EFIAPI\r
+GetEfiGlobalVariable (\r
+ IN CONST CHAR16 *Name\r
+ );\r
+#endif\r
+\r
+\r
+/**\r
+ Returns the status whether get the variable success. The function retrieves \r
+ variable through the UEFI Runtime Service GetVariable(). The \r
+ returned buffer is allocated using AllocatePool(). The caller is responsible\r
+ for freeing this buffer with FreePool().\r
+\r
+ If Name is NULL, then ASSERT().\r
+ If Guid is NULL, then ASSERT().\r
+ If Value is NULL, then ASSERT().\r
+\r
+ @param[in] Name The pointer to a Null-terminated Unicode string.\r
+ @param[in] Guid The pointer to an EFI_GUID structure\r
+ @param[out] Value The buffer point saved the variable info.\r
+ @param[out] Size The buffer size of the variable.\r
+\r
+ @return EFI_OUT_OF_RESOURCES Allocate buffer failed.\r
+ @return EFI_SUCCESS Find the specified variable.\r
+ @return Others Errors Return errors from call to gRT->GetVariable.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetVariable2 (\r
+ IN CONST CHAR16 *Name,\r
+ IN CONST EFI_GUID *Guid,\r
+ OUT VOID **Value,\r
+ OUT UINTN *Size OPTIONAL\r
+ );\r
+\r
+/**\r
+ Returns a pointer to an allocated buffer that contains the contents of a \r
+ variable retrieved through the UEFI Runtime Service GetVariable(). This \r
+ function always uses the EFI_GLOBAL_VARIABLE GUID to retrieve variables.\r
+ The returned buffer is allocated using AllocatePool(). The caller is \r
+ responsible for freeing this buffer with FreePool().\r
+\r
+ If Name is NULL, then ASSERT().\r
+ If Value is NULL, then ASSERT().\r
+\r
+ @param[in] Name The pointer to a Null-terminated Unicode string.\r
+ @param[out] Value The buffer point saved the variable info.\r
+ @param[out] Size The buffer size of the variable.\r
+\r
+ @return EFI_OUT_OF_RESOURCES Allocate buffer failed.\r
+ @return EFI_SUCCESS Find the specified variable.\r
+ @return Others Errors Return errors from call to gRT->GetVariable.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetEfiGlobalVariable2 (\r
+ IN CONST CHAR16 *Name,\r
+ OUT VOID **Value,\r
+ OUT UINTN *Size OPTIONAL\r
+ );\r
+\r
+/**\r
+ Returns a pointer to an allocated buffer that contains the best matching language \r
+ from a set of supported languages. \r
+ \r
+ This function supports both ISO 639-2 and RFC 4646 language codes, but language \r
+ code types may not be mixed in a single call to this function. The language \r
+ code returned is allocated using AllocatePool(). The caller is responsible for \r
+ freeing the allocated buffer using FreePool(). This function supports a variable\r
+ argument list that allows the caller to pass in a prioritized list of language \r
+ codes to test against all the language codes in SupportedLanguages. \r
+\r
+ If SupportedLanguages is NULL, then ASSERT().\r
+\r
+ @param[in] SupportedLanguages A pointer to a Null-terminated ASCII string that\r
+ contains a set of language codes in the format \r
+ specified by Iso639Language.\r
+ @param[in] Iso639Language If TRUE, then all language codes are assumed to be\r
+ in ISO 639-2 format. If FALSE, then all language\r
+ codes are assumed to be in RFC 4646 language format\r
+ @param[in] ... A variable argument list that contains pointers to \r
+ Null-terminated ASCII strings that contain one or more\r
+ language codes in the format specified by Iso639Language.\r
+ The first language code from each of these language\r
+ code lists is used to determine if it is an exact or\r
+ close match to any of the language codes in \r
+ SupportedLanguages. Close matches only apply to RFC 4646\r
+ language codes, and the matching algorithm from RFC 4647\r
+ is used to determine if a close match is present. If \r
+ an exact or close match is found, then the matching\r
+ language code from SupportedLanguages is returned. If\r
+ no matches are found, then the next variable argument\r
+ parameter is evaluated. The variable argument list \r
+ is terminated by a NULL.\r
+\r
+ @retval NULL The best matching language could not be found in SupportedLanguages.\r
+ @retval NULL There are not enough resources available to return the best matching \r
+ language.\r
+ @retval Other A pointer to a Null-terminated ASCII string that is the best matching \r
+ language in SupportedLanguages.\r
+\r
+**/\r
+CHAR8 *\r
+EFIAPI\r
+GetBestLanguage (\r
+ IN CONST CHAR8 *SupportedLanguages, \r
+ IN UINTN Iso639Language,\r
+ ...\r
+ );\r
+\r
+/**\r
+ Draws a dialog box to the console output device specified by \r
+ ConOut defined in the EFI_SYSTEM_TABLE and waits for a keystroke\r
+ from the console input device specified by ConIn defined in the \r
+ EFI_SYSTEM_TABLE.\r
+\r
+ If there are no strings in the variable argument list, then ASSERT().\r
+ If all the strings in the variable argument list are empty, then ASSERT().\r
+\r
+ @param[in] Attribute Specifies the foreground and background color of the popup.\r
+ @param[out] Key A pointer to the EFI_KEY value of the key that was \r
+ pressed. This is an optional parameter that may be NULL.\r
+ If it is NULL then no wait for a keypress will be performed.\r
+ @param[in] ... The variable argument list that contains pointers to Null-\r
+ terminated Unicode strings to display in the dialog box. \r
+ The variable argument list is terminated by a NULL.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+CreatePopUp (\r
+ IN UINTN Attribute, \r
+ OUT EFI_INPUT_KEY *Key, OPTIONAL\r
+ ...\r
+ );\r
+\r