1 /**
2 * Windows API header module
3 *
4 * Translated from MinGW Windows headers
5 *
6 * Authors: Stewart Gordon
7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8 * Source: $(DRUNTIMESRC src/core/sys/windows/_winver.d)
9 */
10 module core.sys.windows.winver;
version(Windows)11 version (Windows):
12
13 version (ANSI) {} else version = Unicode;
14 pragma(lib, "version");
15
16 private import core.sys.windows.windef;
17
18 // FIXME: type weirdness
19 enum {
20 VS_FILE_INFO = 16,
21 VS_VERSION_INFO = 1,
22 VS_USER_DEFINED = 100
23 }
24
25 enum {
26 VS_FFI_SIGNATURE = 0xFEEF04BD,
27 VS_FFI_STRUCVERSION = 0x10000,
28 VS_FFI_FILEFLAGSMASK = 0x3F
29 }
30
31 enum {
32 VS_FF_DEBUG = 1,
33 VS_FF_PRERELEASE = 2,
34 VS_FF_PATCHED = 4,
35 VS_FF_PRIVATEBUILD = 8,
36 VS_FF_INFOINFERRED = 16,
37 VS_FF_SPECIALBUILD = 32
38 }
39
40 enum {
41 VOS_UNKNOWN = 0,
42 VOS_DOS = 0x10000,
43 VOS_OS216 = 0x20000,
44 VOS_OS232 = 0x30000,
45 VOS_NT = 0x40000,
46 VOS__BASE = 0,
47 VOS__WINDOWS16 = 1,
48 VOS__PM16 = 2,
49 VOS__PM32 = 3,
50 VOS__WINDOWS32 = 4,
51 VOS_DOS_WINDOWS16 = 0x10001,
52 VOS_DOS_WINDOWS32 = 0x10004,
53 VOS_OS216_PM16 = 0x20002,
54 VOS_OS232_PM32 = 0x30003,
55 VOS_NT_WINDOWS32 = 0x40004
56 }
57
58 enum {
59 VFT_UNKNOWN = 0,
60 VFT_APP = 1,
61 VFT_DLL = 2,
62 VFT_DRV = 3,
63 VFT_FONT = 4,
64 VFT_VXD = 5,
65 VFT_STATIC_LIB = 7
66 }
67
68 enum {
69 VFT2_UNKNOWN = 0,
70 VFT2_DRV_PRINTER = 1,
71 VFT2_DRV_KEYBOARD = 2,
72 VFT2_DRV_LANGUAGE = 3,
73 VFT2_DRV_DISPLAY = 4,
74 VFT2_DRV_MOUSE = 5,
75 VFT2_DRV_NETWORK = 6,
76 VFT2_DRV_SYSTEM = 7,
77 VFT2_DRV_INSTALLABLE = 8,
78 VFT2_DRV_SOUND = 9,
79 VFT2_DRV_COMM = 10,
80 VFT2_DRV_INPUTMETHOD = 11,
81 VFT2_FONT_RASTER = 1,
82 VFT2_FONT_VECTOR = 2,
83 VFT2_FONT_TRUETYPE = 3
84 }
85
86 enum : DWORD {
87 VFFF_ISSHAREDFILE = 1
88 }
89
90 enum : DWORD {
91 VFF_CURNEDEST = 1,
92 VFF_FILEINUSE = 2,
93 VFF_BUFFTOOSMALL = 4
94 }
95
96 enum : DWORD {
97 VIFF_FORCEINSTALL = 1,
98 VIFF_DONTDELETEOLD
99 }
100
101 enum {
102 VIF_TEMPFILE = 0x00001,
103 VIF_MISMATCH = 0x00002,
104 VIF_SRCOLD = 0x00004,
105 VIF_DIFFLANG = 0x00008,
106 VIF_DIFFCODEPG = 0x00010,
107 VIF_DIFFTYPE = 0x00020,
108 VIF_WRITEPROT = 0x00040,
109 VIF_FILEINUSE = 0x00080,
110 VIF_OUTOFSPACE = 0x00100,
111 VIF_ACCESSVIOLATION = 0x00200,
112 VIF_SHARINGVIOLATION = 0x00400,
113 VIF_CANNOTCREATE = 0x00800,
114 VIF_CANNOTDELETE = 0x01000,
115 VIF_CANNOTRENAME = 0x02000,
116 VIF_CANNOTDELETECUR = 0x04000,
117 VIF_OUTOFMEMORY = 0x08000,
118 VIF_CANNOTREADSRC = 0x10000,
119 VIF_CANNOTREADDST = 0x20000,
120 VIF_BUFFTOOSMALL = 0x40000
121 }
122
123 struct VS_FIXEDFILEINFO {
124 DWORD dwSignature;
125 DWORD dwStrucVersion;
126 DWORD dwFileVersionMS;
127 DWORD dwFileVersionLS;
128 DWORD dwProductVersionMS;
129 DWORD dwProductVersionLS;
130 DWORD dwFileFlagsMask;
131 DWORD dwFileFlags;
132 DWORD dwFileOS;
133 DWORD dwFileType;
134 DWORD dwFileSubtype;
135 DWORD dwFileDateMS;
136 DWORD dwFileDateLS;
137 }
138
139 extern (Windows) {
140 DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR,
141 PUINT);
142 DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR,
143 PUINT);
144 DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR,
145 PUINT);
146 DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR,
147 LPWSTR, PUINT);
148 DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD);
149 DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD);
150 BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID);
151 BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID);
152 DWORD VerLanguageNameA(DWORD, LPSTR, DWORD);
153 DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD);
154 BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT);
155 BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT);
156 }
157
version(Unicode)158 version (Unicode) {
159 alias VerFindFileW VerFindFile;
160 alias VerQueryValueW VerQueryValue;
161 alias VerInstallFileW VerInstallFile;
162 alias GetFileVersionInfoSizeW GetFileVersionInfoSize;
163 alias GetFileVersionInfoW GetFileVersionInfo;
164 alias VerLanguageNameW VerLanguageName;
165 alias VerQueryValueW VerQueryValue;
166 } else {
167 alias VerQueryValueA VerQueryValue;
168 alias VerFindFileA VerFindFile;
169 alias VerInstallFileA VerInstallFile;
170 alias GetFileVersionInfoSizeA GetFileVersionInfoSize;
171 alias GetFileVersionInfoA GetFileVersionInfo;
172 alias VerLanguageNameA VerLanguageName;
173 alias VerQueryValueA VerQueryValue;
174 }
175