/* Generate the Config request element for one question. */
EFI_STRING ConstructRequestElement(IN CHAR16 *Name, IN UINT16 Offset, IN UINT16 Width)
/* Generate the Config request element for one question. */
EFI_STRING ConstructRequestElement(IN CHAR16 *Name, IN UINT16 Offset, IN UINT16 Width)
{
  CHAR16  *StringPtr;
  UINTN   Length;
  if (Name != NULL) {
    Length = StrLen (Name) + 1;
  } else {
    Length = (7 + 4 + 7 + 4 + 1);
  }
  StringPtr = AllocateZeroPool (Length * sizeof (CHAR16));
  ASSERT (StringPtr != NULL);
  if (Name != NULL) {
    UnicodeSPrint (
      StringPtr,
      (StrLen (Name) + 1) * sizeof (CHAR16),
      L"%s",
      Name
      );
  } else {
    UnicodeSPrint (
      StringPtr,
      (7 + 4 + 7 + 4 + 1) * sizeof (CHAR16),
      L"OFFSET=%04X&WIDTH=%04X",
      Offset,
      Width
      );
  }
  return StringPtr;
}