+/**\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
+/**\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
+ Uninstalls a Driver Binding Protocol instance.\r
+\r
+ If DriverBinding is NULL, then ASSERT().\r
+ If DriverBinding can not be uninstalled, then ASSERT().\r
+\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver produced.\r
+\r
+ @retval EFI_SUCCESS The protocol uninstallation successfully completed.\r
+ @retval Others Status from gBS->UninstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibUninstallDriverBinding (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding\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
+ Uninstalls a Driver Binding Protocol instance and optionally uninstalls the\r
+ Component Name, Driver Configuration and Driver Diagnostics Protocols.\r
+\r
+ If DriverBinding is NULL, then ASSERT().\r
+ If the uninstallation fails, then ASSERT().\r
+\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver produced.\r
+ @param ComponentName A Component Name Protocol instance that this driver produced.\r
+ @param DriverConfiguration A Driver Configuration Protocol instance that this driver produced.\r
+ @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver produced.\r
+\r
+ @retval EFI_SUCCESS The protocol uninstallation successfully completed.\r
+ @retval Others Status from gBS->UninstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibUninstallAllDriverProtocols (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\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
+ 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
+ Uninstalls Driver Binding Protocol with optional Component Name and Component Name 2 Protocols.\r
+\r
+ If DriverBinding is NULL, then ASSERT().\r
+ If the uninstallation fails, then ASSERT().\r
+\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver produced.\r
+ @param ComponentName A Component Name Protocol instance that this driver produced.\r
+ @param ComponentName2 A Component Name 2 Protocol instance that this driver produced.\r
+\r
+ @retval EFI_SUCCESS The protocol installation successfully completed.\r
+ @retval Others Status from gBS->UninstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibUninstallDriverBindingComponentName2 (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\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
+/**\r
+ Uninstalls 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
+ If DriverBinding is NULL, then ASSERT().\r
+ If the installation fails, then ASSERT().\r
+\r
+\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver produced.\r
+ @param ComponentName A Component Name Protocol instance that this driver produced.\r
+ @param ComponentName2 A Component Name 2 Protocol instance that this driver produced.\r
+ @param DriverConfiguration A Driver Configuration Protocol instance that this driver produced.\r
+ @param DriverConfiguration2 A Driver Configuration Protocol 2 instance that this driver produced.\r
+ @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver produced.\r
+ @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver produced.\r
+\r
+ @retval EFI_SUCCESS The protocol uninstallation successfully completed.\r
+ @retval Others Status from gBS->UninstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibUninstallAllDriverProtocols2 (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\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
+/**\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
+\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] ... The variable argument list whose contents are\r
+ accessed based on the format string specified by\r
+ FormatString.\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
+CatSPrint (\r
+ IN CHAR16 *String, OPTIONAL\r
+ IN CONST CHAR16 *FormatString,\r
+ ...\r
+ );\r
+\r
+/**\r
+ Returns an array of protocol instance that matches the given protocol.\r
+\r
+ @param[in] Protocol Provides the protocol to search for.\r
+ @param[out] NoProtocols The number of protocols returned in Buffer.\r
+ @param[out] Buffer A pointer to the buffer to return the requested\r
+ array of protocol instances that match Protocol.\r
+ The returned buffer is allocated using\r
+ EFI_BOOT_SERVICES.AllocatePool(). The caller is\r
+ responsible for freeing this buffer with\r
+ EFI_BOOT_SERVICES.FreePool().\r
+\r
+ @retval EFI_SUCCESS The array of protocols was returned in Buffer,\r
+ and the number of protocols in Buffer was\r
+ returned in NoProtocols.\r
+ @retval EFI_NOT_FOUND No protocols found.\r
+ @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the\r
+ matching results.\r
+ @retval EFI_INVALID_PARAMETER Protocol is NULL.\r
+ @retval EFI_INVALID_PARAMETER NoProtocols is NULL.\r
+ @retval EFI_INVALID_PARAMETER Buffer is NULL.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLocateProtocolBuffer (\r
+ IN EFI_GUID *Protocol,\r
+ OUT UINTN *NoProtocols,\r
+ OUT VOID ***Buffer\r
+ );\r
+\r
+/**\r
+ Open or create a file or directory, possibly creating the chain of\r
+ directories leading up to the directory.\r
+\r
+ EfiOpenFileByDevicePath() first locates EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on\r
+ FilePath, and opens the root directory of that filesystem with\r
+ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume().\r
+\r
+ On the remaining device path, the longest initial sequence of\r
+ FILEPATH_DEVICE_PATH nodes is node-wise traversed with\r
+ EFI_FILE_PROTOCOL.Open().\r
+\r
+ (As a consequence, if OpenMode includes EFI_FILE_MODE_CREATE, and Attributes\r
+ includes EFI_FILE_DIRECTORY, and each FILEPATH_DEVICE_PATH specifies a single\r
+ pathname component, then EfiOpenFileByDevicePath() ensures that the specified\r
+ series of subdirectories exist on return.)\r
+\r
+ The EFI_FILE_PROTOCOL identified by the last FILEPATH_DEVICE_PATH node is\r
+ output to the caller; intermediate EFI_FILE_PROTOCOL instances are closed. If\r
+ there are no FILEPATH_DEVICE_PATH nodes past the node that identifies the\r
+ filesystem, then the EFI_FILE_PROTOCOL of the root directory of the\r
+ filesystem is output to the caller. If a device path node that is different\r
+ from FILEPATH_DEVICE_PATH is encountered relative to the filesystem, the\r
+ traversal is stopped with an error, and a NULL EFI_FILE_PROTOCOL is output.\r
+\r
+ @param[in,out] FilePath On input, the device path to the file or directory\r
+ to open or create. The caller is responsible for\r
+ ensuring that the device path pointed-to by FilePath\r
+ is well-formed. On output, FilePath points one past\r
+ the last node in the original device path that has\r
+ been successfully processed. FilePath is set on\r
+ output even if EfiOpenFileByDevicePath() returns an\r
+ error.\r
+\r
+ @param[out] File On error, File is set to NULL. On success, File is\r
+ set to the EFI_FILE_PROTOCOL of the root directory\r
+ of the filesystem, if there are no\r
+ FILEPATH_DEVICE_PATH nodes in FilePath; otherwise,\r
+ File is set to the EFI_FILE_PROTOCOL identified by\r
+ the last node in FilePath.\r
+\r
+ @param[in] OpenMode The OpenMode parameter to pass to\r
+ EFI_FILE_PROTOCOL.Open().\r
+\r
+ @param[in] Attributes The Attributes parameter to pass to\r
+ EFI_FILE_PROTOCOL.Open().\r
+\r
+ @retval EFI_SUCCESS The file or directory has been opened or\r
+ created.\r
+\r
+ @retval EFI_INVALID_PARAMETER FilePath is NULL; or File is NULL; or FilePath\r
+ contains a device path node, past the node\r
+ that identifies\r
+ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, that is not a\r
+ FILEPATH_DEVICE_PATH node.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Memory allocation failed.\r
+\r
+ @return Error codes propagated from the\r
+ LocateDevicePath() and OpenProtocol() boot\r
+ services, and from the\r
+ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume()\r
+ and EFI_FILE_PROTOCOL.Open() member functions.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiOpenFileByDevicePath (\r
+ IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath,\r
+ OUT EFI_FILE_PROTOCOL **File,\r
+ IN UINT64 OpenMode,\r
+ IN UINT64 Attributes\r
+ );\r
+\r
+/**\r
+ This function locates next ACPI table in XSDT/RSDT based on Signature and\r
+ previous returned Table.\r
+\r
+ If PreviousTable is NULL:\r
+ This function will locate the first ACPI table in XSDT/RSDT based on\r
+ Signature in gEfiAcpi20TableGuid system configuration table first, and then\r
+ gEfiAcpi10TableGuid system configuration table.\r
+ This function will locate in XSDT first, and then RSDT.\r
+ For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in\r
+ FADT.\r
+ For FACS, this function will locate XFirmwareCtrl in FADT first, and then\r
+ FirmwareCtrl in FADT.\r
+\r
+ If PreviousTable is not NULL:\r
+ 1. If it could be located in XSDT in gEfiAcpi20TableGuid system configuration\r
+ table, then this function will just locate next table in XSDT in\r
+ gEfiAcpi20TableGuid system configuration table.\r
+ 2. If it could be located in RSDT in gEfiAcpi20TableGuid system configuration\r
+ table, then this function will just locate next table in RSDT in\r
+ gEfiAcpi20TableGuid system configuration table.\r
+ 3. If it could be located in RSDT in gEfiAcpi10TableGuid system configuration\r
+ table, then this function will just locate next table in RSDT in\r
+ gEfiAcpi10TableGuid system configuration table.\r
+\r
+ It's not supported that PreviousTable is not NULL but PreviousTable->Signature\r
+ is not same with Signature, NULL will be returned.\r
+\r
+ @param Signature ACPI table signature.\r
+ @param PreviousTable Pointer to previous returned table to locate next\r
+ table, or NULL to locate first table.\r
+\r
+ @return Next ACPI table or NULL if not found.\r
+\r
+**/\r
+EFI_ACPI_COMMON_HEADER *\r
+EFIAPI\r
+EfiLocateNextAcpiTable (\r
+ IN UINT32 Signature,\r
+ IN EFI_ACPI_COMMON_HEADER *PreviousTable OPTIONAL\r
+ );\r
+\r
+/**\r
+ This function locates first ACPI table in XSDT/RSDT based on Signature.\r
+\r
+ This function will locate the first ACPI table in XSDT/RSDT based on\r
+ Signature in gEfiAcpi20TableGuid system configuration table first, and then\r
+ gEfiAcpi10TableGuid system configuration table.\r
+ This function will locate in XSDT first, and then RSDT.\r
+ For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in\r
+ FADT.\r
+ For FACS, this function will locate XFirmwareCtrl in FADT first, and then\r
+ FirmwareCtrl in FADT.\r
+\r
+ @param Signature ACPI table signature.\r
+\r
+ @return First ACPI table or NULL if not found.\r
+\r
+**/\r
+EFI_ACPI_COMMON_HEADER *\r
+EFIAPI\r
+EfiLocateFirstAcpiTable (\r
+ IN UINT32 Signature\r
+ );\r