+/**\r
+ The prototype of this extension function is the same with EFI_HII_IMAGE_PROTOCOL.NewImage().\r
+ This protocol invokes EFI_HII_IMAGE_PROTOCOL.NewImage() implicitly.\r
+\r
+ @param This A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.\r
+ @param PackageList Handle of the package list where this image will\r
+ be added.\r
+ @param ImageId On return, contains the new image id, which is\r
+ unique within PackageList.\r
+ @param Image Points to the image.\r
+\r
+ @retval EFI_SUCCESS The new image was added successfully.\r
+ @retval EFI_NOT_FOUND The PackageList could not be found.\r
+ @retval EFI_OUT_OF_RESOURCES Could not add the image due to lack of resources.\r
+ @retval EFI_INVALID_PARAMETER Image is NULL or ImageId is NULL.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+HiiNewImageEx (\r
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,\r
+ IN EFI_HII_HANDLE PackageList,\r
+ OUT EFI_IMAGE_ID *ImageId,\r
+ IN CONST EFI_IMAGE_INPUT *Image\r
+ );\r
+\r
+/**\r
+ Return the information about the image, associated with the package list.\r
+ The prototype of this extension function is the same with EFI_HII_IMAGE_PROTOCOL.GetImage().\r
+\r
+ This function is similar to EFI_HII_IMAGE_PROTOCOL.GetImage(). The difference is that\r
+ this function will locate all EFI_HII_IMAGE_DECODER_PROTOCOL instances installed in the\r
+ system if the decoder of the certain image type is not supported by the\r
+ EFI_HII_IMAGE_EX_PROTOCOL. The function will attempt to decode the image to the\r
+ EFI_IMAGE_INPUT using the first EFI_HII_IMAGE_DECODER_PROTOCOL instance that\r
+ supports the requested image type.\r
+\r
+ @param This A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.\r
+ @param PackageList The package list in the HII database to search for the\r
+ specified image.\r
+ @param ImageId The image's id, which is unique within PackageList.\r
+ @param Image Points to the image.\r
+\r
+ @retval EFI_SUCCESS The new image was returned successfully.\r
+ @retval EFI_NOT_FOUND The image specified by ImageId is not available. The specified\r
+ PackageList is not in the Database.\r
+ @retval EFI_INVALID_PARAMETER Image was NULL or ImageId was 0.\r
+ @retval EFI_OUT_OF_RESOURCES The bitmap could not be retrieved because there\r
+ was not enough memory.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+HiiGetImageEx (\r
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,\r
+ IN EFI_HII_HANDLE PackageList,\r
+ IN EFI_IMAGE_ID ImageId,\r
+ OUT EFI_IMAGE_INPUT *Image\r
+ );\r
+\r
+/**\r
+ Change the information about the image.\r
+\r
+ Same with EFI_HII_IMAGE_PROTOCOL.SetImage(), this protocol invokes\r
+ EFI_HII_IMAGE_PROTOCOL.SetImage()implicitly.\r
+\r
+ @param This A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.\r
+ @param PackageList The package list containing the images.\r
+ @param ImageId The image's id, which is unique within PackageList.\r
+ @param Image Points to the image.\r
+\r
+ @retval EFI_SUCCESS The new image was successfully updated.\r
+ @retval EFI_NOT_FOUND The image specified by ImageId is not in the\r
+ database. The specified PackageList is not in\r
+ the database.\r
+ @retval EFI_INVALID_PARAMETER The Image was NULL, the ImageId was 0 or\r
+ the Image->Bitmap was NULL.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+HiiSetImageEx (\r
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,\r
+ IN EFI_HII_HANDLE PackageList,\r
+ IN EFI_IMAGE_ID ImageId,\r
+ IN CONST EFI_IMAGE_INPUT *Image\r
+ );\r
+\r
+/**\r
+ Renders an image to a bitmap or to the display.\r
+\r
+ The prototype of this extension function is the same with\r
+ EFI_HII_IMAGE_PROTOCOL.DrawImage(). This protocol invokes\r
+ EFI_HII_IMAGE_PROTOCOL.DrawImage() implicitly.\r
+\r
+ @param This A pointer to the EFI_HII_IMAGE_EX_PROTOCOL instance.\r
+ @param Flags Describes how the image is to be drawn.\r
+ @param Image Points to the image to be displayed.\r
+ @param Blt If this points to a non-NULL on entry, this points\r
+ to the image, which is Width pixels wide and\r
+ Height pixels high. The image will be drawn onto\r
+ this image and EFI_HII_DRAW_FLAG_CLIP is implied.\r
+ If this points to a NULL on entry, then a buffer\r
+ will be allocated to hold the generated image and\r
+ the pointer updated on exit. It is the caller's\r
+ responsibility to free this buffer.\r
+ @param BltX Specifies the offset from the left and top edge of\r
+ the output image of the first pixel in the image.\r
+ @param BltY Specifies the offset from the left and top edge of\r
+ the output image of the first pixel in the image.\r
+\r
+ @retval EFI_SUCCESS The image was successfully drawn.\r
+ @retval EFI_OUT_OF_RESOURCES Unable to allocate an output buffer for Blt.\r
+ @retval EFI_INVALID_PARAMETER The Image or Blt was NULL.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+HiiDrawImageEx (\r
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,\r
+ IN EFI_HII_DRAW_FLAGS Flags,\r
+ IN CONST EFI_IMAGE_INPUT *Image,\r
+ IN OUT EFI_IMAGE_OUTPUT **Blt,\r
+ IN UINTN BltX,\r
+ IN UINTN BltY\r
+ );\r