Hi Michael,

PeImage.h currently references rev 8.3 as the latest revision. The DLLCHARACTERISTICS field of the optional header existed in the revision, but I believe it was never added as it was not needed. I'm happy to add information to the header if needed, just let me know what you're looking for. Would you like me to update it to v9.3 or stay at v8.3? If we stay at 8.3, I will need to remove  IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA as it did not exist in v8.3.

as for the naming, The latest revision (9.3) of the spec has the name as IMAGE_DLLCHARACTERISTICS_*. In revision 8.3, this is also true, except for the first three entries which do include the space as you mentioned.

Please let me know if you would like to stay at v8.3 or move up to v9.3 and I will update these defines appropriately.

On Tue, Jun 27, 2023 at 1:12 PM Kinney, Michael D <michael.d.kinney@intel.com> wrote:
Hi Joey,

Was the link to the PE/COFF specs that added these updated in the file header?

Also, shouldn't it be DLL_CHARACTERISRICS instead of DLLCHARACTERISRICS?

Mike

> -----Original Message-----
> From: Joey Vagedes <joey.vagedes@gmail.com>
> Sent: Friday, June 23, 2023 8:45 AM
> To: devel@edk2.groups.io
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming
> <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>
> Subject: [PATCH v1 1/2] MdePkg: IndustryStandard: Add DLL Characteristics
>
> Add the bit masks for DLL Characteristics, used within the optional
> header of a PE, to the PeImage.h header file.
>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Zhiguang Liu <zhiguang.liu@intel.com>
> Signed-off-by: Joey Vagedes <joeyvagedes@gmail.com>
> ---
>  MdePkg/Include/IndustryStandard/PeImage.h | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
>
> diff --git a/MdePkg/Include/IndustryStandard/PeImage.h
> b/MdePkg/Include/IndustryStandard/PeImage.h
> index 47037049348c..430e8988f550 100644
> --- a/MdePkg/Include/IndustryStandard/PeImage.h
> +++ b/MdePkg/Include/IndustryStandard/PeImage.h
> @@ -269,6 +269,21 @@ typedef struct {
>  #define EFI_IMAGE_SUBSYSTEM_OS2_CUI      5
>  #define EFI_IMAGE_SUBSYSTEM_POSIX_CUI    7
>
> +//
> +// DLL Characteristics
> +//
> +#define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA        0x0020
> +#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE           0x0040
> +#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY        0x0080
> +#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT              0x0100
> +#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION           0x0200
> +#define IMAGE_DLLCHARACTERISTICS_NO_SEH                 0x0400
> +#define IMAGE_DLLCHARACTERISTICS_NO_BIND                0x0800
> +#define IMAGE_DLLCHARACTERISTICS_APPCONTAINER           0x1000
> +#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER             0x2000
> +#define IMAGE_DLLCHARACTERISTICS_GUARD_CF               0x4000
> +#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE  0x8000
> +
>  ///
>  /// Length of ShortName.
>  ///
> --
> 2.41.0.windows.1