/* Initialize the library and determine if the underlying is a UEFI Shell 2.0 or an EFI shell. */
EFI_STATUS EFIAPI ShellLibConstructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
/* Initialize the library and determine if the underlying is a UEFI Shell 2.0 or an EFI shell. */
EFI_STATUS EFIAPI ShellLibConstructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
{
  mEfiShellEnvironment2       = NULL;
  gEfiShellProtocol           = NULL;
  gEfiShellParametersProtocol = NULL;
  mEfiShellInterface          = NULL;
  mEfiShellEnvironment2Handle = NULL;
  mUnicodeCollationProtocol   = NULL;
  if (PcdGetBool (PcdShellLibAutoInitialize) == 0) {
    return (EFI_SUCCESS);
  }
  return (ShellLibConstructorWorker (ImageHandle, SystemTable));
}