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