editpe/
constants.rs

1//! Windows API and binary constants.
2
3#![allow(non_upper_case_globals)]
4
5pub type DWORD = u32;
6pub type UINT = u32;
7pub type WORD = u16;
8pub type LANGID = WORD;
9
10
11pub const VS_COMMENTS: &str = "Comments";
12pub const VS_COMPANY_NAME: &str = "CompanyName";
13pub const VS_FILE_DESCRIPTION: &str = "FileDescription";
14pub const VS_FILE_VERSION: &str = "FileVersion";
15pub const VS_INTERNAL_NAME: &str = "InternalName";
16pub const VS_LEGAL_COPYRIGHT: &str = "LegalCopyright";
17pub const VS_LEGAL_TRADEMARKS: &str = "LegalTrademarks";
18pub const VS_ORIGINAL_FILENAME: &str = "OriginalFilename";
19pub const VS_PRIVATE_BUILD: &str = "PrivateBuild";
20pub const VS_PRODUCT_NAME: &str = "ProductName";
21pub const VS_PRODUCT_VERSION: &str = "ProductVersion";
22pub const VS_SPECIAL_BUILD: &str = "SpecialBuild";
23
24
25// https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c
26pub const LANGUAGE_ID_EN_US: LANGID = 1033; // 0x0409, en-US
27// https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-ucoderef/28fefe92-d66c-4b03-90a9-97b473223d43
28pub const CODE_PAGE_ID_EN_US: LANGID = 1200; // 0x04B0, UTF-16LE
29
30
31// https://docs.microsoft.com/en-us/windows/win32/api/verrsrc/ns-verrsrc-vs_fixedfileinfo
32
33pub const VOS_UNKNOWN: DWORD = 0x00000000;
34pub const VOS_DOS: DWORD = 0x00010000;
35pub const VOS_NT: DWORD = 0x00040000;
36pub const VOS__WINDOWS16: DWORD = 0x00000001;
37pub const VOS__WINDOWS32: DWORD = 0x00000004;
38pub const VOS_OS216: DWORD = 0x00020000;
39pub const VOS_OS232: DWORD = 0x00030000;
40pub const VOS__PM16: DWORD = 0x00000002;
41pub const VOS__PM32: DWORD = 0x00000003;
42
43pub const VFT_UNKNOWN: DWORD = 0x00000000;
44pub const VFT_APP: DWORD = 0x00000001;
45pub const VFT_DLL: DWORD = 0x00000002;
46pub const VFT_DRV: DWORD = 0x00000003;
47pub const VFT_FONT: DWORD = 0x00000004;
48pub const VFT_STATIC_LIB: DWORD = 0x00000007;
49pub const VFT_VXD: DWORD = 0x00000005;
50
51pub const VFT2_UNKNOWN: DWORD = 0x00000000;
52pub const VFT2_DRV_COMM: DWORD = 0x0000000A;
53pub const VFT2_DRV_DISPLAY: DWORD = 0x00000004;
54pub const VFT2_DRV_INSTALLABLE: DWORD = 0x00000008;
55pub const VFT2_DRV_KEYBOARD: DWORD = 0x00000002;
56pub const VFT2_DRV_LANGUAGE: DWORD = 0x00000003;
57pub const VFT2_DRV_MOUSE: DWORD = 0x00000005;
58pub const VFT2_DRV_NETWORK: DWORD = 0x00000006;
59pub const VFT2_DRV_PRINTER: DWORD = 0x00000001;
60pub const VFT2_DRV_SOUND: DWORD = 0x00000009;
61pub const VFT2_DRV_SYSTEM: DWORD = 0x00000007;
62pub const VFT2_DRV_VERSIONED_PRINTER: DWORD = 0x0000000C;
63pub const VFT2_FONT_RASTER: DWORD = 0x00000001;
64pub const VFT2_FONT_TRUETYPE: DWORD = 0x00000003;
65pub const VFT2_FONT_VECTOR: DWORD = 0x00000002;
66
67pub const VS_FIXEDFILEINFO_SIGNATURE: DWORD = 0xFEEF04BD;
68pub const VS_FIXEDFILEINFO_VERSION: DWORD = 0x00010000;
69
70
71// https://docs.microsoft.com/en-us/windows/win32/debug/pe-format
72
73pub const PE_DOS_MAGIC: WORD = 0x5a4d; // MZ
74pub const PE_PTR_OFFSET: DWORD = 0x03c;
75pub const PE_NT_SIGNATURE: DWORD = 0x00004550; // PE00
76pub const PE_32_MAGIC: WORD = 0x010b;
77pub const PE_64_MAGIC: WORD = 0x020b;
78
79
80// https://docs.microsoft.com/en-us/windows/win32/menurc/resource-types
81
82pub const RT_CURSOR: WORD = 0x01;
83pub const RT_BITMAP: WORD = 0x02;
84pub const RT_ICON: WORD = 0x03;
85pub const RT_MENU: WORD = 0x04;
86pub const RT_DIALOG: WORD = 0x05;
87pub const RT_STRING: WORD = 0x06;
88pub const RT_FONTDIR: WORD = 0x07;
89pub const RT_FONT: WORD = 0x08;
90pub const RT_ACCELERATOR: WORD = 0x09;
91pub const RT_RCDATA: WORD = 0x0A;
92pub const RT_MESSAGETABLE: WORD = 0x0B;
93pub const RT_GROUP_CURSOR: WORD = 0x0C;
94pub const RT_GROUP_ICON: WORD = 0x0E;
95pub const RT_VERSION: WORD = 0x10;
96pub const RT_DLGINCLUDE: WORD = 0x11;
97pub const RT_PLUGPLAY: WORD = 0x13;
98pub const RT_VXD: WORD = 0x14;
99pub const RT_ANICURSOR: WORD = 0x15;
100pub const RT_ANIICON: WORD = 0x16;
101pub const RT_HTML: WORD = 0x17;
102pub const RT_MANIFEST: WORD = 0x18;
103
104
105// https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#section-flags
106
107pub const IMAGE_SCN_TYPE_NO_PAD: DWORD = 0x00000008;
108pub const IMAGE_SCN_CNT_CODE: DWORD = 0x00000020;
109pub const IMAGE_SCN_CNT_INITIALIZED_DATA: DWORD = 0x00000040;
110pub const IMAGE_SCN_CNT_UNINITIALIZED_DATA: DWORD = 0x00000080;
111pub const IMAGE_SCN_LNK_OTHER: DWORD = 0x00000100;
112pub const IMAGE_SCN_LNK_INFO: DWORD = 0x00000200;
113pub const IMAGE_SCN_LNK_REMOVE: DWORD = 0x00000800;
114pub const IMAGE_SCN_LNK_COMDAT: DWORD = 0x00001000;
115pub const IMAGE_SCN_GPREL: DWORD = 0x00008000;
116pub const IMAGE_SCN_MEM_PURGEABLE: DWORD = 0x00020000;
117pub const IMAGE_SCN_MEM_16BIT: DWORD = 0x00020000;
118pub const IMAGE_SCN_MEM_LOCKED: DWORD = 0x00040000;
119pub const IMAGE_SCN_MEM_PRELOAD: DWORD = 0x00080000;
120pub const IMAGE_SCN_ALIGN_1BYTES: DWORD = 0x00100000;
121pub const IMAGE_SCN_ALIGN_2BYTES: DWORD = 0x00200000;
122pub const IMAGE_SCN_ALIGN_4BYTES: DWORD = 0x00300000;
123pub const IMAGE_SCN_ALIGN_8BYTES: DWORD = 0x00400000;
124pub const IMAGE_SCN_ALIGN_16BYTES: DWORD = 0x00500000;
125pub const IMAGE_SCN_ALIGN_32BYTES: DWORD = 0x00600000;
126pub const IMAGE_SCN_ALIGN_64BYTES: DWORD = 0x00700000;
127pub const IMAGE_SCN_ALIGN_128BYTES: DWORD = 0x00800000;
128pub const IMAGE_SCN_ALIGN_256BYTES: DWORD = 0x00900000;
129pub const IMAGE_SCN_ALIGN_512BYTES: DWORD = 0x00A00000;
130pub const IMAGE_SCN_ALIGN_1024BYTES: DWORD = 0x00B00000;
131pub const IMAGE_SCN_ALIGN_2048BYTES: DWORD = 0x00C00000;
132pub const IMAGE_SCN_ALIGN_4096BYTES: DWORD = 0x00D00000;
133pub const IMAGE_SCN_ALIGN_8192BYTES: DWORD = 0x00E00000;
134pub const IMAGE_SCN_LNK_NRELOC_OVFL: DWORD = 0x01000000;
135pub const IMAGE_SCN_MEM_DISCARDABLE: DWORD = 0x02000000;
136pub const IMAGE_SCN_MEM_NOT_CACHED: DWORD = 0x04000000;
137pub const IMAGE_SCN_MEM_NOT_PAGED: DWORD = 0x08000000;
138pub const IMAGE_SCN_MEM_SHARED: DWORD = 0x10000000;
139pub const IMAGE_SCN_MEM_EXECUTE: DWORD = 0x20000000;
140pub const IMAGE_SCN_MEM_READ: DWORD = 0x40000000;
141pub const IMAGE_SCN_MEM_WRITE: DWORD = 0x80000000;
142
143// https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#windows-subsystem
144
145pub const IMAGE_SUBSYSTEM_UNKNOWN: WORD = 0;
146pub const IMAGE_SUBSYSTEM_NATIVE: WORD = 1;
147pub const IMAGE_SUBSYSTEM_WINDOWS_GUI: WORD = 2;
148pub const IMAGE_SUBSYSTEM_WINDOWS_CUI: WORD = 3;
149pub const IMAGE_SUBSYSTEM_OS2_CUI: WORD = 5;
150pub const IMAGE_SUBSYSTEM_POSIX_CUI: WORD = 7;
151pub const IMAGE_SUBSYSTEM_NATIVE_WINDOWS: WORD = 8;
152pub const IMAGE_SUBSYSTEM_WINDOWS_CE_GUI: WORD = 9;
153pub const IMAGE_SUBSYSTEM_EFI_APPLICATION: WORD = 10;
154pub const IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER: WORD = 11;
155pub const IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER: WORD = 12;
156pub const IMAGE_SUBSYSTEM_EFI_ROM: WORD = 13;
157pub const IMAGE_SUBSYSTEM_XBOX: WORD = 14;
158pub const IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION: WORD = 16;