ComponentName.c revision cd5ebaa06dca3e6ef3c464081e6defe00d358c69
1fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeff/** @file 23e03cb4d84348029236764e179c9d3c788709664xli UEFI Component Name(2) protocol implementation for USB Mass Storage Driver. 3e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff 4cd5ebaa06dca3e6ef3c464081e6defe00d358c69hhtianCopyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR> 5cd5ebaa06dca3e6ef3c464081e6defe00d358c69hhtianThis program and the accompanying materials 6e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffare licensed and made available under the terms and conditions of the BSD License 7e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffwhich accompanies this distribution. The full text of the license may be found at 8e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffhttp://opensource.org/licenses/bsd-license.php 9e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff 10e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff 13fb0b259e4e440577dcd6ba6722c252d90605b3e9vanjeff**/ 14e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff 153e03cb4d84348029236764e179c9d3c788709664xli#include "UsbMassImpl.h" 1662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 17e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff// 18e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff// EFI Component Name Protocol 19e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff// 201307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gUsbMassStorageComponentName = { 21e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff UsbMassStorageGetDriverName, 22e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff UsbMassStorageGetControllerName, 23e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff "eng" 241307dcd745881377355a2e7fba53ff9184e92657qhuang}; 2562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 2662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang// 2762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang// EFI Component Name 2 Protocol 2862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang// 291307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gUsbMassStorageComponentName2 = { 3062b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) UsbMassStorageGetDriverName, 3162b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) UsbMassStorageGetControllerName, 3262b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang "en" 331307dcd745881377355a2e7fba53ff9184e92657qhuang}; 3462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 35e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff 36d1aeb0bdc36f6bece71a2b0fd3684857d11a867bqhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE 37e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffmUsbMassStorageDriverNameTable[] = { 3862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang {"eng;en", L"Usb Mass Storage Driver"}, 39e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff {NULL, NULL} 40e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff}; 41e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff 4262b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang/** 4362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang Retrieves a Unicode string that is the user readable name of the driver. 4462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 4562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang This function retrieves the user readable name of a driver in the form of a 4662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang Unicode string. If the driver specified by This has a user readable name in 4762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang the language specified by Language, then a pointer to the driver name is 4862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang returned in DriverName, and EFI_SUCCESS is returned. If the driver specified 4962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang by This does not support the language specified by Language, 5062b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang then EFI_UNSUPPORTED is returned. 5162b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 523e03cb4d84348029236764e179c9d3c788709664xli @param This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or 5362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang EFI_COMPONENT_NAME_PROTOCOL instance. 543e03cb4d84348029236764e179c9d3c788709664xli @param Language A pointer to a Null-terminated ASCII string 5562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang array indicating the language. This is the 5662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang language of the driver name that the caller is 5762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang requesting, and it must match one of the 5862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang languages specified in SupportedLanguages. The 5962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang number of languages supported by a driver is up 6062b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang to the driver writer. Language is specified 610254efc01e461445240512ae1a1c2fc48ed2f70egikidy in RFC 4646 or ISO 639-2 language code format. 623e03cb4d84348029236764e179c9d3c788709664xli @param DriverName A pointer to the Unicode string to return. 6362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang This Unicode string is the name of the 6462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang driver specified by This in the language 6562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang specified by Language. 6662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 6762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_SUCCESS The Unicode string for the Driver specified by 6862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang This and the language specified by Language was 6962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang returned in DriverName. 7062b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_INVALID_PARAMETER Language is NULL. 7162b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_INVALID_PARAMETER DriverName is NULL. 7262b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_UNSUPPORTED The driver specified by This does not support 7362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang the language specified by Language. 7462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 7562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang**/ 76e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffEFI_STATUS 77e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffEFIAPI 78e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffUsbMassStorageGetDriverName ( 79e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff IN EFI_COMPONENT_NAME_PROTOCOL *This, 80e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff IN CHAR8 *Language, 81e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff OUT CHAR16 **DriverName 82e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff ) 83e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff{ 8462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang return LookupUnicodeString2 ( 85e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff Language, 8662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang This->SupportedLanguages, 87e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff mUsbMassStorageDriverNameTable, 8862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang DriverName, 8962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang (BOOLEAN)(This == &gUsbMassStorageComponentName) 90e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff ); 91e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff} 92e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff 9362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang/** 9462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang Retrieves a Unicode string that is the user readable name of the controller 9562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang that is being managed by a driver. 9662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 9762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang This function retrieves the user readable name of the controller specified by 9862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang ControllerHandle and ChildHandle in the form of a Unicode string. If the 9962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang driver specified by This has a user readable name in the language specified by 10062b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang Language, then a pointer to the controller name is returned in ControllerName, 10162b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang and EFI_SUCCESS is returned. If the driver specified by This is not currently 10262b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang managing the controller specified by ControllerHandle and ChildHandle, 10362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang then EFI_UNSUPPORTED is returned. If the driver specified by This does not 10462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang support the language specified by Language, then EFI_UNSUPPORTED is returned. 10562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 1063e03cb4d84348029236764e179c9d3c788709664xli @param This A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or 10762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang EFI_COMPONENT_NAME_PROTOCOL instance. 1083e03cb4d84348029236764e179c9d3c788709664xli @param ControllerHandle The handle of a controller that the driver 10962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang specified by This is managing. This handle 11062b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang specifies the controller whose name is to be 11162b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang returned. 1123e03cb4d84348029236764e179c9d3c788709664xli @param ChildHandle The handle of the child controller to retrieve 11362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang the name of. This is an optional parameter that 11462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang may be NULL. It will be NULL for device 11562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang drivers. It will also be NULL for a bus drivers 11662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang that wish to retrieve the name of the bus 11762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang controller. It will not be NULL for a bus 11862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang driver that wishes to retrieve the name of a 11962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang child controller. 1203e03cb4d84348029236764e179c9d3c788709664xli @param Language A pointer to a Null-terminated ASCII string 12162b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang array indicating the language. This is the 12262b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang language of the driver name that the caller is 12362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang requesting, and it must match one of the 12462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang languages specified in SupportedLanguages. The 12562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang number of languages supported by a driver is up 12662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang to the driver writer. Language is specified in 1270254efc01e461445240512ae1a1c2fc48ed2f70egikidy RFC 4646 or ISO 639-2 language code format. 1283e03cb4d84348029236764e179c9d3c788709664xli @param ControllerName A pointer to the Unicode string to return. 12962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang This Unicode string is the name of the 13062b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang controller specified by ControllerHandle and 13162b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang ChildHandle in the language specified by 13262b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang Language from the point of view of the driver 13362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang specified by This. 13462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 13562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_SUCCESS The Unicode string for the user readable name in 13662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang the language specified by Language for the 13762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang driver specified by This was returned in 13862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang DriverName. 13962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE. 14062b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid 14162b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang EFI_HANDLE. 14262b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_INVALID_PARAMETER Language is NULL. 14362b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_INVALID_PARAMETER ControllerName is NULL. 14462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_UNSUPPORTED The driver specified by This is not currently 14562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang managing the controller specified by 14662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang ControllerHandle and ChildHandle. 14762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang @retval EFI_UNSUPPORTED The driver specified by This does not support 14862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang the language specified by Language. 14962b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang 15062b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang**/ 151e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffEFI_STATUS 152e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffEFIAPI 153e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeffUsbMassStorageGetControllerName ( 15462b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang IN EFI_COMPONENT_NAME_PROTOCOL *This, 15562b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang IN EFI_HANDLE ControllerHandle, 15662b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang IN EFI_HANDLE ChildHandle OPTIONAL, 15762b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang IN CHAR8 *Language, 15862b9bb55c9a37e00b3bd9ea1713512bcc4d37131qhuang OUT CHAR16 **ControllerName 159e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff ) 160e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff{ 161e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff return EFI_UNSUPPORTED; 162e237e7ae9fc23f32a25040d49cc9a16f2a7f3b4cvanjeff} 163