As my previous email, I mentioned that I am able to find the protocol since the LocateProtocol returns 0 (EFI_SUCCESS) (using the exact code you wrote) . But when I want to open it either with OpenProtocol or HandleProtocol I get a RETURN_UNSUPPORTED. Are you implying that by calling LocateProtocol() the protocol would also be opened? or do I still need to open it? if I still need to open then I am still getting the UNSUPPORTED Status.
But if I don't need to open it I still don't know why I am not able to use the GOP methods. 
one example of the many examples which I get this error is as below:


Status = gBS->HandleProtocol (SystemTable->ConsoleOutHandle, &gEfiGraphicsOutputProtocolGuid, (VOID **)&GraphicsOutput);
  if (EFI_ERROR (Status)) {
    Status = gBS->LocateProtocol (&gEfiGraphicsOutputProtocolGuid, NULL, (VOID **)&GraphicsOutput);
    if (EFI_ERROR (Status)) {
      Print (L"Error: Could not find a GOP instance!\n");
      Status = EFI_NOT_FOUND;
      goto Done;
    }
  }
Blt         = NULL;
  ImageWidth  = 0;
  ImageHeight = 0;
  Status      =  TranslateBmpToGopBlt (
                   BmpFileData,
                   BmpFileSize,
                   &Blt,
                   &BltSize,
                   &ImageHeight,
                   &ImageWidth
                   );
It is worth mentioning that the BmpFIleData and BmpFileSize are valid variables with the proper data stored. Anyways, the status code for the TranslateBmpToGopBlt returns a RETURN_UNSUPPORTED. This is the same with other GOP methods

On Wed, Feb 8, 2023 at 12:36 PM Michael Brown <mcb30@ipxe.org> wrote:
On 08/02/2023 08:03, Alireza Banejad wrote:
> Below is how I use the HandleProtocol function:
>
>    Status = gBS->HandleProtocol (
>                    gST->ConsoleOutHandle,
>                    &gEfiGraphicsOutputProtocolGuid,
>                    (VOID **)&GraphicsOutput
>                    );

You are querying only the ConsoleOutHandle, which is not necessarily
where the GOP will be installed.

Use LocateProtocol() to find the protocol instance instead:


   Status = gBS->LocateProtocol(&gEfiGraphicsOutputProtocolGuid, NULL,
                                (VOID **)&GraphicsOutput);

HTH,

Michael