+/** \r
+ Prints a formatted Unicode string to the console output device specified by \r
+ ConOut defined in the EFI_SYSTEM_TABLE.\r
+\r
+ This function prints a formatted Unicode string to the console output device \r
+ specified by ConOut in EFI_SYSTEM_TABLE and returns the number of Unicode \r
+ characters that printed to ConOut. If the length of the formatted Unicode \r
+ string is greater than PcdUefiLibMaxPrintBufferSize, then only the first \r
+ PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.\r
+ If Format is NULL, then ASSERT().\r
+ If Format is not aligned on a 16-bit boundary, then ASSERT().\r
+ If gST->ConOut is NULL, then ASSERT().\r
+\r
+ @param Format A null-terminated Unicode format string.\r
+ @param ... The variable argument list whose contents are accessed based \r
+ on the format string specified by Format.\r
+ \r
+ @return Number of Unicode characters printed to ConOut.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+Print (\r
+ IN CONST CHAR16 *Format,\r
+ ...\r
+ );\r
+\r
+/** \r
+ Prints a formatted Unicode string to the console output device specified by \r
+ StdErr defined in the EFI_SYSTEM_TABLE.\r
+\r
+ This function prints a formatted Unicode string to the console output device \r
+ specified by StdErr in EFI_SYSTEM_TABLE and returns the number of Unicode \r
+ characters that printed to StdErr. If the length of the formatted Unicode \r
+ string is greater than PcdUefiLibMaxPrintBufferSize, then only the first \r
+ PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.\r
+ If Format is NULL, then ASSERT().\r
+ If Format is not aligned on a 16-bit boundary, then ASSERT().\r
+ If gST->StdErr is NULL, then ASSERT().\r
+\r
+ @param Format A null-terminated Unicode format string.\r
+ @param ... The variable argument list whose contents are accessed based \r
+ on the format string specified by Format.\r
+ \r
+ @return Number of Unicode characters printed to StdErr.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+ErrorPrint (\r
+ IN CONST CHAR16 *Format,\r
+ ...\r
+ );\r
+\r
+/** \r
+ Prints a formatted ASCII string to the console output device specified by \r
+ ConOut defined in the EFI_SYSTEM_TABLE.\r
+\r
+ This function prints a formatted ASCII string to the console output device \r
+ specified by ConOut in EFI_SYSTEM_TABLE and returns the number of ASCII \r
+ characters that printed to ConOut. If the length of the formatted ASCII \r
+ string is greater than PcdUefiLibMaxPrintBufferSize, then only the first \r
+ PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.\r
+ If Format is NULL, then ASSERT().\r
+ If gST->ConOut is NULL, then ASSERT().\r
+\r
+ @param Format A null-terminated ASCII format string.\r
+ @param ... The variable argument list whose contents are accessed based \r
+ on the format string specified by Format.\r
+ \r
+ @return Number of ASCII characters printed to ConOut.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsciiPrint (\r
+ IN CONST CHAR8 *Format,\r
+ ...\r
+ );\r
+\r
+/** \r
+ Prints a formatted ASCII string to the console output device specified by \r
+ StdErr defined in the EFI_SYSTEM_TABLE.\r
+\r
+ This function prints a formatted ASCII string to the console output device \r
+ specified by StdErr in EFI_SYSTEM_TABLE and returns the number of ASCII \r
+ characters that printed to StdErr. If the length of the formatted ASCII \r
+ string is greater than PcdUefiLibMaxPrintBufferSize, then only the first \r
+ PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.\r
+ If Format is NULL, then ASSERT().\r
+ If gST->StdErr is NULL, then ASSERT().\r
+\r
+ @param Format A null-terminated ASCII format string.\r
+ @param ... The variable argument list whose contents are accessed based \r
+ on the format string specified by Format.\r
+ \r
+ @return Number of ASCII characters printed to ConErr.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsciiErrorPrint (\r
+ IN CONST CHAR8 *Format,\r
+ ...\r
+ );\r
+\r
+\r
+/**\r
+ Prints a formatted Unicode string to a graphics console device specified by \r
+ ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.\r
+\r
+ This function prints a formatted Unicode string to the graphics console device \r
+ specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of \r
+ Unicode characters displayed, not including partial characters that may be clipped \r
+ by the right edge of the display. If the length of the formatted Unicode string is\r
+ greater than PcdUefiLibMaxPrintBufferSize, then at most the first \r
+ PcdUefiLibMaxPrintBufferSize characters are printed. The EFI_HII_FONT_PROTOCOL\r
+ is used to convert the string to a bitmap using the glyphs registered with the \r
+ HII database. No wrapping is performed, so any portions of the string the fall\r
+ outside the active display region will not be displayed.\r
+\r
+ If a graphics console device is not associated with the ConsoleOutputHandle \r
+ defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.\r
+ If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no \r
+ string is printed, and 0 is returned.\r
+ If Format is NULL, then ASSERT().\r
+ If Format is not aligned on a 16-bit boundary, then ASSERT().\r
+ If gST->ConsoleOutputHandle is NULL, then ASSERT().\r
+\r
+ @param PointX X coordinate to print the string.\r
+ @param PointY Y coordinate to print the string.\r
+ @param ForeGround The foreground color of the string being printed. This is\r
+ an optional parameter that may be NULL. If it is NULL,\r
+ then the foreground color of the current ConOut device\r
+ in the EFI_SYSTEM_TABLE is used.\r
+ @param BackGround The background color of the string being printed. This is\r
+ an optional parameter that may be NULL. If it is NULL, \r
+ then the background color of the current ConOut device\r
+ in the EFI_SYSTEM_TABLE is used.\r
+ @param Format A null-terminated Unicode format string. See Print Library \r
+ for the supported format string syntax.\r
+ @param ... Variable argument list whose contents are accessed based on \r
+ the format string specified by Format. \r
+\r
+ @return The number of Unicode characters printed.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+PrintXY (\r
+ IN UINTN PointX,\r
+ IN UINTN PointY,\r
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *ForeGround, OPTIONAL\r
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackGround, OPTIONAL\r
+ IN CONST CHAR16 *Format,\r
+ ...\r
+ );\r
+\r
+/**\r
+ Prints a formatted ASCII string to a graphics console device specified by \r
+ ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.\r
+\r
+ This function prints a formatted ASCII string to the graphics console device \r
+ specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of \r
+ ASCII characters displayed, not including partial characters that may be clipped \r
+ by the right edge of the display. If the length of the formatted ASCII string is\r
+ greater than PcdUefiLibMaxPrintBufferSize, then at most the first \r
+ PcdUefiLibMaxPrintBufferSize characters are printed. The EFI_HII_FONT_PROTOCOL\r
+ is used to convert the string to a bitmap using the glyphs registered with the \r
+ HII database. No wrapping is performed, so any portions of the string the fall\r
+ outside the active display region will not be displayed.\r
+\r
+ If a graphics console device is not associated with the ConsoleOutputHandle \r
+ defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.\r
+ If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no \r
+ string is printed, and 0 is returned.\r
+ If Format is NULL, then ASSERT().\r
+ If gST->ConsoleOutputHandle is NULL, then ASSERT().\r
+\r
+ @param PointX X coordinate to print the string.\r
+ @param PointY Y coordinate to print the string.\r
+ @param ForeGround The foreground color of the string being printed. This is\r
+ an optional parameter that may be NULL. If it is NULL,\r
+ then the foreground color of the current ConOut device\r
+ in the EFI_SYSTEM_TABLE is used.\r
+ @param BackGround The background color of the string being printed. This is\r
+ an optional parameter that may be NULL. If it is NULL, \r
+ then the background color of the current ConOut device\r
+ in the EFI_SYSTEM_TABLE is used.\r
+ @param Format A null-terminated ASCII format string. See Print Library \r
+ for the supported format string syntax.\r
+ @param ... The variable argument list whose contents are accessed based on \r
+ the format string specified by Format. \r
+\r
+ @return The number of ASCII characters printed.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsciiPrintXY (\r
+ IN UINTN PointX,\r
+ IN UINTN PointY,\r
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *ForeGround, OPTIONAL\r
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackGround, OPTIONAL\r
+ IN CONST CHAR8 *Format,\r
+ ...\r
+ );\r
+\r
+/**\r
+ Installs and completes the initialization of a Driver Binding Protocol instance.\r
+ \r
+ Installs the Driver Binding Protocol specified by DriverBinding onto the handle\r
+ specified by DriverBindingHandle. If DriverBindingHandle is NULL, then DriverBinding\r
+ is installed onto a newly created handle. DriverBindingHandle is typically the same\r
+ as the driver's ImageHandle, but it can be different if the driver produces multiple\r
+ Driver Binding Protocols. \r
+ If DriverBinding is NULL, then ASSERT(). \r
+ If DriverBinding can not be installed onto a handle, 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 installed onto. If this\r
+ parameter is NULL, then a new handle is created.\r
+\r
+ @retval EFI_SUCCESS The protocol installation completed successfully.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough system resources to install the protocol.\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 EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\r
+ IN EFI_HANDLE DriverBindingHandle\r
+ );\r
+\r
+\r
+/**\r
+ Installs and completes the initialization of a Driver Binding Protocol instance and\r
+ optionally installs the Component Name, Driver Configuration and Driver Diagnostics Protocols.\r
+\r
+ Initializes a driver by installing the Driver Binding Protocol together with the\r
+ optional Component Name, optional Driver Configure and optional Driver Diagnostic\r
+ Protocols onto the driver's DriverBindingHandle. If DriverBindingHandle is NULL,\r
+ then the protocols are installed onto a newly created handle. DriverBindingHandle\r
+ is typically the same as the driver's ImageHandle, but it can be different if the\r
+ driver produces multiple Driver Binding Protocols. \r
+ If DriverBinding 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 installed 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 completed successfully.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough memory in the pool to install all the protocols.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibInstallAllDriverProtocols (\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
+ );\r
+\r
+\r
+\r
+/**\r
+ Installs Driver Binding Protocol with optional Component Name and Component Name 2 Protocols.\r
+\r
+ Initializes a driver by installing the Driver Binding Protocol together with the\r
+ optional Component Name and optional Component Name 2 protocols onto the driver's\r
+ DriverBindingHandle. If DriverBindingHandle is NULL, then the protocols are installed\r
+ onto a newly created handle. DriverBindingHandle is typically the same as the driver's\r
+ ImageHandle, but it can be different if the driver produces multiple Driver Binding Protocols. \r
+ If DriverBinding 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 installed 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 completed successfully.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.\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
+ Installs Driver Binding Protocol with optional Component Name, Component Name 2, Driver\r
+ Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols.\r
+\r
+ Initializes a driver by installing the Driver Binding Protocol together with the optional\r
+ Component Name, optional Component Name 2, optional Driver Configuration, optional Driver Configuration 2,\r
+ optional Driver Diagnostic, and optional Driver Diagnostic 2 Protocols onto the driver's DriverBindingHandle.\r
+ DriverBindingHandle is typically the same as the driver's ImageHandle, but it can be different if the driver\r
+ produces multiple Driver Binding Protocols. \r
+ If DriverBinding is NULL, then ASSERT(). \r
+ If the installation fails, then ASSERT().\r
+\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 installed 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 DriverConfiguration2 A Driver Configuration Protocol 2 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 completed successfully.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibInstallAllDriverProtocols2 (\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_CONFIGURATION2_PROTOCOL *DriverConfiguration2, OPTIONAL\r
+ IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics, OPTIONAL\r
+ IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *DriverDiagnostics2 OPTIONAL\r
+ );\r
+\r
+/** \r
+ Appends a formatted Unicode string to a Null-terminated Unicode string\r
+ \r
+ This function appends a formatted Unicode string to the Null-terminated \r
+ Unicode string specified by String. String is optional and may be NULL.\r
+ Storage for the formatted Unicode string returned is allocated using \r
+ AllocatePool(). The pointer to the appended string is returned. The caller\r
+ is responsible for freeing the returned string.\r
+ \r
+ If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().\r
+ If FormatString is NULL, then ASSERT().\r
+ If FormatString is not aligned on a 16-bit boundary, then ASSERT().\r
+ \r
+ @param[in] String A Null-terminated Unicode string.\r
+ @param[in] FormatString A Null-terminated Unicode format string.\r
+ @param[in] Marker VA_LIST marker for the variable argument list.\r
+\r
+ @retval NULL There was not enough available memory.\r
+ @return Null-terminated Unicode string is that is the formatted \r
+ string appended to String.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+CatVSPrint (\r
+ IN CHAR16 *String, OPTIONAL\r
+ IN CONST CHAR16 *FormatString,\r
+ IN VA_LIST Marker\r
+ );\r