1adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff/** @file 2adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff UEFI Component Name protocol for Partition driver. 3adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 4284ee2e829ab2453293b7dc4539727ad6c047163niruiyuCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> 5e5eed7d3641d71d7ea539e5379ea9c6a5cd97004hhtianThis program and the accompanying materials 6f42be64210ea5ef394835a3c35f0444086537f66qhuangare licensed and made available under the terms and conditions of the BSD License 7f42be64210ea5ef394835a3c35f0444086537f66qhuangwhich accompanies this distribution. The full text of the license may be found at 8f42be64210ea5ef394835a3c35f0444086537f66qhuanghttp://opensource.org/licenses/bsd-license.php 9f42be64210ea5ef394835a3c35f0444086537f66qhuang 10f42be64210ea5ef394835a3c35f0444086537f66qhuangTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11f42be64210ea5ef394835a3c35f0444086537f66qhuangWITHOUT 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 35ff61847ddc91285a9ef8be00b89304870c493ef8qhuang// 36ff61847ddc91285a9ef8be00b89304870c493ef8qhuang// Driver name table for Partition module. 37ff61847ddc91285a9ef8be00b89304870c493ef8qhuang// It is shared by the implementation of ComponentName & ComponentName2 Protocol. 38ff61847ddc91285a9ef8be00b89304870c493ef8qhuang// 39d1aeb0bdc36f6bece71a2b0fd3684857d11a867bqhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPartitionDriverNameTable[] = { 40adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff { 41d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang "eng;en", 42ff61847ddc91285a9ef8be00b89304870c493ef8qhuang L"Partition Driver(MBR/GPT/El Torito)" 43adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff }, 44adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff { 45adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff NULL, 46adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff NULL 47adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff } 48adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff}; 49adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 50adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 51adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 52adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff/** 53d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Retrieves a Unicode string that is the user readable name of the driver. 54d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 55d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This function retrieves the user readable name of a driver in the form of a 56d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Unicode string. If the driver specified by This has a user readable name in 57d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the language specified by Language, then a pointer to the driver name is 58d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang returned in DriverName, and EFI_SUCCESS is returned. If the driver specified 59d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang by This does not support the language specified by Language, 60d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang then EFI_UNSUPPORTED is returned. 61d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 62d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or 63d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang EFI_COMPONENT_NAME_PROTOCOL instance. 64d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 65d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param Language[in] A pointer to a Null-terminated ASCII string 66d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang array indicating the language. This is the 67d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang language of the driver name that the caller is 68d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang requesting, and it must match one of the 69d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang languages specified in SupportedLanguages. The 70d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang number of languages supported by a driver is up 71d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang to the driver writer. Language is specified 720254efc01e461445240512ae1a1c2fc48ed2f70egikidy in RFC 4646 or ISO 639-2 language code format. 73d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 74d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param DriverName[out] A pointer to the Unicode string to return. 75d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This Unicode string is the name of the 76d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang driver specified by This in the language 77d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang specified by Language. 78d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 79d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_SUCCESS The Unicode string for the Driver specified by 80d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This and the language specified by Language was 81d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang returned in DriverName. 82adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 83adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff @retval EFI_INVALID_PARAMETER Language is NULL. 84d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 85adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff @retval EFI_INVALID_PARAMETER DriverName is NULL. 86d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 87d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_UNSUPPORTED The driver specified by This does not support 88d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the language specified by Language. 89adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 90adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff**/ 91adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFI_STATUS 92adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFIAPI 93adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffPartitionComponentNameGetDriverName ( 94adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN EFI_COMPONENT_NAME_PROTOCOL *This, 95adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN CHAR8 *Language, 96adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff OUT CHAR16 **DriverName 97adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff ) 98adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff{ 99d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang return LookupUnicodeString2 ( 100d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Language, 101d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This->SupportedLanguages, 102d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang mPartitionDriverNameTable, 103d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang DriverName, 104d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang (BOOLEAN)(This == &gPartitionComponentName) 105d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang ); 106adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff} 107adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 108adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 109adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff/** 110d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Retrieves a Unicode string that is the user readable name of the controller 111d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang that is being managed by a driver. 112d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 113d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This function retrieves the user readable name of the controller specified by 114d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang ControllerHandle and ChildHandle in the form of a Unicode string. If the 115d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang driver specified by This has a user readable name in the language specified by 116d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Language, then a pointer to the controller name is returned in ControllerName, 117d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang and EFI_SUCCESS is returned. If the driver specified by This is not currently 118d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang managing the controller specified by ControllerHandle and ChildHandle, 119d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang then EFI_UNSUPPORTED is returned. If the driver specified by This does not 120d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang support the language specified by Language, then EFI_UNSUPPORTED is returned. 121d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 122d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or 123d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang EFI_COMPONENT_NAME_PROTOCOL instance. 124d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 125d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param ControllerHandle[in] The handle of a controller that the driver 126d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang specified by This is managing. This handle 127d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang specifies the controller whose name is to be 128d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang returned. 129d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 130d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param ChildHandle[in] The handle of the child controller to retrieve 131d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the name of. This is an optional parameter that 132d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang may be NULL. It will be NULL for device 133d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang drivers. It will also be NULL for a bus drivers 134d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang that wish to retrieve the name of the bus 135d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang controller. It will not be NULL for a bus 136d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang driver that wishes to retrieve the name of a 137d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang child controller. 138d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 139d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param Language[in] A pointer to a Null-terminated ASCII string 140d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang array indicating the language. This is the 141d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang language of the driver name that the caller is 142d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang requesting, and it must match one of the 143d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang languages specified in SupportedLanguages. The 144d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang number of languages supported by a driver is up 145d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang to the driver writer. Language is specified in 1460254efc01e461445240512ae1a1c2fc48ed2f70egikidy RFC 4646 or ISO 639-2 language code format. 147d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 148d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @param ControllerName[out] A pointer to the Unicode string to return. 149d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang This Unicode string is the name of the 150d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang controller specified by ControllerHandle and 151d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang ChildHandle in the language specified by 152d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang Language from the point of view of the driver 153d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang specified by This. 154d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 155d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_SUCCESS The Unicode string for the user readable name in 156d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the language specified by Language for the 157d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang driver specified by This was returned in 158d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang DriverName. 159d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 160284ee2e829ab2453293b7dc4539727ad6c047163niruiyu @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. 161d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang 162d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid 163adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff EFI_HANDLE. 164adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 165adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff @retval EFI_INVALID_PARAMETER Language is NULL. 166adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 167adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff @retval EFI_INVALID_PARAMETER ControllerName is NULL. 168adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 169d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_UNSUPPORTED The driver specified by This is not currently 170d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang managing the controller specified by 171d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang ControllerHandle and ChildHandle. 172adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 173d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang @retval EFI_UNSUPPORTED The driver specified by This does not support 174d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang the language specified by Language. 175adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff 176adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff**/ 177adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFI_STATUS 178adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFIAPI 179adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffPartitionComponentNameGetControllerName ( 180adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN EFI_COMPONENT_NAME_PROTOCOL *This, 181adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN EFI_HANDLE ControllerHandle, 182adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN EFI_HANDLE ChildHandle OPTIONAL, 183adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff IN CHAR8 *Language, 184adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff OUT CHAR16 **ControllerName 185adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff ) 186adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff{ 187adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff return EFI_UNSUPPORTED; 188adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff} 189