155a1bb43aa37fc948911197a99e23199fcc58b72xli/** @file 255a1bb43aa37fc948911197a99e23199fcc58b72xli UEFI Component Name(2) protocol implementation for VGA Class Driver. 33db510989eb500296c3f4839c427325a02aea2e3klu 4c2d9a4d253d3a3b146b5ddf5313907a149ec4acaniruiyuCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> 5180a5a35cb49699bd249dee19e41cee34c856a58hhtianThis program and the accompanying materials 63db510989eb500296c3f4839c427325a02aea2e3kluare licensed and made available under the terms and conditions of the BSD License 73db510989eb500296c3f4839c427325a02aea2e3kluwhich accompanies this distribution. The full text of the license may be found at 83db510989eb500296c3f4839c427325a02aea2e3kluhttp://opensource.org/licenses/bsd-license.php 93db510989eb500296c3f4839c427325a02aea2e3klu 103db510989eb500296c3f4839c427325a02aea2e3kluTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 113db510989eb500296c3f4839c427325a02aea2e3kluWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 123db510989eb500296c3f4839c427325a02aea2e3klu 133db510989eb500296c3f4839c427325a02aea2e3klu**/ 14e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang 15e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang#include "VgaClass.h" 16e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang 17e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang// 18e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang// EFI Component Name Protocol 19e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang// 201307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gVgaClassComponentName = { 21e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang VgaClassComponentNameGetDriverName, 22e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang VgaClassComponentNameGetControllerName, 23e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang "eng" 241307dcd745881377355a2e7fba53ff9184e92657qhuang}; 259d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 269d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang// 279d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang// EFI Component Name 2 Protocol 289d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang// 291307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gVgaClassComponentName2 = { 309d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) VgaClassComponentNameGetDriverName, 319d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) VgaClassComponentNameGetControllerName, 329d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang "en" 331307dcd745881377355a2e7fba53ff9184e92657qhuang}; 349d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 35e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang 36d1aeb0bdc36f6bece71a2b0fd3684857d11a867bqhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mVgaClassDriverNameTable[] = { 37e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang { 389d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang "eng;en", 39e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang L"VGA Class Driver" 40e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang }, 41e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang { 42e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang NULL, 43e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang NULL 44e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang } 45e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang}; 46e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang 479d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang/** 489d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang Retrieves a Unicode string that is the user readable name of the driver. 499d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 509d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang This function retrieves the user readable name of a driver in the form of a 519d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang Unicode string. If the driver specified by This has a user readable name in 529d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang the language specified by Language, then a pointer to the driver name is 539d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang returned in DriverName, and EFI_SUCCESS is returned. If the driver specified 549d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang by This does not support the language specified by Language, 559d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang then EFI_UNSUPPORTED is returned. 569d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 5755a1bb43aa37fc948911197a99e23199fcc58b72xli @param This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or 589d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang EFI_COMPONENT_NAME_PROTOCOL instance. 5955a1bb43aa37fc948911197a99e23199fcc58b72xli @param Language A pointer to a Null-terminated ASCII string 609d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang array indicating the language. This is the 619d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang language of the driver name that the caller is 629d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang requesting, and it must match one of the 639d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang languages specified in SupportedLanguages. The 649d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang number of languages supported by a driver is up 659d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang to the driver writer. Language is specified 664bca47e17581c099b7a8e9b7ba08bd4e69b31d4dgikidy in RFC 4646 or ISO 639-2 language code format. 6755a1bb43aa37fc948911197a99e23199fcc58b72xli @param DriverName A pointer to the Unicode string to return. 689d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang This Unicode string is the name of the 699d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang driver specified by This in the language 709d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang specified by Language. 719d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 729d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_SUCCESS The Unicode string for the Driver specified by 739d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang This and the language specified by Language was 749d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang returned in DriverName. 759d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_INVALID_PARAMETER Language is NULL. 769d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_INVALID_PARAMETER DriverName is NULL. 779d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_UNSUPPORTED The driver specified by This does not support 789d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang the language specified by Language. 799d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 809d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang**/ 81e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangEFI_STATUS 82e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangEFIAPI 83e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangVgaClassComponentNameGetDriverName ( 84e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang IN EFI_COMPONENT_NAME_PROTOCOL *This, 85e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang IN CHAR8 *Language, 86e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang OUT CHAR16 **DriverName 87e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang ) 88e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang{ 899d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang return LookupUnicodeString2 ( 909d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang Language, 919d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang This->SupportedLanguages, 929d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang mVgaClassDriverNameTable, 939d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang DriverName, 949d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang (BOOLEAN)(This == &gVgaClassComponentName) 959d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang ); 96e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang} 97e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang 989d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang/** 999d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang Retrieves a Unicode string that is the user readable name of the controller 1009d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang that is being managed by a driver. 1019d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 1029d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang This function retrieves the user readable name of the controller specified by 1039d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang ControllerHandle and ChildHandle in the form of a Unicode string. If the 1049d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang driver specified by This has a user readable name in the language specified by 1059d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang Language, then a pointer to the controller name is returned in ControllerName, 1069d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang and EFI_SUCCESS is returned. If the driver specified by This is not currently 1079d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang managing the controller specified by ControllerHandle and ChildHandle, 1089d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang then EFI_UNSUPPORTED is returned. If the driver specified by This does not 1099d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang support the language specified by Language, then EFI_UNSUPPORTED is returned. 1109d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 11155a1bb43aa37fc948911197a99e23199fcc58b72xli @param This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or 1129d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang EFI_COMPONENT_NAME_PROTOCOL instance. 11355a1bb43aa37fc948911197a99e23199fcc58b72xli @param ControllerHandle The handle of a controller that the driver 1149d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang specified by This is managing. This handle 1159d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang specifies the controller whose name is to be 1169d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang returned. 11755a1bb43aa37fc948911197a99e23199fcc58b72xli @param ChildHandle The handle of the child controller to retrieve 1189d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang the name of. This is an optional parameter that 1199d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang may be NULL. It will be NULL for device 1209d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang drivers. It will also be NULL for a bus drivers 1219d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang that wish to retrieve the name of the bus 1229d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang controller. It will not be NULL for a bus 1239d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang driver that wishes to retrieve the name of a 1249d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang child controller. 12555a1bb43aa37fc948911197a99e23199fcc58b72xli @param Language A pointer to a Null-terminated ASCII string 1269d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang array indicating the language. This is the 1279d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang language of the driver name that the caller is 1289d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang requesting, and it must match one of the 1299d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang languages specified in SupportedLanguages. The 1309d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang number of languages supported by a driver is up 1319d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang to the driver writer. Language is specified in 1324bca47e17581c099b7a8e9b7ba08bd4e69b31d4dgikidy RFC 4646 or ISO 639-2 language code format. 13355a1bb43aa37fc948911197a99e23199fcc58b72xli @param ControllerName A pointer to the Unicode string to return. 1349d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang This Unicode string is the name of the 1359d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang controller specified by ControllerHandle and 1369d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang ChildHandle in the language specified by 1379d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang Language from the point of view of the driver 1389d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang specified by This. 1399d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 1409d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_SUCCESS The Unicode string for the user readable name in 1419d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang the language specified by Language for the 1429d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang driver specified by This was returned in 1439d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang DriverName. 144c2d9a4d253d3a3b146b5ddf5313907a149ec4acaniruiyu @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. 1459d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid 1469d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang EFI_HANDLE. 1479d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_INVALID_PARAMETER Language is NULL. 1489d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_INVALID_PARAMETER ControllerName is NULL. 1499d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_UNSUPPORTED The driver specified by This is not currently 1509d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang managing the controller specified by 1519d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang ControllerHandle and ChildHandle. 1529d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang @retval EFI_UNSUPPORTED The driver specified by This does not support 1539d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang the language specified by Language. 1549d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang 1559d64ff86b142d3cbe9bbb4a69286edc0c98859f0qhuang**/ 156e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangEFI_STATUS 157e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangEFIAPI 158e081218df73d6b6042c1c1a2ce422a2495b03f8dqwangVgaClassComponentNameGetControllerName ( 159e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang IN EFI_COMPONENT_NAME_PROTOCOL *This, 160e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang IN EFI_HANDLE ControllerHandle, 161e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang IN EFI_HANDLE ChildHandle OPTIONAL, 162e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang IN CHAR8 *Language, 163e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang OUT CHAR16 **ControllerName 164e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang ) 165e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang{ 166e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang return EFI_UNSUPPORTED; 167e081218df73d6b6042c1c1a2ce422a2495b03f8dqwang} 168