mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 10:19:50 +00:00 
			
		
		
		
	- servity -> severity - TURE -> TRUE - contiue -> continue - Pepresentation -> Representation - suported -> supported - opints -> points - sucessfully -> successfully - hexidecimal -> hexadecimal - Pacakge -> Package - Libary -> Library - successull -> successfully - reseting -> resetting - Retrive -> Retrieve - dirver -> driver - availible -> available - chracter -> character - seperator -> separator Cc: Feng Tian <feng.tian@intel.com> Cc: Star Zeng <star.zeng@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Gary Lin <glin@suse.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Language related HII Library implementation.
 | 
						|
 | 
						|
  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
 | 
						|
  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.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
 | 
						|
#include "InternalHiiLib.h"
 | 
						|
 | 
						|
/**
 | 
						|
  Retrieves a pointer to the a Null-terminated ASCII string containing the list 
 | 
						|
  of languages that an HII handle in the HII Database supports.  The returned 
 | 
						|
  string is allocated using AllocatePool().  The caller is responsible for freeing
 | 
						|
  the returned string using FreePool().  The format of the returned string follows
 | 
						|
  the language format assumed the HII Database.
 | 
						|
  
 | 
						|
  If HiiHandle is NULL, then ASSERT().
 | 
						|
 | 
						|
  @param[in]  HiiHandle  A handle that was previously registered in the HII Database.
 | 
						|
 | 
						|
  @retval NULL   HiiHandle is not registered in the HII database
 | 
						|
  @retval NULL   There are not enough resources available to retrieve the supported
 | 
						|
                 languages.
 | 
						|
  @retval NULL   The list of supported languages could not be retrieved.
 | 
						|
  @retval Other  A pointer to the Null-terminated ASCII string of supported languages.
 | 
						|
 | 
						|
**/
 | 
						|
CHAR8 *
 | 
						|
EFIAPI
 | 
						|
HiiGetSupportedLanguages (
 | 
						|
  IN EFI_HII_HANDLE           HiiHandle
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_STATUS  Status;
 | 
						|
  UINTN       LanguageSize;
 | 
						|
  CHAR8       TempSupportedLanguages;
 | 
						|
  CHAR8       *SupportedLanguages;
 | 
						|
 | 
						|
  ASSERT (HiiHandle != NULL);
 | 
						|
 | 
						|
  //
 | 
						|
  // Retrieve the size required for the supported languages buffer.
 | 
						|
  //
 | 
						|
  LanguageSize = 0;
 | 
						|
  Status = gHiiString->GetLanguages (gHiiString, HiiHandle, &TempSupportedLanguages, &LanguageSize);
 | 
						|
 | 
						|
  //
 | 
						|
  // If GetLanguages() returns EFI_SUCCESS for a zero size, 
 | 
						|
  // then there are no supported languages registered for HiiHandle.  If GetLanguages() 
 | 
						|
  // returns an error other than EFI_BUFFER_TOO_SMALL, then HiiHandle is not present
 | 
						|
  // in the HII Database
 | 
						|
  //
 | 
						|
  if (Status != EFI_BUFFER_TOO_SMALL) {
 | 
						|
    //
 | 
						|
    // Return NULL if the size can not be retrieved, or if HiiHandle is not in the HII Database
 | 
						|
    //
 | 
						|
    return NULL;
 | 
						|
  }
 | 
						|
 | 
						|
  //
 | 
						|
  // Allocate the supported languages buffer.
 | 
						|
  //
 | 
						|
  SupportedLanguages = AllocateZeroPool (LanguageSize);
 | 
						|
  if (SupportedLanguages == NULL) {
 | 
						|
    //
 | 
						|
    // Return NULL if allocation fails.
 | 
						|
    //
 | 
						|
    return NULL;
 | 
						|
  }
 | 
						|
 | 
						|
  //
 | 
						|
  // Retrieve the supported languages string
 | 
						|
  //
 | 
						|
  Status = gHiiString->GetLanguages (gHiiString, HiiHandle, SupportedLanguages, &LanguageSize);
 | 
						|
  if (EFI_ERROR (Status)) {
 | 
						|
    //
 | 
						|
    // Free the buffer and return NULL if the supported languages can not be retrieved.
 | 
						|
    //
 | 
						|
    FreePool (SupportedLanguages);
 | 
						|
    return NULL;
 | 
						|
  }
 | 
						|
 | 
						|
  //
 | 
						|
  // Return the Null-terminated ASCII string of supported languages
 | 
						|
  //
 | 
						|
  return SupportedLanguages;
 | 
						|
}
 | 
						|
 |