+/** \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