/** @file Provides interface to advanced shell functionality for parsing both handle and protocol database. Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
(C) Copyright 2016 Hewlett Packard Enterprise Development LP
(C) Copyright 2013-2016 Hewlett-Packard Development Company, L.P.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _UEFI_HANDLE_PARSING_LIB_INTERNAL_H_ #define _UEFI_HANDLE_PARSING_LIB_INTERNAL_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION_V1 1 #define EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION_V2 2 /// /// EFI_FIRMWARE_IMAGE_DESCRIPTOR in UEFI spec < 2.4a /// typedef struct { /// /// A unique number identifying the firmware image within the device. The number is /// between 1 and DescriptorCount. /// UINT8 ImageIndex; /// /// A unique number identifying the firmware image type. /// EFI_GUID ImageTypeId; /// /// A unique number identifying the firmware image. /// UINT64 ImageId; /// /// A pointer to a null-terminated string representing the firmware image name. /// CHAR16 *ImageIdName; /// /// Identifies the version of the device firmware. The format is vendor specific and new /// version must have a greater value than an old version. /// UINT32 Version; /// /// A pointer to a null-terminated string representing the firmware image version name. /// CHAR16 *VersionName; /// /// Size of the image in bytes. If size=0, then only ImageIndex and ImageTypeId are valid. /// UINTN Size; /// /// Image attributes that are supported by this device. See 'Image Attribute Definitions' /// for possible returned values of this parameter. A value of 1 indicates the attribute is /// supported and the current setting value is indicated in AttributesSetting. A /// value of 0 indicates the attribute is not supported and the current setting value in /// AttributesSetting is meaningless. /// UINT64 AttributesSupported; /// /// Image attributes. See 'Image Attribute Definitions' for possible returned values of /// this parameter. /// UINT64 AttributesSetting; /// /// Image compatibilities. See 'Image Compatibility Definitions' for possible returned /// values of this parameter. /// UINT64 Compatibilities; } EFI_FIRMWARE_IMAGE_DESCRIPTOR_V1; /// /// EFI_FIRMWARE_IMAGE_DESCRIPTOR in UEFI spec > 2.4a and < 2.5 /// typedef struct { /// /// A unique number identifying the firmware image within the device. The number is /// between 1 and DescriptorCount. /// UINT8 ImageIndex; /// /// A unique number identifying the firmware image type. /// EFI_GUID ImageTypeId; /// /// A unique number identifying the firmware image. /// UINT64 ImageId; /// /// A pointer to a null-terminated string representing the firmware image name. /// CHAR16 *ImageIdName; /// /// Identifies the version of the device firmware. The format is vendor specific and new /// version must have a greater value than an old version. /// UINT32 Version; /// /// A pointer to a null-terminated string representing the firmware image version name. /// CHAR16 *VersionName; /// /// Size of the image in bytes. If size=0, then only ImageIndex and ImageTypeId are valid. /// UINTN Size; /// /// Image attributes that are supported by this device. See 'Image Attribute Definitions' /// for possible returned values of this parameter. A value of 1 indicates the attribute is /// supported and the current setting value is indicated in AttributesSetting. A /// value of 0 indicates the attribute is not supported and the current setting value in /// AttributesSetting is meaningless. /// UINT64 AttributesSupported; /// /// Image attributes. See 'Image Attribute Definitions' for possible returned values of /// this parameter. /// UINT64 AttributesSetting; /// /// Image compatibilities. See 'Image Compatibility Definitions' for possible returned /// values of this parameter. /// UINT64 Compatibilities; /// /// Describes the lowest ImageDescriptor version that the device will accept. Only /// present in version 2 or higher. UINT32 LowestSupportedImageVersion; } EFI_FIRMWARE_IMAGE_DESCRIPTOR_V2; typedef struct { LIST_ENTRY Link; EFI_HANDLE TheHandle; UINTN TheIndex; } HANDLE_LIST; typedef struct { HANDLE_LIST List; UINTN NextIndex; } HANDLE_INDEX_LIST; typedef CHAR16 * (EFIAPI *DUMP_PROTOCOL_INFO)( IN CONST EFI_HANDLE TheHandle, IN CONST BOOLEAN Verbose ); typedef struct _GUID_INFO_BLOCK { EFI_STRING_ID StringId; EFI_GUID *GuidId; DUMP_PROTOCOL_INFO DumpInfo; } GUID_INFO_BLOCK; #endif