);\r
\r
/**\r
- Intialize a driver by installing the Driver Binding Protocol onto the\r
- driver's DriverBindingHandle. This is typically the same as the driver's\r
- ImageHandle, but it can be different if the driver produces multiple\r
- DriverBinding Protocols. This function also initializes the EFI Driver\r
- Library that initializes the global variables gST, gBS, gRT.\r
+ Intialize a driver by installing the Driver Binding Protocol onto the driver's\r
+ DriverBindingHandle. This is typically the same as the driver's ImageHandle, but\r
+ it can be different if the driver produces multiple DriverBinding Protocols. \r
+ If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+ If the installation fails, then ASSERT ().\r
\r
- @param ImageHandle The image handle of the driver\r
- @param SystemTable The EFI System Table that was passed to the driver's entry point\r
- @param DriverBinding A Driver Binding Protocol instance that this driver is producing\r
- @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
- parameter is NULL, then a new handle is created.\r
+ @param ImageHandle The image handle of the driver.\r
+ @param SystemTable The EFI System Table that was passed to the driver's entry point.\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver is producing.\r
+ @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
+ parameter is NULL, then a new handle is created.\r
\r
- @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle\r
- @retval Other Status from gBS->InstallProtocolInterface()\r
+ @retval EFI_SUCCESS The protocol installation is completed successfully.\r
+ @retval Others Status from gBS->InstallMultipleProtocolInterfaces().\r
\r
**/\r
EFI_STATUS\r
IN EFI_HANDLE DriverBindingHandle\r
);\r
\r
-/**\r
- Intialize a driver by installing the Driver Binding Protocol onto the\r
- driver's DriverBindingHandle. This is typically the same as the driver's\r
- ImageHandle, but it can be different if the driver produces multiple\r
- DriverBinding Protocols. This function also initializes the EFI Driver\r
- Library that initializes the global variables gST, gBS, gRT.\r
-\r
- @ImageHandle The image handle of the driver\r
- @SystemTable The EFI System Table that was passed to the driver's entry point\r
- @DriverBinding A Driver Binding Protocol instance that this driver is producing\r
- @DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
- parameter is NULL, then a new handle is created.\r
- @ComponentName A Component Name Protocol instance that this driver is producing\r
- @DriverConfiguration A Driver Configuration Protocol instance that this driver is producing\r
- @DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing\r
\r
- @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle\r
- @retval Other Status from gBS->InstallProtocolInterface()\r
+/**\r
+ Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
+ Driver Configure and Driver Diagnostic Protocols onto the driver's DriverBindingHandle. This is\r
+ typically the same as the driver's ImageHandle, but it can be different if the driver produces multiple\r
+ DriverBinding Protocols. \r
+ If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+ If the installation fails, then ASSERT ().\r
+\r
+ @param ImageHandle The image handle of the driver.\r
+ @param SystemTable The EFI System Table that was passed to the driver's entry point.\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver is producing.\r
+ @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
+ parameter is NULL, then a new handle is created.\r
+ @param ComponentName A Component Name Protocol instance that this driver is producing.\r
+ @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.\r
+ @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.\r
+\r
+ @retval EFI_SUCCESS The protocol installation is completed successfully.\r
+ @retval Others Status from gBS->InstallMultipleProtocolInterfaces().\r
\r
**/\r
EFI_STATUS\r
);\r
\r
\r
+\r
/**\r
- Intialize a driver by installing the Driver Binding Protocol\r
- onto the driver's DriverBindingHandle. This is typically the\r
- same as the driver's ImageHandle, but it can be different if\r
- the driver produces multiple DriverBinding Protocols. This\r
- function also initializes the EFI Driver Library that\r
- initializes the global variables gST, gBS, gRT.\r
-\r
- @ImageHandle The image handle of the driver\r
- \r
- @SystemTable The EFI System Table that was\r
- passed to the driver's entry\r
- point\r
- \r
- @DriverBinding A Driver Binding Protocol\r
- instance that this driver is\r
- producing\r
- \r
- @DriverBindingHandle The handle that DriverBinding is\r
- to be installe onto. If this\r
- parameter is NULL, then a new\r
- handle is created.\r
- \r
- @ComponentName A Component Name Protocol\r
- instance that this driver is\r
- producing\r
- \r
- @ComponentName2 A Component Name 2 Protocol\r
- instance that this driver is\r
- producing\r
- \r
- @DriverConfiguration A Driver Configuration Protocol\r
- instance that this driver is\r
- producing\r
- \r
- @DriverDiagnostics A Driver Diagnostics Protocol\r
- instance that this driver is\r
- producing\r
- \r
- @DriverDiagnostics2 A Driver Diagnostics 2 Protocol\r
- instance that this driver is\r
- producing\r
+ Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
+ Component Name 2 onto the driver's DriverBindingHandle. This is typically the same as the driver's\r
+ ImageHandle, but it can be different if the driver produces multiple DriverBinding Protocols. \r
+ If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+ If the installation fails, then ASSERT ().\r
+\r
+ @param ImageHandle The image handle of the driver.\r
+ @param SystemTable The EFI System Table that was passed to the driver's entry point.\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver is producing.\r
+ @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
+ parameter is NULL, then a new handle is created.\r
+ @param ComponentName A Component Name Protocol instance that this driver is producing.\r
+ @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.\r
\r
- @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle\r
- @retval Other Status from gBS->InstallProtocolInterface()\r
+ @retval EFI_SUCCESS The protocol installation is completed successfully.\r
+ @retval Others Status from gBS->InstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibInstallDriverBindingComponentName2 (\r
+ IN CONST EFI_HANDLE ImageHandle,\r
+ IN CONST EFI_SYSTEM_TABLE *SystemTable,\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\r
+ IN EFI_HANDLE DriverBindingHandle,\r
+ IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL\r
+ IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL\r
+ );\r
+\r
+\r
+/**\r
+ Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
+ Component Name 2, Driver Configure, Driver Diagnostic and Driver Diagnostic 2 Protocols onto the driver's\r
+ DriverBindingHandle. This is typically the same as the driver's ImageHandle, but it can be different if\r
+ the driver produces multiple DriverBinding Protocols. \r
+ If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+ If the installation fails, then ASSERT ().\r
+\r
+ @param ImageHandle The image handle of the driver.\r
+ @param SystemTable The EFI System Table that was passed to the driver's entry point.\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver is producing.\r
+ @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
+ parameter is NULL, then a new handle is created.\r
+ @param ComponentName A Component Name Protocol instance that this driver is producing.\r
+ @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.\r
+ @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.\r
+ @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.\r
+ @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver is producing.\r
+\r
+ @retval EFI_SUCCESS The protocol installation is completed successfully.\r
+ @retval Others Status from gBS->InstallMultipleProtocolInterfaces().\r
\r
**/\r
EFI_STATUS\r
IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *DriverDiagnostics2 OPTIONAL\r
);\r
\r
-\r
#endif\r
#include "UefiLibInternal.h"\r
\r
/**\r
- Intialize a driver by installing the Driver Binding Protocol onto the\r
- driver's DriverBindingHandle. This is typically the same as the driver's\r
- ImageHandle, but it can be different if the driver produces multiple\r
- DriverBinding Protocols. This function also initializes the EFI Driver\r
- Library that initializes the global variables gST, gBS, gRT.\r
+ Intialize a driver by installing the Driver Binding Protocol onto the driver's\r
+ DriverBindingHandle. This is typically the same as the driver's ImageHandle, but\r
+ it can be different if the driver produces multiple DriverBinding Protocols. \r
+ If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+ If the installation fails, then ASSERT ().\r
\r
- @param ImageHandle The image handle of the driver\r
- @param SystemTable The EFI System Table that was passed to the driver's entry point\r
- @param DriverBinding A Driver Binding Protocol instance that this driver is producing\r
- @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
- parameter is NULL, then a new handle is created.\r
+ @param ImageHandle The image handle of the driver.\r
+ @param SystemTable The EFI System Table that was passed to the driver's entry point.\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver is producing.\r
+ @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
+ parameter is NULL, then a new handle is created.\r
\r
- @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle\r
- @retval Other Status from gBS->InstallProtocolInterface()\r
+ @retval EFI_SUCCESS The protocol installation is completed successfully.\r
+ @retval Others Status from gBS->InstallMultipleProtocolInterfaces().\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
EfiLibInstallDriverBinding (\r
- IN const EFI_HANDLE ImageHandle,\r
- IN const EFI_SYSTEM_TABLE *SystemTable,\r
+ IN CONST EFI_HANDLE ImageHandle,\r
+ IN CONST EFI_SYSTEM_TABLE *SystemTable,\r
IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\r
IN EFI_HANDLE DriverBindingHandle\r
)\r
return Status;\r
}\r
\r
+\r
/**\r
- Intialize a driver by installing the Driver Binding Protocol onto the\r
- driver's DriverBindingHandle. This is typically the same as the driver's\r
- ImageHandle, but it can be different if the driver produces multiple\r
- DriverBinding Protocols. This function also initializes the EFI Driver\r
- Library that initializes the global variables gST, gBS, gRT.\r
-\r
- @ImageHandle The image handle of the driver\r
- @SystemTable The EFI System Table that was passed to the driver's entry point\r
- @DriverBinding A Driver Binding Protocol instance that this driver is producing\r
- @DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
- parameter is NULL, then a new handle is created.\r
- @ComponentName A Component Name Protocol instance that this driver is producing\r
- @DriverConfiguration A Driver Configuration Protocol instance that this driver is producing\r
- @DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing\r
-\r
- @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle\r
- @retval Other Status from gBS->InstallProtocolInterface()\r
+ Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
+ Driver Configure and Driver Diagnostic Protocols onto the driver's DriverBindingHandle. This is\r
+ typically the same as the driver's ImageHandle, but it can be different if the driver produces multiple\r
+ DriverBinding Protocols. \r
+ If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+ If the installation fails, then ASSERT ().\r
+\r
+ @param ImageHandle The image handle of the driver.\r
+ @param SystemTable The EFI System Table that was passed to the driver's entry point.\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver is producing.\r
+ @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
+ parameter is NULL, then a new handle is created.\r
+ @param ComponentName A Component Name Protocol instance that this driver is producing.\r
+ @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.\r
+ @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.\r
+\r
+ @retval EFI_SUCCESS The protocol installation is completed successfully.\r
+ @retval Others Status from gBS->InstallMultipleProtocolInterfaces().\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
EfiLibInstallAllDriverProtocols (\r
- IN const EFI_HANDLE ImageHandle,\r
- IN const EFI_SYSTEM_TABLE *SystemTable,\r
+ IN CONST EFI_HANDLE ImageHandle,\r
+ IN CONST EFI_SYSTEM_TABLE *SystemTable,\r
IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\r
IN EFI_HANDLE DriverBindingHandle,\r
- IN const EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL\r
- IN const EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL\r
- IN const EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics OPTIONAL\r
+ IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL\r
+ IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL\r
+ IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics OPTIONAL\r
)\r
{\r
EFI_STATUS Status;\r
}\r
\r
\r
+\r
+/**\r
+ Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
+ Component Name 2 onto the driver's DriverBindingHandle. This is typically the same as the driver's\r
+ ImageHandle, but it can be different if the driver produces multiple DriverBinding Protocols. \r
+ If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+ If the installation fails, then ASSERT ().\r
+\r
+ @param ImageHandle The image handle of the driver.\r
+ @param SystemTable The EFI System Table that was passed to the driver's entry point.\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver is producing.\r
+ @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
+ parameter is NULL, then a new handle is created.\r
+ @param ComponentName A Component Name Protocol instance that this driver is producing.\r
+ @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.\r
+\r
+ @retval EFI_SUCCESS The protocol installation is completed successfully.\r
+ @retval Others Status from gBS->InstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibInstallDriverBindingComponentName2 (\r
+ IN CONST EFI_HANDLE ImageHandle,\r
+ IN CONST EFI_SYSTEM_TABLE *SystemTable,\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\r
+ IN EFI_HANDLE DriverBindingHandle,\r
+ IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL\r
+ IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+\r
+ ASSERT (NULL != DriverBinding);\r
+\r
+ if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+ if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+ &gEfiComponentNameProtocolGuid, ComponentName,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+ &gEfiComponentNameProtocolGuid, ComponentName,\r
+ &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ //\r
+ // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
+ //\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ //\r
+ // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
+ //\r
+ DriverBinding->ImageHandle = ImageHandle;\r
+ DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
+\r
+ return Status;\r
+}\r
+\r
+\r
+\r
/**\r
- Intialize a driver by installing the Driver Binding Protocol onto the\r
- driver's DriverBindingHandle. This is typically the same as the driver's\r
- ImageHandle, but it can be different if the driver produces multiple\r
- DriverBinding Protocols. This function also initializes the EFI Driver\r
- Library that initializes the global variables gST, gBS, gRT.\r
-\r
- @ImageHandle The image handle of the driver\r
- @SystemTable The EFI System Table that was passed to the driver's entry point\r
- @DriverBinding A Driver Binding Protocol instance that this driver is producing\r
- @DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
- parameter is NULL, then a new handle is created.\r
- @ComponentName A Component Name Protocol instance that this driver is producing\r
- @DriverConfiguration A Driver Configuration Protocol instance that this driver is producing\r
- @DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing\r
-\r
- @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle\r
- @retval Other Status from gBS->InstallProtocolInterface()\r
+ Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
+ Component Name 2, Driver Configure, Driver Diagnostic and Driver Diagnostic 2 Protocols onto the driver's\r
+ DriverBindingHandle. This is typically the same as the driver's ImageHandle, but it can be different if\r
+ the driver produces multiple DriverBinding Protocols. \r
+ If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+ If the installation fails, then ASSERT ().\r
+\r
+ @param ImageHandle The image handle of the driver.\r
+ @param SystemTable The EFI System Table that was passed to the driver's entry point.\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver is producing.\r
+ @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
+ parameter is NULL, then a new handle is created.\r
+ @param ComponentName A Component Name Protocol instance that this driver is producing.\r
+ @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.\r
+ @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.\r
+ @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.\r
+ @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver is producing.\r
+\r
+ @retval EFI_SUCCESS The protocol installation is completed successfully.\r
+ @retval Others Status from gBS->InstallMultipleProtocolInterfaces().\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
EfiLibInstallAllDriverProtocols2 (\r
- IN const EFI_HANDLE ImageHandle,\r
- IN const EFI_SYSTEM_TABLE *SystemTable,\r
+ IN CONST EFI_HANDLE ImageHandle,\r
+ IN CONST EFI_SYSTEM_TABLE *SystemTable,\r
IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\r
IN EFI_HANDLE DriverBindingHandle,\r
- IN const EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL\r
- IN const EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2, OPTIONAL\r
- IN const EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL\r
- IN const EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics, OPTIONAL\r
- IN const EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *DriverDiagnostics2 OPTIONAL\r
+ IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL\r
+ IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2, OPTIONAL\r
+ IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL\r
+ IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics, OPTIONAL\r
+ IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *DriverDiagnostics2 OPTIONAL\r
)\r
{\r
EFI_STATUS Status;\r