ComponentName.c revision 1307dcd745881377355a2e7fba53ff9184e92657
1adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff/** @file 2adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff UEFI Component Name protocol for Partition driver. 3adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 4adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff Copyright (c) 2006 - 2007, Intel Corporation 5adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff All rights reserved. This program and the accompanying materials 6adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff are licensed and made available under the terms and conditions of the BSD License 7adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff which accompanies this distribution. The full text of the license may be found at 8adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff http://opensource.org/licenses/bsd-license.php 9adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 10adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 13adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff**/ 14adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 15adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff#include "Partition.h" 16adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 17adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff// 18adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff// EFI Component Name Protocol 19adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff// 201307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gPartitionComponentName = { 21adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff PartitionComponentNameGetDriverName, 22adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff PartitionComponentNameGetControllerName, 23adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff "eng" 241307dcd745881377355a2e7fba53ff9184e92657qhuang}; 25d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 26d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang// 27d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang// EFI Component Name 2 Protocol 28d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang// 291307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gPartitionComponentName2 = { 30d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) PartitionComponentNameGetDriverName, 31d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) PartitionComponentNameGetControllerName, 32d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang "en" 331307dcd745881377355a2e7fba53ff9184e92657qhuang}; 34d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 35adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 36adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffstatic EFI_UNICODE_STRING_TABLE mPartitionDriverNameTable[] = { 37adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff { 38d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang "eng;en", 39adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff (CHAR16 *)L"Partition Driver(MBR/GPT/El Torito)" 40adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff }, 41adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff { 42adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff NULL, 43adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff NULL 44adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff } 45adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff}; 46adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 47adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 48adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 49adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff/** 50d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Retrieves a Unicode string that is the user readable name of the driver. 51d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 52d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This function retrieves the user readable name of a driver in the form of a 53d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Unicode string. If the driver specified by This has a user readable name in 54d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the language specified by Language, then a pointer to the driver name is 55d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang returned in DriverName, and EFI_SUCCESS is returned. If the driver specified 56d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang by This does not support the language specified by Language, 57d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang then EFI_UNSUPPORTED is returned. 58d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 59d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or 60d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang EFI_COMPONENT_NAME_PROTOCOL instance. 61d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 62d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param Language[in] A pointer to a Null-terminated ASCII string 63d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang array indicating the language. This is the 64d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang language of the driver name that the caller is 65d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang requesting, and it must match one of the 66d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang languages specified in SupportedLanguages. The 67d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang number of languages supported by a driver is up 68d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang to the driver writer. Language is specified 69d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang in RFC 3066 or ISO 639-2 language code format. 70d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 71d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param DriverName[out] A pointer to the Unicode string to return. 72d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This Unicode string is the name of the 73d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang driver specified by This in the language 74d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang specified by Language. 75d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 76d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_SUCCESS The Unicode string for the Driver specified by 77d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This and the language specified by Language was 78d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang returned in DriverName. 79adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 80adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff @retval EFI_INVALID_PARAMETER Language is NULL. 81d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 82adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff @retval EFI_INVALID_PARAMETER DriverName is NULL. 83d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 84d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_UNSUPPORTED The driver specified by This does not support 85d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the language specified by Language. 86adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 87adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff**/ 88adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFI_STATUS 89adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFIAPI 90adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffPartitionComponentNameGetDriverName ( 91adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN EFI_COMPONENT_NAME_PROTOCOL *This, 92adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN CHAR8 *Language, 93adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff OUT CHAR16 **DriverName 94adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff ) 95adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff{ 96d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang return LookupUnicodeString2 ( 97d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Language, 98d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This->SupportedLanguages, 99d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang mPartitionDriverNameTable, 100d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang DriverName, 101d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang (BOOLEAN)(This == &gPartitionComponentName) 102d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang ); 103adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff} 104adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 105adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 106adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff/** 107d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Retrieves a Unicode string that is the user readable name of the controller 108d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang that is being managed by a driver. 109d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 110d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This function retrieves the user readable name of the controller specified by 111d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang ControllerHandle and ChildHandle in the form of a Unicode string. If the 112d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang driver specified by This has a user readable name in the language specified by 113d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Language, then a pointer to the controller name is returned in ControllerName, 114d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang and EFI_SUCCESS is returned. If the driver specified by This is not currently 115d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang managing the controller specified by ControllerHandle and ChildHandle, 116d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang then EFI_UNSUPPORTED is returned. If the driver specified by This does not 117d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang support the language specified by Language, then EFI_UNSUPPORTED is returned. 118d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 119d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or 120d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang EFI_COMPONENT_NAME_PROTOCOL instance. 121d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 122d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param ControllerHandle[in] The handle of a controller that the driver 123d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang specified by This is managing. This handle 124d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang specifies the controller whose name is to be 125d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang returned. 126d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 127d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param ChildHandle[in] The handle of the child controller to retrieve 128d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the name of. This is an optional parameter that 129d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang may be NULL. It will be NULL for device 130d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang drivers. It will also be NULL for a bus drivers 131d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang that wish to retrieve the name of the bus 132d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang controller. It will not be NULL for a bus 133d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang driver that wishes to retrieve the name of a 134d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang child controller. 135d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 136d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param Language[in] A pointer to a Null-terminated ASCII string 137d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang array indicating the language. This is the 138d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang language of the driver name that the caller is 139d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang requesting, and it must match one of the 140d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang languages specified in SupportedLanguages. The 141d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang number of languages supported by a driver is up 142d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang to the driver writer. Language is specified in 143d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang RFC 3066 or ISO 639-2 language code format. 144d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 145d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param ControllerName[out] A pointer to the Unicode string to return. 146d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This Unicode string is the name of the 147d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang controller specified by ControllerHandle and 148d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang ChildHandle in the language specified by 149d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Language from the point of view of the driver 150d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang specified by This. 151d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 152d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_SUCCESS The Unicode string for the user readable name in 153d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the language specified by Language for the 154d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang driver specified by This was returned in 155d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang DriverName. 156d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 157d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE. 158d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 159d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid 160adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff EFI_HANDLE. 161adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 162adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff @retval EFI_INVALID_PARAMETER Language is NULL. 163adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 164adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff @retval EFI_INVALID_PARAMETER ControllerName is NULL. 165adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 166d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_UNSUPPORTED The driver specified by This is not currently 167d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang managing the controller specified by 168d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang ControllerHandle and ChildHandle. 169adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 170d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_UNSUPPORTED The driver specified by This does not support 171d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the language specified by Language. 172adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 173adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff**/ 174adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFI_STATUS 175adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFIAPI 176adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffPartitionComponentNameGetControllerName ( 177adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN EFI_COMPONENT_NAME_PROTOCOL *This, 178adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN EFI_HANDLE ControllerHandle, 179adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN EFI_HANDLE ChildHandle OPTIONAL, 180adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN CHAR8 *Language, 181adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff OUT CHAR16 **ControllerName 182adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff ) 183adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff{ 184adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff return EFI_UNSUPPORTED; 185adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff} 186